Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=18cf7f8723d913ce02bea43e468bebdd07bc880c
Commit:     18cf7f8723d913ce02bea43e468bebdd07bc880c
Parent:     9617db085c119879cd371e3212806a15596e121a
Author:     Arnd Bergmann <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 9 13:23:56 2007 +0200
Committer:  Jens Axboe <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 09:26:00 2007 +0200

    compat_ioctl: move BLKPG handling to block/compat_ioctl.c
    
    BLKPG is common to all block devices, so it should be handled
    by common code.
    
    Signed-off-by: Arnd Bergmann <[EMAIL PROTECTED]>
    Signed-off-by: Jens Axboe <[EMAIL PROTECTED]>
---
 block/compat_ioctl.c |   31 +++++++++++++++++++++++++++++++
 fs/compat_ioctl.c    |   33 ---------------------------------
 2 files changed, 31 insertions(+), 33 deletions(-)

diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
index 5c6dafa..44807d3 100644
--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -92,6 +92,35 @@ static int compat_hdio_ioctl(struct inode *inode, struct 
file *file,
        return error;
 }
 
+struct compat_blkpg_ioctl_arg {
+       compat_int_t op;
+       compat_int_t flags;
+       compat_int_t datalen;
+       compat_caddr_t data;
+};
+
+static int compat_blkpg_ioctl(struct inode *inode, struct file *file,
+               unsigned int cmd, struct compat_blkpg_ioctl_arg __user *ua32)
+{
+       struct blkpg_ioctl_arg __user *a = compat_alloc_user_space(sizeof(*a));
+       compat_caddr_t udata;
+       compat_int_t n;
+       int err;
+
+       err = get_user(n, &ua32->op);
+       err |= put_user(n, &a->op);
+       err |= get_user(n, &ua32->flags);
+       err |= put_user(n, &a->flags);
+       err |= get_user(n, &ua32->datalen);
+       err |= put_user(n, &a->datalen);
+       err |= get_user(udata, &ua32->data);
+       err |= put_user(compat_ptr(udata), &a->data);
+       if (err)
+               return err;
+
+       return blkdev_ioctl(inode, file, cmd, (unsigned long)a);
+}
+
 #define BLKBSZGET_32           _IOR(0x12, 112, int)
 #define BLKBSZSET_32           _IOW(0x12, 113, int)
 #define BLKGETSIZE64_32                _IOR(0x12, 114, int)
@@ -348,6 +377,8 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, 
unsigned long arg)
        case BLKBSZSET_32:
                return blkdev_ioctl(inode, file, BLKBSZSET,
                                (unsigned long)compat_ptr(arg));
+       case BLKPG:
+               return compat_blkpg_ioctl(inode, file, cmd, compat_ptr(arg));
        }
 
        lock_kernel();
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index e6a9471..3baa90d 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -47,7 +47,6 @@
 #include <linux/netdevice.h>
 #include <linux/raw.h>
 #include <linux/smb_fs.h>
-#include <linux/blkpg.h>
 #include <linux/blkdev.h>
 #include <linux/elevator.h>
 #include <linux/rtc.h>
@@ -1487,37 +1486,6 @@ ret_einval(unsigned int fd, unsigned int cmd, unsigned 
long arg)
        return -EINVAL;
 }
 
-#ifdef CONFIG_BLOCK
-struct blkpg_ioctl_arg32 {
-       compat_int_t op;
-       compat_int_t flags;
-       compat_int_t datalen;
-       compat_caddr_t data;
-};
-
-static int blkpg_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long 
arg)
-{
-       struct blkpg_ioctl_arg32 __user *ua32 = compat_ptr(arg);
-       struct blkpg_ioctl_arg __user *a = compat_alloc_user_space(sizeof(*a));
-       compat_caddr_t udata;
-       compat_int_t n;
-       int err;
-       
-       err = get_user(n, &ua32->op);
-       err |= put_user(n, &a->op);
-       err |= get_user(n, &ua32->flags);
-       err |= put_user(n, &a->flags);
-       err |= get_user(n, &ua32->datalen);
-       err |= put_user(n, &a->datalen);
-       err |= get_user(udata, &ua32->data);
-       err |= put_user(compat_ptr(udata), &a->data);
-       if (err)
-               return err;
-
-       return sys_ioctl(fd, cmd, (unsigned long)a);
-}
-#endif
-
 static int ioc_settimeout(unsigned int fd, unsigned int cmd, unsigned long arg)
 {
        return rw_long(fd, AUTOFS_IOC_SETTIMEOUT, arg);
@@ -3160,7 +3128,6 @@ HANDLE_IOCTL(SIOCGSTAMP, do_siocgstamp)
 HANDLE_IOCTL(SIOCGSTAMPNS, do_siocgstampns)
 #endif
 #ifdef CONFIG_BLOCK
-HANDLE_IOCTL(BLKPG, blkpg_ioctl_trans)
 HANDLE_IOCTL(FDSETPRM32, fd_ioctl_trans)
 HANDLE_IOCTL(FDDEFPRM32, fd_ioctl_trans)
 HANDLE_IOCTL(FDGETPRM32, fd_ioctl_trans)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to