diff options
Diffstat (limited to 'fs')
49 files changed, 95 insertions, 3 deletions
@@ -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 808134a..870e2cf3 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 14aa702..e93a7ae 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 6466bc8a..b9bb7ad 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 890bc30f..f0b7256 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> @@ -915,6 +916,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; @@ -2793,6 +2828,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) diff --git a/fs/dcookies.c b/fs/dcookies.c index 02aa0dd..f8274a8 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> @@ -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 239133d..35acc43 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 bb69080..2c00953 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 709d867..3ca9afd 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 2c072bf..f28a6a4 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 9ed132c..47a9da2 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 c6393fb4..6250fcd 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 706d686..556cd55 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 7c693c9..86d91f1 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 d30876c..e99c5a7 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> @@ -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 6142250..768b581 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 e07aa09..13cf848 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 ff1b7d1..ab4c3a9 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> @@ -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 4bf1c63..ca77008 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 d0fcc5f..09e5d10 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 952da5f..f23048f 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> @@ -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 2ca6145..8bc15b3 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 fd3efdc..d6e0c08 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 ca5f9f9..eaf33ca 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> @@ -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 634355e..20feb75 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 1c7da98..adc2cd9 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 124e354..4063fb3 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; @@ -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 ba8bf8d..745c881 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 3f17ef8..4491fcf 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 6f99e01..cc061bf 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 2dc9535..43de3ba 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 2501f7e..024a938 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 d6baec0..b1b878b 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 c313321..689f7bc 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 8a38828..a6f2acc 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 faf1512..a9f4421 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 4af4910..e7f3da6 100644 --- a/fs/xfs/linux-2.6/xfs_cred.h +++ b/fs/xfs/linux-2.6/xfs_cred.h @@ -18,6 +18,8 @@ #ifndef __XFS_CRED_H__ #define __XFS_CRED_H__ +#include <linux/capability.h> + /* * Credentials */ @@ -27,7 +29,7 @@ typedef struct cred { extern struct cred *sys_cred; -/* this is a hack.. (assums sys_cred is the only cred_t in the system) */ +/* this is a hack.. (assumes sys_cred is the only cred_t in the system) */ static __inline int capable_cred(cred_t *cr, int cid) { return (cr == sys_cred) ? 1 : capable(cid); diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index f98c5be..21667ba 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c @@ -52,6 +52,7 @@ #include "xfs_dfrag.h" #include "xfs_fsops.h" +#include <linux/capability.h> #include <linux/dcache.h> #include <linux/mount.h> #include <linux/namei.h> diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index 97fb147..9b8ee34 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c @@ -51,6 +51,7 @@ #include "xfs_buf_item.h" #include "xfs_utils.h" +#include <linux/capability.h> #include <linux/xattr.h> #include <linux/namei.h> diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 86a1d09..6768843 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c @@ -15,6 +15,9 @@ * along with this program; if not, write the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include <linux/capability.h> + #include "xfs.h" #include "xfs_fs.h" #include "xfs_bit.h" diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c index cc9c91b..4ff0f4e 100644 --- a/fs/xfs/xfs_acl.c +++ b/fs/xfs/xfs_acl.c @@ -36,6 +36,7 @@ #include "xfs_mac.h" #include "xfs_attr.h" +#include <linux/capability.h> #include <linux/posix_acl_xattr.h> STATIC int xfs_acl_setmode(vnode_t *, xfs_acl_t *, int *); diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index 1a11c2b..e5e91e9 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c @@ -15,6 +15,9 @@ * along with this program; if not, write the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include <linux/capability.h> + #include "xfs.h" #include "xfs_fs.h" #include "xfs_types.h" diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index e03fa2a..e92cacd 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -15,6 +15,9 @@ * along with this program; if not, write the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include <linux/capability.h> + #include "xfs.h" #include "xfs_fs.h" #include "xfs_types.h" |