diff options
Diffstat (limited to 'fs')
49 files changed, 124 insertions, 3 deletions
diff --git a/fs/attr.c b/fs/attr.c index d63e5096f2f..97de9467087 100644 --- a/fs/attr.c +++ b/fs/attr.c @@ -10,6 +10,7 @@ #include <linux/mm.h> #include <linux/string.h> #include <linux/smp_lock.h> +#include <linux/capability.h> #include <linux/fsnotify.h> #include <linux/fcntl.h> #include <linux/quotaops.h> diff --git a/fs/autofs/root.c b/fs/autofs/root.c index 808134a5a2f..870e2cf3301 100644 --- a/fs/autofs/root.c +++ b/fs/autofs/root.c @@ -10,6 +10,7 @@ * * ------------------------------------------------------------------------- */ +#include <linux/capability.h> #include <linux/errno.h> #include <linux/stat.h> #include <linux/param.h> diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c index 14aa70282e8..e93a7ae467c 100644 --- a/fs/autofs4/root.c +++ b/fs/autofs4/root.c @@ -12,6 +12,7 @@ * * ------------------------------------------------------------------------- */ +#include <linux/capability.h> #include <linux/errno.h> #include <linux/stat.h> #include <linux/param.h> diff --git a/fs/buffer.c b/fs/buffer.c index 6466bc8a3dc..b9bb7ad6897 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -26,6 +26,7 @@ #include <linux/percpu.h> #include <linux/slab.h> #include <linux/smp_lock.h> +#include <linux/capability.h> #include <linux/blkdev.h> #include <linux/file.h> #include <linux/quotaops.h> diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index 890bc30fbe2..5dd0207ffd4 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c @@ -14,6 +14,7 @@ #include <linux/types.h> #include <linux/compat.h> #include <linux/kernel.h> +#include <linux/capability.h> #include <linux/compiler.h> #include <linux/sched.h> #include <linux/smp.h> @@ -121,6 +122,7 @@ #include <linux/dvb/dmx.h> #include <linux/dvb/frontend.h> #include <linux/dvb/video.h> +#include <linux/lp.h> /* Aiee. Someone does not find a difference between int and long */ #define EXT2_IOC32_GETFLAGS _IOR('f', 1, int) @@ -915,6 +917,40 @@ static int sg_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long arg) return err; } +struct compat_sg_req_info { /* used by SG_GET_REQUEST_TABLE ioctl() */ + char req_state; + char orphan; + char sg_io_owned; + char problem; + int pack_id; + compat_uptr_t usr_ptr; + unsigned int duration; + int unused; +}; + +static int sg_grt_trans(unsigned int fd, unsigned int cmd, unsigned long arg) +{ + int err, i; + sg_req_info_t *r; + struct compat_sg_req_info *o = (struct compat_sg_req_info *)arg; + r = compat_alloc_user_space(sizeof(sg_req_info_t)*SG_MAX_QUEUE); + err = sys_ioctl(fd,cmd,(unsigned long)r); + if (err < 0) + return err; + for (i = 0; i < SG_MAX_QUEUE; i++) { + void __user *ptr; + int d; + + if (copy_in_user(o + i, r + i, offsetof(sg_req_info_t, usr_ptr)) || + get_user(ptr, &r[i].usr_ptr) || + get_user(d, &r[i].duration) || + put_user((u32)(unsigned long)(ptr), &o[i].usr_ptr) || + put_user(d, &o[i].duration)) + return -EFAULT; + } + return err; +} + struct sock_fprog32 { unsigned short len; compat_caddr_t filter; @@ -2700,6 +2736,20 @@ static int do_ncp_setprivatedata(unsigned int fd, unsigned int cmd, unsigned lon } #endif +static int +lp_timeout_trans(unsigned int fd, unsigned int cmd, unsigned long arg) +{ + struct compat_timeval *tc = (struct compat_timeval *)arg; + struct timeval *tn = compat_alloc_user_space(sizeof(struct timeval)); + struct timeval ts; + if (get_user(ts.tv_sec, &tc->tv_sec) || + get_user(ts.tv_usec, &tc->tv_usec) || + put_user(ts.tv_sec, &tn->tv_sec) || + put_user(ts.tv_usec, &tn->tv_usec)) + return -EFAULT; + return sys_ioctl(fd, cmd, (unsigned long)tn); +} + #define HANDLE_IOCTL(cmd,handler) \ { (cmd), (ioctl_trans_handler_t)(handler) }, @@ -2793,6 +2843,7 @@ HANDLE_IOCTL(FDPOLLDRVSTAT32, fd_ioctl_trans) HANDLE_IOCTL(FDGETFDCSTAT32, fd_ioctl_trans) HANDLE_IOCTL(FDWERRORGET32, fd_ioctl_trans) HANDLE_IOCTL(SG_IO,sg_ioctl_trans) +HANDLE_IOCTL(SG_GET_REQUEST_TABLE, sg_grt_trans) HANDLE_IOCTL(PPPIOCGIDLE32, ppp_ioctl_trans) HANDLE_IOCTL(PPPIOCSCOMPRESS32, ppp_ioctl_trans) HANDLE_IOCTL(PPPIOCSPASS32, ppp_sock_fprog_ioctl_trans) @@ -2926,6 +2977,20 @@ HANDLE_IOCTL(DMX_GET_EVENT, do_dmx_get_event) HANDLE_IOCTL(VIDEO_GET_EVENT, do_video_get_event) HANDLE_IOCTL(VIDEO_STILLPICTURE, do_video_stillpicture) HANDLE_IOCTL(VIDEO_SET_SPU_PALETTE, do_video_set_spu_palette) + +/* parport */ +COMPATIBLE_IOCTL(LPTIME) +COMPATIBLE_IOCTL(LPCHAR) +COMPATIBLE_IOCTL(LPABORTOPEN) +COMPATIBLE_IOCTL(LPCAREFUL) +COMPATIBLE_IOCTL(LPWAIT) +COMPATIBLE_IOCTL(LPSETIRQ) +COMPATIBLE_IOCTL(LPGETSTATUS) +COMPATIBLE_IOCTL(LPGETSTATUS) +COMPATIBLE_IOCTL(LPRESET) +/*LPGETSTATS not implemented, but no kernels seem to compile it in anyways*/ +COMPATIBLE_IOCTL(LPGETFLAGS) +HANDLE_IOCTL(LPSETTIMEOUT, lp_timeout_trans) }; int ioctl_table_size = ARRAY_SIZE(ioctl_start); diff --git a/fs/dcookies.c b/fs/dcookies.c index 02aa0ddc582..f8274a8f83b 100644 --- a/fs/dcookies.c +++ b/fs/dcookies.c @@ -18,6 +18,7 @@ #include <linux/slab.h> #include <linux/list.h> #include <linux/mount.h> +#include <linux/capability.h> #include <linux/dcache.h> #include <linux/mm.h> #include <linux/errno.h> diff --git a/fs/dquot.c b/fs/dquot.c index cb6d5bfbdfd..1966c890b48 100644 --- a/fs/dquot.c +++ b/fs/dquot.c @@ -77,6 +77,7 @@ #include <linux/kmod.h> #include <linux/namei.h> #include <linux/buffer_head.h> +#include <linux/capability.h> #include <linux/quotaops.h> #include <asm/uaccess.h> diff --git a/fs/ext2/acl.c b/fs/ext2/acl.c index 239133d01d9..35acc43b897 100644 --- a/fs/ext2/acl.c +++ b/fs/ext2/acl.c @@ -4,6 +4,7 @@ * Copyright (C) 2001-2003 Andreas Gruenbacher, <agruen@suse.de> */ +#include <linux/capability.h> #include <linux/init.h> #include <linux/sched.h> #include <linux/slab.h> diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c index bb690806649..2c00953d4b0 100644 --- a/fs/ext2/balloc.c +++ b/fs/ext2/balloc.c @@ -16,6 +16,7 @@ #include <linux/quotaops.h> #include <linux/sched.h> #include <linux/buffer_head.h> +#include <linux/capability.h> /* * balloc.c contains the blocks allocation and deallocation routines diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c index 709d8676b96..3ca9afdf713 100644 --- a/fs/ext2/ioctl.c +++ b/fs/ext2/ioctl.c @@ -8,6 +8,7 @@ */ #include "ext2.h" +#include <linux/capability.h> #include <linux/time.h> #include <linux/sched.h> #include <asm/current.h> diff --git a/fs/ext2/xattr_trusted.c b/fs/ext2/xattr_trusted.c index 2c072bfea23..f28a6a499c9 100644 --- a/fs/ext2/xattr_trusted.c +++ b/fs/ext2/xattr_trusted.c @@ -7,6 +7,7 @@ #include <linux/module.h> #include <linux/string.h> +#include <linux/capability.h> #include <linux/fs.h> #include <linux/smp_lock.h> #include <linux/ext2_fs.h> diff --git a/fs/ext3/acl.c b/fs/ext3/acl.c index 9ed132c9603..47a9da2dfb4 100644 --- a/fs/ext3/acl.c +++ b/fs/ext3/acl.c @@ -7,6 +7,7 @@ #include <linux/init.h> #include <linux/sched.h> #include <linux/slab.h> +#include <linux/capability.h> #include <linux/fs.h> #include <linux/ext3_jbd.h> #include <linux/ext3_fs.h> diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c index c6393fb4c35..6250fcdf14a 100644 --- a/fs/ext3/balloc.c +++ b/fs/ext3/balloc.c @@ -13,6 +13,7 @@ #include <linux/config.h> #include <linux/time.h> +#include <linux/capability.h> #include <linux/fs.h> #include <linux/jbd.h> #include <linux/ext3_fs.h> diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c index 706d6860838..556cd551007 100644 --- a/fs/ext3/ioctl.c +++ b/fs/ext3/ioctl.c @@ -9,6 +9,7 @@ #include <linux/fs.h> #include <linux/jbd.h> +#include <linux/capability.h> #include <linux/ext3_fs.h> #include <linux/ext3_jbd.h> #include <linux/time.h> diff --git a/fs/ext3/xattr_trusted.c b/fs/ext3/xattr_trusted.c index 7c693c94f14..86d91f1186d 100644 --- a/fs/ext3/xattr_trusted.c +++ b/fs/ext3/xattr_trusted.c @@ -7,6 +7,7 @@ #include <linux/module.h> #include <linux/string.h> +#include <linux/capability.h> #include <linux/fs.h> #include <linux/smp_lock.h> #include <linux/ext3_jbd.h> diff --git a/fs/fat/file.c b/fs/fat/file.c index d30876cf35f..e99c5a73b39 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c @@ -6,6 +6,7 @@ * regular file handling primitives for fat-based filesystems */ +#include <linux/capability.h> #include <linux/module.h> #include <linux/time.h> #include <linux/msdos_fs.h> diff --git a/fs/fcntl.c b/fs/fcntl.c index 9903bde475f..d0767fe5836 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c @@ -9,6 +9,7 @@ #include <linux/mm.h> #include <linux/fs.h> #include <linux/file.h> +#include <linux/capability.h> #include <linux/dnotify.h> #include <linux/smp_lock.h> #include <linux/slab.h> diff --git a/fs/file_table.c b/fs/file_table.c index 6142250104a..768b5816754 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -16,6 +16,7 @@ #include <linux/eventpoll.h> #include <linux/rcupdate.h> #include <linux/mount.h> +#include <linux/capability.h> #include <linux/cdev.h> #include <linux/fsnotify.h> diff --git a/fs/hfsplus/ioctl.c b/fs/hfsplus/ioctl.c index e07aa096e07..13cf848ac83 100644 --- a/fs/hfsplus/ioctl.c +++ b/fs/hfsplus/ioctl.c @@ -12,6 +12,7 @@ * hfsplus ioctls */ +#include <linux/capability.h> #include <linux/fs.h> #include <linux/sched.h> #include <linux/xattr.h> diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index ff1b7d108bd..ab4c3a9d51b 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -18,6 +18,7 @@ #include <linux/highmem.h> #include <linux/init.h> #include <linux/string.h> +#include <linux/capability.h> #include <linux/backing-dev.h> #include <linux/hugetlb.h> #include <linux/pagevec.h> diff --git a/fs/ioctl.c b/fs/ioctl.c index 56920918142..f8aeec3ca10 100644 --- a/fs/ioctl.c +++ b/fs/ioctl.c @@ -8,6 +8,7 @@ #include <linux/syscalls.h> #include <linux/mm.h> #include <linux/smp_lock.h> +#include <linux/capability.h> #include <linux/file.h> #include <linux/fs.h> #include <linux/security.h> diff --git a/fs/ioprio.c b/fs/ioprio.c index 4bf1c6365a1..ca77008146c 100644 --- a/fs/ioprio.c +++ b/fs/ioprio.c @@ -22,6 +22,7 @@ #include <linux/kernel.h> #include <linux/ioprio.h> #include <linux/blkdev.h> +#include <linux/capability.h> #include <linux/syscalls.h> static int set_task_ioprio(struct task_struct *task, int ioprio) diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index d0fcc5f3497..09e5d10b884 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c @@ -11,6 +11,7 @@ * */ +#include <linux/capability.h> #include <linux/config.h> #include <linux/kernel.h> #include <linux/sched.h> diff --git a/fs/jfs/xattr.c b/fs/jfs/xattr.c index 952da5f917c..f23048f9471 100644 --- a/fs/jfs/xattr.c +++ b/fs/jfs/xattr.c @@ -17,6 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include <linux/capability.h> #include <linux/fs.h> #include <linux/xattr.h> #include <linux/posix_acl_xattr.h> diff --git a/fs/namei.c b/fs/namei.c index 0a8f073435a..1e5746eb138 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -28,6 +28,7 @@ #include <linux/syscalls.h> #include <linux/mount.h> #include <linux/audit.h> +#include <linux/capability.h> #include <linux/file.h> #include <asm/namei.h> #include <asm/uaccess.h> diff --git a/fs/namespace.c b/fs/namespace.c index 2ca6145f43d..8bc15b362d2 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -16,6 +16,7 @@ #include <linux/init.h> #include <linux/quotaops.h> #include <linux/acct.h> +#include <linux/capability.h> #include <linux/module.h> #include <linux/seq_file.h> #include <linux/namespace.h> diff --git a/fs/ncpfs/ioctl.c b/fs/ncpfs/ioctl.c index fd3efdca5ae..d6e0c089e1b 100644 --- a/fs/ncpfs/ioctl.c +++ b/fs/ncpfs/ioctl.c @@ -10,6 +10,7 @@ #include <linux/config.h> #include <asm/uaccess.h> +#include <linux/capability.h> #include <linux/errno.h> #include <linux/fs.h> #include <linux/ioctl.h> diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index ca5f9f90d79..eaf33caa0a1 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -23,6 +23,7 @@ * Boston, MA 021110-1307, USA. */ +#include <linux/capability.h> #include <linux/fs.h> #include <linux/types.h> #include <linux/slab.h> diff --git a/fs/open.c b/fs/open.c index a3b3a9b5c2f..8e20c1f3256 100644 --- a/fs/open.c +++ b/fs/open.c @@ -16,6 +16,7 @@ #include <linux/tty.h> #include <linux/namei.h> #include <linux/backing-dev.h> +#include <linux/capability.h> #include <linux/security.h> #include <linux/mount.h> #include <linux/vfs.h> diff --git a/fs/proc/base.c b/fs/proc/base.c index 634355e1698..20feb7568de 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -55,6 +55,7 @@ #include <linux/proc_fs.h> #include <linux/stat.h> #include <linux/init.h> +#include <linux/capability.h> #include <linux/file.h> #include <linux/string.h> #include <linux/seq_file.h> diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c index 1c7da988fcc..adc2cd95169 100644 --- a/fs/proc/kcore.c +++ b/fs/proc/kcore.c @@ -14,6 +14,7 @@ #include <linux/proc_fs.h> #include <linux/user.h> #include <linux/a.out.h> +#include <linux/capability.h> #include <linux/elf.h> #include <linux/elfcore.h> #include <linux/vmalloc.h> diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c index 124e35442ac..4063fb32f78 100644 --- a/fs/proc/vmcore.c +++ b/fs/proc/vmcore.c @@ -41,7 +41,7 @@ struct proc_dir_entry *proc_vmcore = NULL; /* Reads a page from the oldmem device from given offset. */ static ssize_t read_from_oldmem(char *buf, size_t count, - loff_t *ppos, int userbuf) + u64 *ppos, int userbuf) { unsigned long pfn, offset; size_t nr_bytes; diff --git a/fs/quota.c b/fs/quota.c index d14d872646d..ba9e0bf32f6 100644 --- a/fs/quota.c +++ b/fs/quota.c @@ -15,6 +15,7 @@ #include <linux/security.h> #include <linux/syscalls.h> #include <linux/buffer_head.h> +#include <linux/capability.h> #include <linux/quotaops.h> /* Check validity of generic quotactl commands */ diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c index ba8bf8df6dc..745c8810089 100644 --- a/fs/reiserfs/ioctl.c +++ b/fs/reiserfs/ioctl.c @@ -2,6 +2,7 @@ * Copyright 2000 by Hans Reiser, licensing governed by reiserfs/README */ +#include <linux/capability.h> #include <linux/fs.h> #include <linux/reiserfs_fs.h> #include <linux/time.h> diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c index 3f17ef844fb..4491fcf2a0e 100644 --- a/fs/reiserfs/journal.c +++ b/fs/reiserfs/journal.c @@ -3925,10 +3925,13 @@ static int do_journal_end(struct reiserfs_transaction_handle *th, flush = 1; } #ifdef REISERFS_PREALLOCATE - /* quota ops might need to nest, setup the journal_info pointer for them */ + /* quota ops might need to nest, setup the journal_info pointer for them + * and raise the refcount so that it is > 0. */ current->journal_info = th; + th->t_refcount++; reiserfs_discard_all_prealloc(th); /* it should not involve new blocks into * the transaction */ + th->t_refcount--; current->journal_info = th->t_handle_save; #endif diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index 6f99e01f94a..cc061bfd437 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c @@ -30,6 +30,7 @@ */ #include <linux/reiserfs_fs.h> +#include <linux/capability.h> #include <linux/dcache.h> #include <linux/namei.h> #include <linux/errno.h> diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c index 2dc953504cc..43de3ba8333 100644 --- a/fs/reiserfs/xattr_acl.c +++ b/fs/reiserfs/xattr_acl.c @@ -1,3 +1,4 @@ +#include <linux/capability.h> #include <linux/fs.h> #include <linux/posix_acl.h> #include <linux/reiserfs_fs.h> diff --git a/fs/reiserfs/xattr_trusted.c b/fs/reiserfs/xattr_trusted.c index 2501f7e66ab..024a938ca60 100644 --- a/fs/reiserfs/xattr_trusted.c +++ b/fs/reiserfs/xattr_trusted.c @@ -1,4 +1,5 @@ #include <linux/reiserfs_fs.h> +#include <linux/capability.h> #include <linux/errno.h> #include <linux/fs.h> #include <linux/pagemap.h> diff --git a/fs/smbfs/proc.c b/fs/smbfs/proc.c index d6baec0f24a..b1b878b8173 100644 --- a/fs/smbfs/proc.c +++ b/fs/smbfs/proc.c @@ -8,6 +8,7 @@ */ #include <linux/types.h> +#include <linux/capability.h> #include <linux/errno.h> #include <linux/slab.h> #include <linux/fs.h> diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c index c3133219941..689f7bcfaf3 100644 --- a/fs/sysfs/inode.c +++ b/fs/sysfs/inode.c @@ -11,6 +11,7 @@ #include <linux/pagemap.h> #include <linux/namei.h> #include <linux/backing-dev.h> +#include <linux/capability.h> #include "sysfs.h" extern struct super_block * sysfs_sb; diff --git a/fs/udf/file.c b/fs/udf/file.c index 8a388289040..a6f2acc1f15 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c @@ -31,6 +31,7 @@ #include <asm/uaccess.h> #include <linux/kernel.h> #include <linux/string.h> /* memset */ +#include <linux/capability.h> #include <linux/errno.h> #include <linux/smp_lock.h> #include <linux/pagemap.h> diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c index faf1512173e..a9f4421ddb6 100644 --- a/fs/ufs/balloc.c +++ b/fs/ufs/balloc.c @@ -13,6 +13,7 @@ #include <linux/string.h> #include <linux/quotaops.h> #include <linux/buffer_head.h> +#include <linux/capability.h> #include <linux/sched.h> #include <linux/bitops.h> #include <asm/byteorder.h> diff --git a/fs/xfs/linux-2.6/xfs_cred.h b/fs/xfs/linux-2.6/xfs_cred.h index 4af49102472..e7f3da61c6c 100644 --- a/fs/xf |