On Wed, May 24, 2023 at 09:27:33AM +0800, Su Hui wrote: > The copy_to/from_user() functions return the number of bytes remaining > to be copied, but we want to return -EFAULT to the user. > > Fixes: 04da2daee383 ("[media] ngene: properly handle __user ptr") > Signed-off-by: Su Hui <suhui@xxxxxxxxxxxx> > --- > drivers/media/dvb-core/dvb_ringbuffer.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/dvb-core/dvb_ringbuffer.c b/drivers/media/dvb-core/dvb_ringbuffer.c > index 7d4558de8e83..f132578840ad 100644 > --- a/drivers/media/dvb-core/dvb_ringbuffer.c > +++ b/drivers/media/dvb-core/dvb_ringbuffer.c > @@ -216,7 +216,7 @@ ssize_t dvb_ringbuffer_write_user(struct dvb_ringbuffer *rbuf, > if (split > 0) { > status = copy_from_user(rbuf->data+rbuf->pwrite, buf, split); > if (status) > - return len - todo; > + return -EFAULT; No no no. This is obviously deliberate. It's returning the number of bytes that were successfully copied. (I'm not sure I like this API. If buf is a bad address then shouldn't we report that to the user? It's not like we ran out of space or hit some limit in the kernel, it's just a bug in the user space program. However, changing the API is dangerous and could break user space). Same for the other. regards, dan carpenter