diff options
Diffstat (limited to 'fs/ncpfs')
-rw-r--r-- | fs/ncpfs/dir.c | 4 | ||||
-rw-r--r-- | fs/ncpfs/file.c | 5 | ||||
-rw-r--r-- | fs/ncpfs/inode.c | 8 | ||||
-rw-r--r-- | fs/ncpfs/ioctl.c | 28 | ||||
-rw-r--r-- | fs/ncpfs/mmap.c | 2 | ||||
-rw-r--r-- | fs/ncpfs/sock.c | 1 | ||||
-rw-r--r-- | fs/ncpfs/symlink.c | 1 |
7 files changed, 32 insertions, 17 deletions
diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c index b8b5b30d53f0..9578cbe0cd58 100644 --- a/fs/ncpfs/dir.c +++ b/fs/ncpfs/dir.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
16 | #include <linux/stat.h> | 16 | #include <linux/stat.h> |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/slab.h> | ||
19 | #include <linux/vmalloc.h> | 18 | #include <linux/vmalloc.h> |
20 | #include <linux/mm.h> | 19 | #include <linux/mm.h> |
21 | #include <asm/uaccess.h> | 20 | #include <asm/uaccess.h> |
@@ -50,9 +49,10 @@ extern int ncp_symlink(struct inode *, struct dentry *, const char *); | |||
50 | 49 | ||
51 | const struct file_operations ncp_dir_operations = | 50 | const struct file_operations ncp_dir_operations = |
52 | { | 51 | { |
52 | .llseek = generic_file_llseek, | ||
53 | .read = generic_read_dir, | 53 | .read = generic_read_dir, |
54 | .readdir = ncp_readdir, | 54 | .readdir = ncp_readdir, |
55 | .ioctl = ncp_ioctl, | 55 | .unlocked_ioctl = ncp_ioctl, |
56 | #ifdef CONFIG_COMPAT | 56 | #ifdef CONFIG_COMPAT |
57 | .compat_ioctl = ncp_compat_ioctl, | 57 | .compat_ioctl = ncp_compat_ioctl, |
58 | #endif | 58 | #endif |
diff --git a/fs/ncpfs/file.c b/fs/ncpfs/file.c index 6a7d901f1936..3639cc5cbdae 100644 --- a/fs/ncpfs/file.c +++ b/fs/ncpfs/file.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/fcntl.h> | 15 | #include <linux/fcntl.h> |
16 | #include <linux/stat.h> | 16 | #include <linux/stat.h> |
17 | #include <linux/mm.h> | 17 | #include <linux/mm.h> |
18 | #include <linux/slab.h> | ||
19 | #include <linux/vmalloc.h> | 18 | #include <linux/vmalloc.h> |
20 | #include <linux/sched.h> | 19 | #include <linux/sched.h> |
21 | #include <linux/smp_lock.h> | 20 | #include <linux/smp_lock.h> |
@@ -23,7 +22,7 @@ | |||
23 | #include <linux/ncp_fs.h> | 22 | #include <linux/ncp_fs.h> |
24 | #include "ncplib_kernel.h" | 23 | #include "ncplib_kernel.h" |
25 | 24 | ||
26 | static int ncp_fsync(struct file *file, struct dentry *dentry, int datasync) | 25 | static int ncp_fsync(struct file *file, int datasync) |
27 | { | 26 | { |
28 | return 0; | 27 | return 0; |
29 | } | 28 | } |
@@ -296,7 +295,7 @@ const struct file_operations ncp_file_operations = | |||
296 | .llseek = ncp_remote_llseek, | 295 | .llseek = ncp_remote_llseek, |
297 | .read = ncp_file_read, | 296 | .read = ncp_file_read, |
298 | .write = ncp_file_write, | 297 | .write = ncp_file_write, |
299 | .ioctl = ncp_ioctl, | 298 | .unlocked_ioctl = ncp_ioctl, |
300 | #ifdef CONFIG_COMPAT | 299 | #ifdef CONFIG_COMPAT |
301 | .compat_ioctl = ncp_compat_ioctl, | 300 | .compat_ioctl = ncp_compat_ioctl, |
302 | #endif | 301 | #endif |
diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c index cf98da1be23e..fa3385154023 100644 --- a/fs/ncpfs/inode.c +++ b/fs/ncpfs/inode.c | |||
@@ -526,10 +526,15 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent) | |||
526 | sb->s_blocksize_bits = 10; | 526 | sb->s_blocksize_bits = 10; |
527 | sb->s_magic = NCP_SUPER_MAGIC; | 527 | sb->s_magic = NCP_SUPER_MAGIC; |
528 | sb->s_op = &ncp_sops; | 528 | sb->s_op = &ncp_sops; |
529 | sb->s_bdi = &server->bdi; | ||
529 | 530 | ||
530 | server = NCP_SBP(sb); | 531 | server = NCP_SBP(sb); |
531 | memset(server, 0, sizeof(*server)); | 532 | memset(server, 0, sizeof(*server)); |
532 | 533 | ||
534 | error = bdi_setup_and_register(&server->bdi, "ncpfs", BDI_CAP_MAP_COPY); | ||
535 | if (error) | ||
536 | goto out_bdi; | ||
537 | |||
533 | server->ncp_filp = ncp_filp; | 538 | server->ncp_filp = ncp_filp; |
534 | server->ncp_sock = sock; | 539 | server->ncp_sock = sock; |
535 | 540 | ||
@@ -719,6 +724,8 @@ out_fput2: | |||
719 | if (server->info_filp) | 724 | if (server->info_filp) |
720 | fput(server->info_filp); | 725 | fput(server->info_filp); |
721 | out_fput: | 726 | out_fput: |
727 | bdi_destroy(&server->bdi); | ||
728 | out_bdi: | ||
722 | /* 23/12/1998 Marcin Dalecki <dalecki@cs.net.pl>: | 729 | /* 23/12/1998 Marcin Dalecki <dalecki@cs.net.pl>: |
723 | * | 730 | * |
724 | * The previously used put_filp(ncp_filp); was bogous, since | 731 | * The previously used put_filp(ncp_filp); was bogous, since |
@@ -756,6 +763,7 @@ static void ncp_put_super(struct super_block *sb) | |||
756 | kill_pid(server->m.wdog_pid, SIGTERM, 1); | 763 | kill_pid(server->m.wdog_pid, SIGTERM, 1); |
757 | put_pid(server->m.wdog_pid); | 764 | put_pid(server->m.wdog_pid); |
758 | 765 | ||
766 | bdi_destroy(&server->bdi); | ||
759 | kfree(server->priv.data); | 767 | kfree(server->priv.data); |
760 | kfree(server->auth.object_name); | 768 | kfree(server->auth.object_name); |
761 | vfree(server->rxbuf); | 769 | vfree(server->rxbuf); |
diff --git a/fs/ncpfs/ioctl.c b/fs/ncpfs/ioctl.c index ec8f45f12e05..023c03d02070 100644 --- a/fs/ncpfs/ioctl.c +++ b/fs/ncpfs/ioctl.c | |||
@@ -15,10 +15,12 @@ | |||
15 | #include <linux/time.h> | 15 | #include <linux/time.h> |
16 | #include <linux/mm.h> | 16 | #include <linux/mm.h> |
17 | #include <linux/mount.h> | 17 | #include <linux/mount.h> |
18 | #include <linux/slab.h> | ||
18 | #include <linux/highuid.h> | 19 | #include <linux/highuid.h> |
19 | #include <linux/smp_lock.h> | 20 | #include <linux/smp_lock.h> |
20 | #include <linux/vmalloc.h> | 21 | #include <linux/vmalloc.h> |
21 | #include <linux/sched.h> | 22 | #include <linux/sched.h> |
23 | #include <linux/smp_lock.h> | ||
22 | 24 | ||
23 | #include <linux/ncp_fs.h> | 25 | #include <linux/ncp_fs.h> |
24 | 26 | ||
@@ -260,9 +262,9 @@ ncp_get_charsets(struct ncp_server* server, struct ncp_nls_ioctl __user *arg) | |||
260 | } | 262 | } |
261 | #endif /* CONFIG_NCPFS_NLS */ | 263 | #endif /* CONFIG_NCPFS_NLS */ |
262 | 264 | ||
263 | static int __ncp_ioctl(struct inode *inode, struct file *filp, | 265 | static long __ncp_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) |
264 | unsigned int cmd, unsigned long arg) | ||
265 | { | 266 | { |
267 | struct inode *inode = filp->f_dentry->d_inode; | ||
266 | struct ncp_server *server = NCP_SERVER(inode); | 268 | struct ncp_server *server = NCP_SERVER(inode); |
267 | int result; | 269 | int result; |
268 | struct ncp_ioctl_request request; | 270 | struct ncp_ioctl_request request; |
@@ -840,11 +842,11 @@ static int ncp_ioctl_need_write(unsigned int cmd) | |||
840 | } | 842 | } |
841 | } | 843 | } |
842 | 844 | ||
843 | int ncp_ioctl(struct inode *inode, struct file *filp, | 845 | long ncp_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) |
844 | unsigned int cmd, unsigned long arg) | ||
845 | { | 846 | { |
846 | int ret; | 847 | long ret; |
847 | 848 | ||
849 | lock_kernel(); | ||
848 | if (ncp_ioctl_need_write(cmd)) { | 850 | if (ncp_ioctl_need_write(cmd)) { |
849 | /* | 851 | /* |
850 | * inside the ioctl(), any failures which | 852 | * inside the ioctl(), any failures which |
@@ -852,24 +854,28 @@ int ncp_ioctl(struct inode *inode, struct file *filp, | |||
852 | * -EACCESS, so it seems consistent to keep | 854 | * -EACCESS, so it seems consistent to keep |
853 | * that here. | 855 | * that here. |
854 | */ | 856 | */ |
855 | if (mnt_want_write(filp->f_path.mnt)) | 857 | if (mnt_want_write(filp->f_path.mnt)) { |
856 | return -EACCES; | 858 | ret = -EACCES; |
859 | goto out; | ||
860 | } | ||
857 | } | 861 | } |
858 | ret = __ncp_ioctl(inode, filp, cmd, arg); | 862 | ret = __ncp_ioctl(filp, cmd, arg); |
859 | if (ncp_ioctl_need_write(cmd)) | 863 | if (ncp_ioctl_need_write(cmd)) |
860 | mnt_drop_write(filp->f_path.mnt); | 864 | mnt_drop_write(filp->f_path.mnt); |
865 | |||
866 | out: | ||
867 | unlock_kernel(); | ||
861 | return ret; | 868 | return ret; |
862 | } | 869 | } |
863 | 870 | ||
864 | #ifdef CONFIG_COMPAT | 871 | #ifdef CONFIG_COMPAT |
865 | long ncp_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 872 | long ncp_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
866 | { | 873 | { |
867 | struct inode *inode = file->f_path.dentry->d_inode; | 874 | long ret; |
868 | int ret; | ||
869 | 875 | ||
870 | lock_kernel(); | 876 | lock_kernel(); |
871 | arg = (unsigned long) compat_ptr(arg); | 877 | arg = (unsigned long) compat_ptr(arg); |
872 | ret = ncp_ioctl(inode, file, cmd, arg); | 878 | ret = ncp_ioctl(file, cmd, arg); |
873 | unlock_kernel(); | 879 | unlock_kernel(); |
874 | return ret; | 880 | return ret; |
875 | } | 881 | } |
diff --git a/fs/ncpfs/mmap.c b/fs/ncpfs/mmap.c index 15458decdb8a..56f5b3a0e1ee 100644 --- a/fs/ncpfs/mmap.c +++ b/fs/ncpfs/mmap.c | |||
@@ -9,12 +9,12 @@ | |||
9 | #include <linux/stat.h> | 9 | #include <linux/stat.h> |
10 | #include <linux/time.h> | 10 | #include <linux/time.h> |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/gfp.h> | ||
12 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
13 | #include <linux/shm.h> | 14 | #include <linux/shm.h> |
14 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
15 | #include <linux/mman.h> | 16 | #include <linux/mman.h> |
16 | #include <linux/string.h> | 17 | #include <linux/string.h> |
17 | #include <linux/slab.h> | ||
18 | #include <linux/fcntl.h> | 18 | #include <linux/fcntl.h> |
19 | #include <linux/ncp_fs.h> | 19 | #include <linux/ncp_fs.h> |
20 | 20 | ||
diff --git a/fs/ncpfs/sock.c b/fs/ncpfs/sock.c index e37df8d5fe70..c7ff6c700a6e 100644 --- a/fs/ncpfs/sock.c +++ b/fs/ncpfs/sock.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
22 | #include <linux/netdevice.h> | 22 | #include <linux/netdevice.h> |
23 | #include <linux/signal.h> | 23 | #include <linux/signal.h> |
24 | #include <linux/slab.h> | ||
24 | #include <net/scm.h> | 25 | #include <net/scm.h> |
25 | #include <net/sock.h> | 26 | #include <net/sock.h> |
26 | #include <linux/ipx.h> | 27 | #include <linux/ipx.h> |
diff --git a/fs/ncpfs/symlink.c b/fs/ncpfs/symlink.c index e3d26c1bd105..c634fd17b337 100644 --- a/fs/ncpfs/symlink.c +++ b/fs/ncpfs/symlink.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/fs.h> | 27 | #include <linux/fs.h> |
28 | #include <linux/ncp_fs.h> | 28 | #include <linux/ncp_fs.h> |
29 | #include <linux/time.h> | 29 | #include <linux/time.h> |
30 | #include <linux/slab.h> | ||
30 | #include <linux/mm.h> | 31 | #include <linux/mm.h> |
31 | #include <linux/stat.h> | 32 | #include <linux/stat.h> |
32 | #include "ncplib_kernel.h" | 33 | #include "ncplib_kernel.h" |