diff options
author | Christoph Hellwig <hch@lst.de> | 2008-09-03 15:53:01 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-10-23 05:13:21 -0400 |
commit | 3222a3e55f4025acb2a5a4379cf2f2b7df1f1243 (patch) | |
tree | d12740cd5dc00ae17f7beb63584dd00d7c1fb4cb | |
parent | 4e9ed2f85af7adfa7c3f0efa839a53186254fdcb (diff) |
[PATCH] fix ->llseek for more directories
With this patch all directory fops instances that have a readdir
that doesn't take the BKL are switched to generic_file_llseek.
Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r-- | fs/afs/dir.c | 1 | ||||
-rw-r--r-- | fs/bfs/dir.c | 1 | ||||
-rw-r--r-- | fs/cifs/cifsfs.c | 1 | ||||
-rw-r--r-- | fs/fat/dir.c | 1 | ||||
-rw-r--r-- | fs/jffs2/dir.c | 3 | ||||
-rw-r--r-- | fs/jfs/namei.c | 1 | ||||
-rw-r--r-- | fs/omfs/dir.c | 1 | ||||
-rw-r--r-- | fs/openpromfs/inode.c | 1 | ||||
-rw-r--r-- | fs/proc/proc_sysctl.c | 1 | ||||
-rw-r--r-- | fs/sysfs/dir.c | 1 | ||||
-rw-r--r-- | fs/ufs/dir.c | 1 |
11 files changed, 12 insertions, 1 deletions
diff --git a/fs/afs/dir.c b/fs/afs/dir.c index dfda03d4397d..99cf390641f7 100644 --- a/fs/afs/dir.c +++ b/fs/afs/dir.c | |||
@@ -45,6 +45,7 @@ const struct file_operations afs_dir_file_operations = { | |||
45 | .release = afs_release, | 45 | .release = afs_release, |
46 | .readdir = afs_readdir, | 46 | .readdir = afs_readdir, |
47 | .lock = afs_lock, | 47 | .lock = afs_lock, |
48 | .llseek = generic_file_llseek, | ||
48 | }; | 49 | }; |
49 | 50 | ||
50 | const struct inode_operations afs_dir_inode_operations = { | 51 | const struct inode_operations afs_dir_inode_operations = { |
diff --git a/fs/bfs/dir.c b/fs/bfs/dir.c index ed8feb052df9..daae463068e4 100644 --- a/fs/bfs/dir.c +++ b/fs/bfs/dir.c | |||
@@ -80,6 +80,7 @@ const struct file_operations bfs_dir_operations = { | |||
80 | .read = generic_read_dir, | 80 | .read = generic_read_dir, |
81 | .readdir = bfs_readdir, | 81 | .readdir = bfs_readdir, |
82 | .fsync = file_fsync, | 82 | .fsync = file_fsync, |
83 | .llseek = generic_file_llseek, | ||
83 | }; | 84 | }; |
84 | 85 | ||
85 | extern void dump_imap(const char *, struct super_block *); | 86 | extern void dump_imap(const char *, struct super_block *); |
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 25ecbd5b0404..89c64a8dcb99 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
@@ -765,6 +765,7 @@ const struct file_operations cifs_dir_ops = { | |||
765 | .dir_notify = cifs_dir_notify, | 765 | .dir_notify = cifs_dir_notify, |
766 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | 766 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ |
767 | .unlocked_ioctl = cifs_ioctl, | 767 | .unlocked_ioctl = cifs_ioctl, |
768 | .llseek = generic_file_llseek, | ||
768 | }; | 769 | }; |
769 | 770 | ||
770 | static void | 771 | static void |
diff --git a/fs/fat/dir.c b/fs/fat/dir.c index cd4a0162e10d..bae1c3292522 100644 --- a/fs/fat/dir.c +++ b/fs/fat/dir.c | |||
@@ -839,6 +839,7 @@ const struct file_operations fat_dir_operations = { | |||
839 | .compat_ioctl = fat_compat_dir_ioctl, | 839 | .compat_ioctl = fat_compat_dir_ioctl, |
840 | #endif | 840 | #endif |
841 | .fsync = file_fsync, | 841 | .fsync = file_fsync, |
842 | .llseek = generic_file_llseek, | ||
842 | }; | 843 | }; |
843 | 844 | ||
844 | static int fat_get_short_entry(struct inode *dir, loff_t *pos, | 845 | static int fat_get_short_entry(struct inode *dir, loff_t *pos, |
diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c index 621bdfa994e7..6f60cc910f4c 100644 --- a/fs/jffs2/dir.c +++ b/fs/jffs2/dir.c | |||
@@ -39,7 +39,8 @@ const struct file_operations jffs2_dir_operations = | |||
39 | .read = generic_read_dir, | 39 | .read = generic_read_dir, |
40 | .readdir = jffs2_readdir, | 40 | .readdir = jffs2_readdir, |
41 | .unlocked_ioctl=jffs2_ioctl, | 41 | .unlocked_ioctl=jffs2_ioctl, |
42 | .fsync = jffs2_fsync | 42 | .fsync = jffs2_fsync, |
43 | .llseek = generic_file_llseek, | ||
43 | }; | 44 | }; |
44 | 45 | ||
45 | 46 | ||
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c index e199dde7b83c..cc3cedffbfa1 100644 --- a/fs/jfs/namei.c +++ b/fs/jfs/namei.c | |||
@@ -1547,6 +1547,7 @@ const struct file_operations jfs_dir_operations = { | |||
1547 | #ifdef CONFIG_COMPAT | 1547 | #ifdef CONFIG_COMPAT |
1548 | .compat_ioctl = jfs_compat_ioctl, | 1548 | .compat_ioctl = jfs_compat_ioctl, |
1549 | #endif | 1549 | #endif |
1550 | .llseek = generic_file_llseek, | ||
1550 | }; | 1551 | }; |
1551 | 1552 | ||
1552 | static int jfs_ci_hash(struct dentry *dir, struct qstr *this) | 1553 | static int jfs_ci_hash(struct dentry *dir, struct qstr *this) |
diff --git a/fs/omfs/dir.c b/fs/omfs/dir.c index c0757e998876..c7275cfbdcfb 100644 --- a/fs/omfs/dir.c +++ b/fs/omfs/dir.c | |||
@@ -501,4 +501,5 @@ struct inode_operations omfs_dir_inops = { | |||
501 | struct file_operations omfs_dir_operations = { | 501 | struct file_operations omfs_dir_operations = { |
502 | .read = generic_read_dir, | 502 | .read = generic_read_dir, |
503 | .readdir = omfs_readdir, | 503 | .readdir = omfs_readdir, |
504 | .llseek = generic_file_llseek, | ||
504 | }; | 505 | }; |
diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c index 9f5b054f06b9..d41bdc784de4 100644 --- a/fs/openpromfs/inode.c +++ b/fs/openpromfs/inode.c | |||
@@ -167,6 +167,7 @@ static int openpromfs_readdir(struct file *, void *, filldir_t); | |||
167 | static const struct file_operations openprom_operations = { | 167 | static const struct file_operations openprom_operations = { |
168 | .read = generic_read_dir, | 168 | .read = generic_read_dir, |
169 | .readdir = openpromfs_readdir, | 169 | .readdir = openpromfs_readdir, |
170 | .llseek = generic_file_llseek, | ||
170 | }; | 171 | }; |
171 | 172 | ||
172 | static struct dentry *openpromfs_lookup(struct inode *, struct dentry *, struct nameidata *); | 173 | static struct dentry *openpromfs_lookup(struct inode *, struct dentry *, struct nameidata *); |
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index 945a81043ba2..5fe210c09171 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c | |||
@@ -353,6 +353,7 @@ static const struct file_operations proc_sys_file_operations = { | |||
353 | 353 | ||
354 | static const struct file_operations proc_sys_dir_file_operations = { | 354 | static const struct file_operations proc_sys_dir_file_operations = { |
355 | .readdir = proc_sys_readdir, | 355 | .readdir = proc_sys_readdir, |
356 | .llseek = generic_file_llseek, | ||
356 | }; | 357 | }; |
357 | 358 | ||
358 | static const struct inode_operations proc_sys_inode_operations = { | 359 | static const struct inode_operations proc_sys_inode_operations = { |
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 3a05a596e3b4..82d3b79d0e08 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c | |||
@@ -983,4 +983,5 @@ static int sysfs_readdir(struct file * filp, void * dirent, filldir_t filldir) | |||
983 | const struct file_operations sysfs_dir_operations = { | 983 | const struct file_operations sysfs_dir_operations = { |
984 | .read = generic_read_dir, | 984 | .read = generic_read_dir, |
985 | .readdir = sysfs_readdir, | 985 | .readdir = sysfs_readdir, |
986 | .llseek = generic_file_llseek, | ||
986 | }; | 987 | }; |
diff --git a/fs/ufs/dir.c b/fs/ufs/dir.c index df0bef18742d..dbbbc4668769 100644 --- a/fs/ufs/dir.c +++ b/fs/ufs/dir.c | |||
@@ -667,4 +667,5 @@ const struct file_operations ufs_dir_operations = { | |||
667 | .read = generic_read_dir, | 667 | .read = generic_read_dir, |
668 | .readdir = ufs_readdir, | 668 | .readdir = ufs_readdir, |
669 | .fsync = file_fsync, | 669 | .fsync = file_fsync, |
670 | .llseek = generic_file_llseek, | ||
670 | }; | 671 | }; |