diff options
Diffstat (limited to 'fs/fat/file.c')
-rw-r--r-- | fs/fat/file.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/fat/file.c b/fs/fat/file.c index b0b632e50ddb..9b104f543056 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c | |||
@@ -114,6 +114,12 @@ out: | |||
114 | return err; | 114 | return err; |
115 | } | 115 | } |
116 | 116 | ||
117 | static int fat_ioctl_get_volume_id(struct inode *inode, u32 __user *user_attr) | ||
118 | { | ||
119 | struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); | ||
120 | return put_user(sbi->vol_id, user_attr); | ||
121 | } | ||
122 | |||
117 | long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | 123 | long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) |
118 | { | 124 | { |
119 | struct inode *inode = file_inode(filp); | 125 | struct inode *inode = file_inode(filp); |
@@ -124,6 +130,8 @@ long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
124 | return fat_ioctl_get_attributes(inode, user_attr); | 130 | return fat_ioctl_get_attributes(inode, user_attr); |
125 | case FAT_IOCTL_SET_ATTRIBUTES: | 131 | case FAT_IOCTL_SET_ATTRIBUTES: |
126 | return fat_ioctl_set_attributes(filp, user_attr); | 132 | return fat_ioctl_set_attributes(filp, user_attr); |
133 | case FAT_IOCTL_GET_VOLUME_ID: | ||
134 | return fat_ioctl_get_volume_id(inode, user_attr); | ||
127 | default: | 135 | default: |
128 | return -ENOTTY; /* Inappropriate ioctl for device */ | 136 | return -ENOTTY; /* Inappropriate ioctl for device */ |
129 | } | 137 | } |