2024-03-01 14:54:15

by Eugene Korenevsky

[permalink] [raw]
Subject: [PATCH] cifs: open_cached_dir(): add FILE_READ_EA to desired access

Since smb2_query_eas() reads EA and uses cached directory,
open_cached_dir() should request FILE_READ_EA access.

Otherwise listxattr() and getxattr() will fail with EACCES
(0xc0000022 STATUS_ACCESS_DENIED SMB status).

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=218543
Signed-off-by: Eugene Korenevsky <[email protected]>
---
fs/smb/client/cached_dir.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/smb/client/cached_dir.c b/fs/smb/client/cached_dir.c
index 3de5047a7ff9..a0017724d523 100644
--- a/fs/smb/client/cached_dir.c
+++ b/fs/smb/client/cached_dir.c
@@ -239,7 +239,8 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon,
.tcon = tcon,
.path = path,
.create_options = cifs_create_options(cifs_sb, CREATE_NOT_FILE),
- .desired_access = FILE_READ_DATA | FILE_READ_ATTRIBUTES,
+ .desired_access = FILE_READ_DATA | FILE_READ_ATTRIBUTES |
+ FILE_READ_EA,
.disposition = FILE_OPEN,
.fid = pfid,
.replay = !!(retries),
--
2.30.2



2024-03-14 04:15:50

by Steve French

[permalink] [raw]
Subject: Re: [PATCH] cifs: open_cached_dir(): add FILE_READ_EA to desired access

Tentatively merged into cifs-2.6.git for-next pending additional review/testing

Let me know if any updates to this

On Fri, Mar 1, 2024 at 8:54 AM Eugene Korenevsky
<[email protected]> wrote:
>
> Since smb2_query_eas() reads EA and uses cached directory,
> open_cached_dir() should request FILE_READ_EA access.
>
> Otherwise listxattr() and getxattr() will fail with EACCES
> (0xc0000022 STATUS_ACCESS_DENIED SMB status).
>
> BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=218543
> Signed-off-by: Eugene Korenevsky <[email protected]>
> ---
> fs/smb/client/cached_dir.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/smb/client/cached_dir.c b/fs/smb/client/cached_dir.c
> index 3de5047a7ff9..a0017724d523 100644
> --- a/fs/smb/client/cached_dir.c
> +++ b/fs/smb/client/cached_dir.c
> @@ -239,7 +239,8 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon,
> .tcon = tcon,
> .path = path,
> .create_options = cifs_create_options(cifs_sb, CREATE_NOT_FILE),
> - .desired_access = FILE_READ_DATA | FILE_READ_ATTRIBUTES,
> + .desired_access = FILE_READ_DATA | FILE_READ_ATTRIBUTES |
> + FILE_READ_EA,
> .disposition = FILE_OPEN,
> .fid = pfid,
> .replay = !!(retries),
> --
> 2.30.2
>
>


--
Thanks,

Steve