diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2010-04-10 11:47:18 -0400 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2010-04-10 10:51:15 -0400 |
commit | 7cfe21aae155c26193fde617dc61d37a79a63f86 (patch) | |
tree | 6600d3171afdfad430155f5e8a1f526367a6174d /drivers/ieee1394 | |
parent | 3ac26b2ee30005930117fe6a180c139c5f300faf (diff) |
ieee1394: mark char device files as not seekable
The
- raw1394 (/dev/raw1394),
- video1394 (/dev/video1394/*),
- dv1394 (/dev/dv1394/*)
character device file ABIs do not make any use of lseek(), pread(), or
pwrite(). Therefore use nonseekable_open() and, redundantly, set
file_operations.llseek to no_llseek to remove any doubt whether the BKL-
grabbing default_llseek handler is used.
Although all this is legacy code which should be left in peace until it
is eventually removed (as it is superseded by firewire-core's
<linux/firewire-cdev.h> ABI), this change seems still worth doing to
further minimize the presence of BKL usage in the kernel.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/ieee1394')
-rw-r--r-- | drivers/ieee1394/dv1394.c | 11 | ||||
-rw-r--r-- | drivers/ieee1394/raw1394.c | 3 | ||||
-rw-r--r-- | drivers/ieee1394/video1394.c | 5 |
3 files changed, 11 insertions, 8 deletions
diff --git a/drivers/ieee1394/dv1394.c b/drivers/ieee1394/dv1394.c index 9fd4a0d3206e..adaefabc40e9 100644 --- a/drivers/ieee1394/dv1394.c +++ b/drivers/ieee1394/dv1394.c | |||
@@ -1824,7 +1824,7 @@ static int dv1394_open(struct inode *inode, struct file *file) | |||
1824 | "and will not be available in the new firewire driver stack. " | 1824 | "and will not be available in the new firewire driver stack. " |
1825 | "Try libraw1394 based programs instead.\n", current->comm); | 1825 | "Try libraw1394 based programs instead.\n", current->comm); |
1826 | 1826 | ||
1827 | return 0; | 1827 | return nonseekable_open(inode, file); |
1828 | } | 1828 | } |
1829 | 1829 | ||
1830 | 1830 | ||
@@ -2153,17 +2153,18 @@ static struct cdev dv1394_cdev; | |||
2153 | static const struct file_operations dv1394_fops= | 2153 | static const struct file_operations dv1394_fops= |
2154 | { | 2154 | { |
2155 | .owner = THIS_MODULE, | 2155 | .owner = THIS_MODULE, |
2156 | .poll = dv1394_poll, | 2156 | .poll = dv1394_poll, |
2157 | .unlocked_ioctl = dv1394_ioctl, | 2157 | .unlocked_ioctl = dv1394_ioctl, |
2158 | #ifdef CONFIG_COMPAT | 2158 | #ifdef CONFIG_COMPAT |
2159 | .compat_ioctl = dv1394_compat_ioctl, | 2159 | .compat_ioctl = dv1394_compat_ioctl, |
2160 | #endif | 2160 | #endif |
2161 | .mmap = dv1394_mmap, | 2161 | .mmap = dv1394_mmap, |
2162 | .open = dv1394_open, | 2162 | .open = dv1394_open, |
2163 | .write = dv1394_write, | 2163 | .write = dv1394_write, |
2164 | .read = dv1394_read, | 2164 | .read = dv1394_read, |
2165 | .release = dv1394_release, | 2165 | .release = dv1394_release, |
2166 | .fasync = dv1394_fasync, | 2166 | .fasync = dv1394_fasync, |
2167 | .llseek = no_llseek, | ||
2167 | }; | 2168 | }; |
2168 | 2169 | ||
2169 | 2170 | ||
diff --git a/drivers/ieee1394/raw1394.c b/drivers/ieee1394/raw1394.c index 8aa56ac07e29..b563d5e9fa2e 100644 --- a/drivers/ieee1394/raw1394.c +++ b/drivers/ieee1394/raw1394.c | |||
@@ -2834,7 +2834,7 @@ static int raw1394_open(struct inode *inode, struct file *file) | |||
2834 | 2834 | ||
2835 | file->private_data = fi; | 2835 | file->private_data = fi; |
2836 | 2836 | ||
2837 | return 0; | 2837 | return nonseekable_open(inode, file); |
2838 | } | 2838 | } |
2839 | 2839 | ||
2840 | static int raw1394_release(struct inode *inode, struct file *file) | 2840 | static int raw1394_release(struct inode *inode, struct file *file) |
@@ -3035,6 +3035,7 @@ static const struct file_operations raw1394_fops = { | |||
3035 | .poll = raw1394_poll, | 3035 | .poll = raw1394_poll, |
3036 | .open = raw1394_open, | 3036 | .open = raw1394_open, |
3037 | .release = raw1394_release, | 3037 | .release = raw1394_release, |
3038 | .llseek = no_llseek, | ||
3038 | }; | 3039 | }; |
3039 | 3040 | ||
3040 | static int __init init_raw1394(void) | 3041 | static int __init init_raw1394(void) |
diff --git a/drivers/ieee1394/video1394.c b/drivers/ieee1394/video1394.c index 949064a05675..a42bd6893bcf 100644 --- a/drivers/ieee1394/video1394.c +++ b/drivers/ieee1394/video1394.c | |||
@@ -1239,7 +1239,7 @@ static int video1394_open(struct inode *inode, struct file *file) | |||
1239 | ctx->current_ctx = NULL; | 1239 | ctx->current_ctx = NULL; |
1240 | file->private_data = ctx; | 1240 | file->private_data = ctx; |
1241 | 1241 | ||
1242 | return 0; | 1242 | return nonseekable_open(inode, file); |
1243 | } | 1243 | } |
1244 | 1244 | ||
1245 | static int video1394_release(struct inode *inode, struct file *file) | 1245 | static int video1394_release(struct inode *inode, struct file *file) |
@@ -1287,7 +1287,8 @@ static const struct file_operations video1394_fops= | |||
1287 | .poll = video1394_poll, | 1287 | .poll = video1394_poll, |
1288 | .mmap = video1394_mmap, | 1288 | .mmap = video1394_mmap, |
1289 | .open = video1394_open, | 1289 | .open = video1394_open, |
1290 | .release = video1394_release | 1290 | .release = video1394_release, |
1291 | .llseek = no_llseek, | ||
1291 | }; | 1292 | }; |
1292 | 1293 | ||
1293 | /*** HOTPLUG STUFF **********************************************************/ | 1294 | /*** HOTPLUG STUFF **********************************************************/ |