Browse Source

cdrom: don't open-code memdup_user()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Al Viro 9 years ago
parent
commit
abb0f6a79f
1 changed files with 3 additions and 7 deletions
  1. 3 7
      drivers/cdrom/cdrom.c

+ 3 - 7
drivers/cdrom/cdrom.c

@@ -3186,15 +3186,11 @@ static noinline int mmc_ioctl_dvd_read_struct(struct cdrom_device_info *cdi,
 	if (!CDROM_CAN(CDC_DVD))
 	if (!CDROM_CAN(CDC_DVD))
 		return -ENOSYS;
 		return -ENOSYS;
 
 
-	s = kmalloc(size, GFP_KERNEL);
-	if (!s)
-		return -ENOMEM;
+	s = memdup_user(arg, size);
+	if (IS_ERR(s))
+		return PTR_ERR(s);
 
 
 	cd_dbg(CD_DO_IOCTL, "entering DVD_READ_STRUCT\n");
 	cd_dbg(CD_DO_IOCTL, "entering DVD_READ_STRUCT\n");
-	if (copy_from_user(s, arg, size)) {
-		kfree(s);
-		return -EFAULT;
-	}
 
 
 	ret = dvd_read_struct(cdi, s, cgc);
 	ret = dvd_read_struct(cdi, s, cgc);
 	if (ret)
 	if (ret)