Skip to content

Commit 438e211

Browse files
paliSteve French
authored andcommitted
cifs: Change translation of STATUS_PRIVILEGE_NOT_HELD to -EPERM
STATUS_PRIVILEGE_NOT_HELD indicates that user does not have privilege to issue some operation, for example to create symlink. Currently STATUS_PRIVILEGE_NOT_HELD is translated to -EIO. Change it to -EPERM which better describe this error code. Note that there is no ERR* code usable in ntstatus_to_dos_map[] table which can be used to -EPERM translation, so do explicit translation in map_smb_to_linux_error() function. Signed-off-by: Pali Rohár <pali@kernel.org> Acked-by: Tom Talpey <tom@talpey.com> Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.com> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent f764fab commit 438e211

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

fs/smb/client/netmisc.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,6 @@ static const struct {
313313
ERRDOS, 2215, NT_STATUS_NO_LOGON_SERVERS}, {
314314
ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_LOGON_SESSION}, {
315315
ERRHRD, ERRgeneral, NT_STATUS_NO_SUCH_PRIVILEGE}, {
316-
ERRDOS, ERRnoaccess, NT_STATUS_PRIVILEGE_NOT_HELD}, {
317316
ERRHRD, ERRgeneral, NT_STATUS_INVALID_ACCOUNT_NAME}, {
318317
ERRHRD, ERRgeneral, NT_STATUS_USER_EXISTS},
319318
/* { This NT error code was 'sqashed'
@@ -876,6 +875,8 @@ map_smb_to_linux_error(char *buf, bool logErr)
876875
__u32 err = le32_to_cpu(smb->Status.CifsError);
877876
if (err == (NT_STATUS_NOT_A_REPARSE_POINT))
878877
rc = -ENODATA;
878+
else if (err == (NT_STATUS_PRIVILEGE_NOT_HELD))
879+
rc = -EPERM;
879880
}
880881

881882
cifs_dbg(FYI, "Mapping smb error code 0x%x to POSIX err %d\n",

fs/smb/client/smb2maperror.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ static const struct status_to_posix_error smb2_error_map_table[] = {
380380
{STATUS_NO_LOGON_SERVERS, -EIO, "STATUS_NO_LOGON_SERVERS"},
381381
{STATUS_NO_SUCH_LOGON_SESSION, -EIO, "STATUS_NO_SUCH_LOGON_SESSION"},
382382
{STATUS_NO_SUCH_PRIVILEGE, -EIO, "STATUS_NO_SUCH_PRIVILEGE"},
383-
{STATUS_PRIVILEGE_NOT_HELD, -EIO, "STATUS_PRIVILEGE_NOT_HELD"},
383+
{STATUS_PRIVILEGE_NOT_HELD, -EPERM, "STATUS_PRIVILEGE_NOT_HELD"},
384384
{STATUS_INVALID_ACCOUNT_NAME, -EIO, "STATUS_INVALID_ACCOUNT_NAME"},
385385
{STATUS_USER_EXISTS, -EIO, "STATUS_USER_EXISTS"},
386386
{STATUS_NO_SUCH_USER, -EIO, "STATUS_NO_SUCH_USER"},

0 commit comments

Comments
 (0)