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);