]> git.hungrycats.org Git - linux/commitdiff
[PATCH] smbfs: larger dev_t preparation
authorAndrew Morton <akpm@digeo.com>
Sun, 20 Apr 2003 07:29:47 +0000 (00:29 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sun, 20 Apr 2003 07:29:47 +0000 (00:29 -0700)
Discard fewer bits of the device number recd with smb.
This does not depend on anything else.

Andries

fs/smbfs/proc.c
fs/smbfs/proto.h

index 703d6324f417134832fa3a574081694909bcac9c..5ecb4353994e47f2e1b2974001f52a095246a36f 100644 (file)
@@ -2085,7 +2085,6 @@ out:
 void smb_decode_unix_basic(struct smb_fattr *fattr, char *p)
 {
        /* FIXME: verify nls support. all is sent as utf8? */
-       __u64 devmajor, devminor;
 
        fattr->f_unix = 1;
        fattr->f_mode = 0;
@@ -2112,9 +2111,10 @@ void smb_decode_unix_basic(struct smb_fattr *fattr, char *p)
        fattr->f_mode |= smb_filetype_to_mode(WVAL(p, 56));
 
        if (S_ISBLK(fattr->f_mode) || S_ISCHR(fattr->f_mode)) {
-               devmajor = LVAL(p, 60);
-               devminor = LVAL(p, 68);
-               fattr->f_rdev = ((devmajor & 0xFF) << 8) | (devminor & 0xFF);
+               __u64 major = LVAL(p, 60);
+               __u64 minor = LVAL(p, 68);
+
+               fattr->f_rdev = MKDEV(major & 0xffffffff, minor & 0xffffffff);
        }
        fattr->f_mode |= LVAL(p, 84);
 }
@@ -3008,7 +3008,7 @@ out:
  */
 int
 smb_proc_setattr_unix(struct dentry *d, struct iattr *attr,
-                     int major, int minor)
+                     unsigned int major, unsigned int minor)
 {
        struct smb_sb_info *server = server_from_dentry(d);
        u64 nttime;
index 07b690eb88484e884494cc01f2eb6d296fed9e8b..ec44bad0e84e9330ff1c4074615ab618e0b6bcb4 100644 (file)
@@ -27,7 +27,7 @@ extern void smb_init_root_dirent(struct smb_sb_info *server, struct smb_fattr *f
 extern void smb_decode_unix_basic(struct smb_fattr *fattr, char *p);
 extern int smb_proc_getattr(struct dentry *dir, struct smb_fattr *fattr);
 extern int smb_proc_setattr(struct dentry *dir, struct smb_fattr *fattr);
-extern int smb_proc_setattr_unix(struct dentry *d, struct iattr *attr, int major, int minor);
+extern int smb_proc_setattr_unix(struct dentry *d, struct iattr *attr, unsigned int major, unsigned int minor);
 extern int smb_proc_settime(struct dentry *dentry, struct smb_fattr *fattr);
 extern int smb_proc_dskattr(struct super_block *sb, struct statfs *attr);
 extern int smb_proc_read_link(struct smb_sb_info *server, struct dentry *d, char *buffer, int len);