CHROMIUM: virtwl: remove unneeded access_checks in ioctls
TEST=virtio_wl.c compiles
BUG=None
Change-Id: Ib4bde541f02e4291dad1570ccd4109e182fc5198
Signed-off-by: Zach Reizner <zachr@google.com>
Reviewed-on: https://chromium-review.googlesource.com/865495
Commit-Ready: Zach Reizner <zachr@chromium.org>
Tested-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>
(cherry-picked from commit 54fdd0889fb51e612b871d4dc6d87a7b4f7b2a4b)
Reviewed-on: https://chromium-review.googlesource.com/957810
diff --git a/drivers/virtio/virtio_wl.c b/drivers/virtio/virtio_wl.c
index f5f1e1d..740460c 100644
--- a/drivers/virtio/virtio_wl.c
+++ b/drivers/virtio/virtio_wl.c
@@ -985,6 +985,11 @@
struct virtwl_ioctl_new ioctl_new;
int ret;
+ /* Early check for user error. */
+ ret = !access_ok(VERIFY_WRITE, ptr, sizeof(struct virtwl_ioctl_new));
+ if (ret)
+ return -EFAULT;
+
ret = copy_from_user(&ioctl_new, ptr, sizeof(struct virtwl_ioctl_new));
if (ret)
return -EFAULT;
@@ -1017,22 +1022,6 @@
static long virtwl_ioctl_ptr(struct file *filp, unsigned int cmd,
void *__user ptr)
{
- int err = 0;
-
- if (_IOC_TYPE(cmd) != VIRTWL_IOCTL_BASE)
- return -ENOTTY;
- if (_IOC_NR(cmd) > VIRTWL_IOCTL_MAXNR)
- return -ENOTTY;
-
- if (_IOC_DIR(cmd) & _IOC_READ) {
- err = !access_ok(VERIFY_WRITE, ptr, _IOC_SIZE(cmd));
- } else if (_IOC_DIR(cmd) & _IOC_WRITE) {
- err = !access_ok(VERIFY_READ, ptr, _IOC_SIZE(cmd));
- }
-
- if (err)
- return -EFAULT;
-
if (filp->f_op == &virtwl_vfd_fops)
return virtwl_vfd_ioctl(filp, cmd, ptr);