From: Dan Carpenter <dan.carpen...@oracle.com>

commit cab36da4bf1a35739b091b73714a39a1bbd02b05 upstream.

Return -EFAULT on error instead of the number of bytes remaining to be
copied.

Fixes: bac42fb21259 ("comedi: get rid of compat_alloc_user_space() mess in 
COMEDI_CMD{,TEST} compat")
Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
Cc: stable <sta...@vger.kernel.org>
Link: https://lore.kernel.org/r/X8c3pfwFy2jpy4BP@mwanda
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
 drivers/staging/comedi/comedi_fops.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/drivers/staging/comedi/comedi_fops.c
+++ b/drivers/staging/comedi/comedi_fops.c
@@ -2987,7 +2987,9 @@ static int put_compat_cmd(struct comedi3
        v32.chanlist_len = cmd->chanlist_len;
        v32.data = ptr_to_compat(cmd->data);
        v32.data_len = cmd->data_len;
-       return copy_to_user(cmd32, &v32, sizeof(v32));
+       if (copy_to_user(cmd32, &v32, sizeof(v32)))
+               return -EFAULT;
+       return 0;
 }
 
 /* Handle 32-bit COMEDI_CMD ioctl. */


Reply via email to