diff options
author | Geliang Tang <geliangtang@gmail.com> | 2017-05-06 11:42:17 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-05-14 05:38:05 -0400 |
commit | f7929436a286ca31f0365a7013de968017f76818 (patch) | |
tree | 733b28a7545d4eeca008057b5ed2fb2b1faeb34f | |
parent | 76bf569466c68fb3705a3b38cdee026df9861101 (diff) |
spi: spidev: use memdup_user
Use memdup_user() helper instead of open-coding to simplify the code.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | drivers/spi/spidev.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c index 3b570018705c..d4d2d8d9f3e7 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c | |||
@@ -324,7 +324,6 @@ static struct spi_ioc_transfer * | |||
324 | spidev_get_ioc_message(unsigned int cmd, struct spi_ioc_transfer __user *u_ioc, | 324 | spidev_get_ioc_message(unsigned int cmd, struct spi_ioc_transfer __user *u_ioc, |
325 | unsigned *n_ioc) | 325 | unsigned *n_ioc) |
326 | { | 326 | { |
327 | struct spi_ioc_transfer *ioc; | ||
328 | u32 tmp; | 327 | u32 tmp; |
329 | 328 | ||
330 | /* Check type, command number and direction */ | 329 | /* Check type, command number and direction */ |
@@ -341,14 +340,7 @@ spidev_get_ioc_message(unsigned int cmd, struct spi_ioc_transfer __user *u_ioc, | |||
341 | return NULL; | 340 | return NULL; |
342 | 341 | ||
343 | /* copy into scratch area */ | 342 | /* copy into scratch area */ |
344 | ioc = kmalloc(tmp, GFP_KERNEL); | 343 | return memdup_user(u_ioc, tmp); |
345 | if (!ioc) | ||
346 | return ERR_PTR(-ENOMEM); | ||
347 | if (__copy_from_user(ioc, u_ioc, tmp)) { | ||
348 | kfree(ioc); | ||
349 | return ERR_PTR(-EFAULT); | ||
350 | } | ||
351 | return ioc; | ||
352 | } | 344 | } |
353 | 345 | ||
354 | static long | 346 | static long |