Loading fs/fat/dir.c +12 −16 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/buffer_head.h> #include <linux/compat.h> #include <asm/uaccess.h> #include <linux/kernel.h> #include "fat.h" /* Loading Loading @@ -140,9 +141,8 @@ static int uni16_to_x8(unsigned char *ascii, const wchar_t *uni, int len, { const wchar_t *ip; wchar_t ec; unsigned char *op, nc; unsigned char *op; int charlen; int k; ip = uni; op = ascii; Loading @@ -154,14 +154,9 @@ static int uni16_to_x8(unsigned char *ascii, const wchar_t *uni, int len, len -= charlen; } else { if (uni_xlate == 1) { *op = ':'; for (k = 4; k > 0; k--) { nc = ec & 0xF; op[k] = nc > 9 ? nc + ('a' - 10) : nc + '0'; ec >>= 4; } op += 5; *op++ = ':'; op = pack_hex_byte(op, ec >> 8); op = pack_hex_byte(op, ec); len -= 5; } else { *op++ = '?'; Loading Loading @@ -758,9 +753,10 @@ static int fat_ioctl_readdir(struct inode *inode, struct file *filp, return ret; } static int fat_dir_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) static long fat_dir_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct inode *inode = filp->f_path.dentry->d_inode; struct __fat_dirent __user *d1 = (struct __fat_dirent __user *)arg; int short_only, both; Loading @@ -774,7 +770,7 @@ static int fat_dir_ioctl(struct inode *inode, struct file *filp, both = 1; break; default: return fat_generic_ioctl(inode, filp, cmd, arg); return fat_generic_ioctl(filp, cmd, arg); } if (!access_ok(VERIFY_WRITE, d1, sizeof(struct __fat_dirent[2]))) Loading Loading @@ -814,7 +810,7 @@ static long fat_compat_dir_ioctl(struct file *filp, unsigned cmd, both = 1; break; default: return -ENOIOCTLCMD; return fat_generic_ioctl(filp, cmd, (unsigned long)arg); } if (!access_ok(VERIFY_WRITE, d1, sizeof(struct compat_dirent[2]))) Loading @@ -836,7 +832,7 @@ const struct file_operations fat_dir_operations = { .llseek = generic_file_llseek, .read = generic_read_dir, .readdir = fat_readdir, .ioctl = fat_dir_ioctl, .unlocked_ioctl = fat_dir_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = fat_compat_dir_ioctl, #endif Loading fs/fat/fat.h +2 −2 Original line number Diff line number Diff line Loading @@ -298,8 +298,8 @@ extern int fat_free_clusters(struct inode *inode, int cluster); extern int fat_count_free_clusters(struct super_block *sb); /* fat/file.c */ extern int fat_generic_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); extern long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); extern const struct file_operations fat_file_operations; extern const struct inode_operations fat_file_inode_operations; extern int fat_setattr(struct dentry * dentry, struct iattr * attr); Loading fs/fat/file.c +16 −3 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ #include <linux/capability.h> #include <linux/module.h> #include <linux/compat.h> #include <linux/mount.h> #include <linux/time.h> #include <linux/buffer_head.h> Loading Loading @@ -114,9 +115,9 @@ static int fat_ioctl_set_attributes(struct file *file, u32 __user *user_attr) return err; } int fat_generic_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct inode *inode = filp->f_path.dentry->d_inode; u32 __user *user_attr = (u32 __user *)arg; switch (cmd) { Loading @@ -129,6 +130,15 @@ int fat_generic_ioctl(struct inode *inode, struct file *filp, } } #ifdef CONFIG_COMPAT static long fat_generic_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { return fat_generic_ioctl(filp, cmd, (unsigned long)compat_ptr(arg)); } #endif static int fat_file_release(struct inode *inode, struct file *filp) { if ((filp->f_mode & FMODE_WRITE) && Loading Loading @@ -159,7 +169,10 @@ const struct file_operations fat_file_operations = { .aio_write = generic_file_aio_write, .mmap = generic_file_mmap, .release = fat_file_release, .ioctl = fat_generic_ioctl, .unlocked_ioctl = fat_generic_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = fat_generic_compat_ioctl, #endif .fsync = fat_file_fsync, .splice_read = generic_file_splice_read, }; Loading fs/fat/inode.c +2 −4 Original line number Diff line number Diff line Loading @@ -1497,9 +1497,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, iput(fat_inode); if (root_inode) iput(root_inode); if (sbi->nls_io) unload_nls(sbi->nls_io); if (sbi->nls_disk) unload_nls(sbi->nls_disk); if (sbi->options.iocharset != fat_default_iocharset) kfree(sbi->options.iocharset); Loading Loading
fs/fat/dir.c +12 −16 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/buffer_head.h> #include <linux/compat.h> #include <asm/uaccess.h> #include <linux/kernel.h> #include "fat.h" /* Loading Loading @@ -140,9 +141,8 @@ static int uni16_to_x8(unsigned char *ascii, const wchar_t *uni, int len, { const wchar_t *ip; wchar_t ec; unsigned char *op, nc; unsigned char *op; int charlen; int k; ip = uni; op = ascii; Loading @@ -154,14 +154,9 @@ static int uni16_to_x8(unsigned char *ascii, const wchar_t *uni, int len, len -= charlen; } else { if (uni_xlate == 1) { *op = ':'; for (k = 4; k > 0; k--) { nc = ec & 0xF; op[k] = nc > 9 ? nc + ('a' - 10) : nc + '0'; ec >>= 4; } op += 5; *op++ = ':'; op = pack_hex_byte(op, ec >> 8); op = pack_hex_byte(op, ec); len -= 5; } else { *op++ = '?'; Loading Loading @@ -758,9 +753,10 @@ static int fat_ioctl_readdir(struct inode *inode, struct file *filp, return ret; } static int fat_dir_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) static long fat_dir_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct inode *inode = filp->f_path.dentry->d_inode; struct __fat_dirent __user *d1 = (struct __fat_dirent __user *)arg; int short_only, both; Loading @@ -774,7 +770,7 @@ static int fat_dir_ioctl(struct inode *inode, struct file *filp, both = 1; break; default: return fat_generic_ioctl(inode, filp, cmd, arg); return fat_generic_ioctl(filp, cmd, arg); } if (!access_ok(VERIFY_WRITE, d1, sizeof(struct __fat_dirent[2]))) Loading Loading @@ -814,7 +810,7 @@ static long fat_compat_dir_ioctl(struct file *filp, unsigned cmd, both = 1; break; default: return -ENOIOCTLCMD; return fat_generic_ioctl(filp, cmd, (unsigned long)arg); } if (!access_ok(VERIFY_WRITE, d1, sizeof(struct compat_dirent[2]))) Loading @@ -836,7 +832,7 @@ const struct file_operations fat_dir_operations = { .llseek = generic_file_llseek, .read = generic_read_dir, .readdir = fat_readdir, .ioctl = fat_dir_ioctl, .unlocked_ioctl = fat_dir_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = fat_compat_dir_ioctl, #endif Loading
fs/fat/fat.h +2 −2 Original line number Diff line number Diff line Loading @@ -298,8 +298,8 @@ extern int fat_free_clusters(struct inode *inode, int cluster); extern int fat_count_free_clusters(struct super_block *sb); /* fat/file.c */ extern int fat_generic_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); extern long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); extern const struct file_operations fat_file_operations; extern const struct inode_operations fat_file_inode_operations; extern int fat_setattr(struct dentry * dentry, struct iattr * attr); Loading
fs/fat/file.c +16 −3 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ #include <linux/capability.h> #include <linux/module.h> #include <linux/compat.h> #include <linux/mount.h> #include <linux/time.h> #include <linux/buffer_head.h> Loading Loading @@ -114,9 +115,9 @@ static int fat_ioctl_set_attributes(struct file *file, u32 __user *user_attr) return err; } int fat_generic_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct inode *inode = filp->f_path.dentry->d_inode; u32 __user *user_attr = (u32 __user *)arg; switch (cmd) { Loading @@ -129,6 +130,15 @@ int fat_generic_ioctl(struct inode *inode, struct file *filp, } } #ifdef CONFIG_COMPAT static long fat_generic_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { return fat_generic_ioctl(filp, cmd, (unsigned long)compat_ptr(arg)); } #endif static int fat_file_release(struct inode *inode, struct file *filp) { if ((filp->f_mode & FMODE_WRITE) && Loading Loading @@ -159,7 +169,10 @@ const struct file_operations fat_file_operations = { .aio_write = generic_file_aio_write, .mmap = generic_file_mmap, .release = fat_file_release, .ioctl = fat_generic_ioctl, .unlocked_ioctl = fat_generic_ioctl, #ifdef CONFIG_COMPAT .compat_ioctl = fat_generic_compat_ioctl, #endif .fsync = fat_file_fsync, .splice_read = generic_file_splice_read, }; Loading
fs/fat/inode.c +2 −4 Original line number Diff line number Diff line Loading @@ -1497,9 +1497,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, iput(fat_inode); if (root_inode) iput(root_inode); if (sbi->nls_io) unload_nls(sbi->nls_io); if (sbi->nls_disk) unload_nls(sbi->nls_disk); if (sbi->options.iocharset != fat_default_iocharset) kfree(sbi->options.iocharset); Loading