Messages in this thread Patch in this message |  | | Date | Fri, 25 Aug 2000 08:22:29 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | [PATCH] drivers/char/ppdev.c: returning copy_to_user result |
| |
Hi,
Please take a look and consider applying. Feedback about why it would be wrong would be greatly appreciated. 8)
- Arnaldo
--- linux-2.4.0-test7/drivers/char/ppdev.c Thu Jul 13 01:58:42 2000 +++ linux-2.4.0-test7.acme/drivers/char/ppdev.c Fri Aug 25 08:13:32 2000 @@ -39,7 +39,13 @@ * read/write read or write in current IEEE 1284 protocol * select wait for interrupt (in readfds) * + * Changes: * Added SETTIME/GETTIME ioctl, Fred Barnes 1999. + * + * Arnaldo Carvalho de Melo <acme@conectiva.com.br> 2000/08/25 + * - don't return directly copy_*_user return, on failure it returns + * a greater than zero number, the number of bytes successfully + * copied, and not -EFAULT, which is the correct return for failure */ #include <linux/module.h> @@ -369,19 +375,19 @@ case PPRSTATUS: reg = parport_read_status (port); - return copy_to_user ((unsigned char *) arg, ®, - sizeof (reg)); - + if (copy_to_user ((unsigned char *) arg, ®, sizeof (reg))) + return -EFAULT; + return 0; case PPRDATA: reg = parport_read_data (port); - return copy_to_user ((unsigned char *) arg, ®, - sizeof (reg)); - + if (copy_to_user ((unsigned char *) arg, ®, sizeof (reg))) + return -EFAULT; + return 0; case PPRCONTROL: reg = parport_read_control (port); - return copy_to_user ((unsigned char *) arg, ®, - sizeof (reg)); - + if (copy_to_user ((unsigned char *) arg, ®, sizeof (reg))) + return -EFAULT; + return 0; case PPYIELD: parport_yield_blocking (pp->pdev); return 0; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |