Skip to content

Commit 663f295

Browse files
Paulo Alcantarasmfrench
authored andcommitted
smb: client: fix parsing of device numbers
Report correct major and minor numbers from special files created with NFS reparse points. Signed-off-by: Paulo Alcantara (Red Hat) <[email protected]> Signed-off-by: Steve French <[email protected]>
1 parent a9de673 commit 663f295

File tree

2 files changed

+4
-11
lines changed

2 files changed

+4
-11
lines changed

fs/smb/client/reparse.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ static void wsl_to_fattr(struct cifs_open_info_data *data,
468468
else if (!strncmp(name, SMB2_WSL_XATTR_MODE, nlen))
469469
fattr->cf_mode = (umode_t)le32_to_cpu(*(__le32 *)v);
470470
else if (!strncmp(name, SMB2_WSL_XATTR_DEV, nlen))
471-
fattr->cf_rdev = wsl_mkdev(v);
471+
fattr->cf_rdev = reparse_mkdev(v);
472472
} while (next);
473473
out:
474474
fattr->cf_dtype = S_DT(fattr->cf_mode);
@@ -485,11 +485,11 @@ bool cifs_reparse_point_to_fattr(struct cifs_sb_info *cifs_sb,
485485
switch (le64_to_cpu(buf->InodeType)) {
486486
case NFS_SPECFILE_CHR:
487487
fattr->cf_mode |= S_IFCHR;
488-
fattr->cf_rdev = reparse_nfs_mkdev(buf);
488+
fattr->cf_rdev = reparse_mkdev(buf->DataBuffer);
489489
break;
490490
case NFS_SPECFILE_BLK:
491491
fattr->cf_mode |= S_IFBLK;
492-
fattr->cf_rdev = reparse_nfs_mkdev(buf);
492+
fattr->cf_rdev = reparse_mkdev(buf->DataBuffer);
493493
break;
494494
case NFS_SPECFILE_FIFO:
495495
fattr->cf_mode |= S_IFIFO;

fs/smb/client/reparse.h

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,7 @@
1818
*/
1919
#define IO_REPARSE_TAG_INTERNAL ((__u32)~0U)
2020

21-
static inline dev_t reparse_nfs_mkdev(struct reparse_posix_data *buf)
22-
{
23-
u64 v = le64_to_cpu(*(__le64 *)buf->DataBuffer);
24-
25-
return MKDEV(v >> 32, v & 0xffffffff);
26-
}
27-
28-
static inline dev_t wsl_mkdev(void *ptr)
21+
static inline dev_t reparse_mkdev(void *ptr)
2922
{
3023
u64 v = le64_to_cpu(*(__le64 *)ptr);
3124

0 commit comments

Comments
 (0)