X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fext2%2Fioctl.c;h=67a0c6b7a6474f9003380178e8324b55c9865cfb;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=11ee1a253ce222bbb495873654269def0e43970a;hpb=d46bc780027c5439db9f72d42c0732775b53925a;p=linux-2.6.git diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c index 11ee1a253..67a0c6b7a 100644 --- a/fs/ext2/ioctl.c +++ b/fs/ext2/ioctl.c @@ -25,7 +25,7 @@ int ext2_ioctl (struct inode * inode, struct file * filp, unsigned int cmd, switch (cmd) { case EXT2_IOC_GETFLAGS: flags = ei->i_flags & EXT2_FL_USER_VISIBLE; - return put_user(flags, (int *) arg); + return put_user(flags, (int __user *) arg); case EXT2_IOC_SETFLAGS: { unsigned int oldflags; @@ -35,7 +35,7 @@ int ext2_ioctl (struct inode * inode, struct file * filp, unsigned int cmd, if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER)) return -EACCES; - if (get_user(flags, (int *) arg)) + if (get_user(flags, (int __user *) arg)) return -EFAULT; if (!S_ISDIR(inode->i_mode)) @@ -50,8 +50,8 @@ int ext2_ioctl (struct inode * inode, struct file * filp, unsigned int cmd, * This test looks nicer. Thanks to Pauline Middelink */ if ((oldflags & EXT2_IMMUTABLE_FL) || - ((flags ^ oldflags) & - (EXT2_APPEND_FL | EXT2_IMMUTABLE_FL))) { + ((flags ^ oldflags) & (EXT2_APPEND_FL | + EXT2_IMMUTABLE_FL | EXT2_IUNLINK_FL))) { if (!capable(CAP_LINUX_IMMUTABLE)) return -EPERM; } @@ -61,20 +61,20 @@ int ext2_ioctl (struct inode * inode, struct file * filp, unsigned int cmd, ei->i_flags = flags; ext2_set_inode_flags(inode); - inode->i_ctime = CURRENT_TIME; + inode->i_ctime = CURRENT_TIME_SEC; mark_inode_dirty(inode); return 0; } case EXT2_IOC_GETVERSION: - return put_user(inode->i_generation, (int *) arg); + return put_user(inode->i_generation, (int __user *) arg); case EXT2_IOC_SETVERSION: if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER)) return -EPERM; if (IS_RDONLY(inode)) return -EROFS; - if (get_user(inode->i_generation, (int *) arg)) + if (get_user(inode->i_generation, (int __user *) arg)) return -EFAULT; - inode->i_ctime = CURRENT_TIME; + inode->i_ctime = CURRENT_TIME_SEC; mark_inode_dirty(inode); return 0; default: