usb: remove res2 argument from gadget code completions
authorJens Axboe <axboe@kernel.dk>
Sat, 23 Oct 2021 13:52:23 +0000 (07:52 -0600)
committerJens Axboe <axboe@kernel.dk>
Mon, 25 Oct 2021 15:28:38 +0000 (09:28 -0600)
The USB gadget code is the only code that every tried to utilize the
2nd argument of the aio completions, but there are strong suspicions
that it was never actually used by anything on the userspace side.

Out of the 3 cases that touch it, two of them just pass in the same
as res, and the last one passes in error/transfer in res like any
other normal use case.

Remove the 2nd argument, pass 0 like the rest of the in-kernel users
of kiocb based IO.

Link: https://lore.kernel.org/linux-block/20211021174021.273c82b1.john@metanate.com/
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/usb/gadget/function/f_fs.c
drivers/usb/gadget/legacy/inode.c

index 8260f38025b72f7201491e337c692ba453f68766..7bd22398d52ffbb0093ca73ff42dd45e46bd6d6e 100644 (file)
@@ -831,7 +831,7 @@ static void ffs_user_copy_worker(struct work_struct *work)
                kthread_unuse_mm(io_data->mm);
        }
 
-       io_data->kiocb->ki_complete(io_data->kiocb, ret, ret);
+       io_data->kiocb->ki_complete(io_data->kiocb, ret, 0);
 
        if (io_data->ffs->ffs_eventfd && !kiocb_has_eventfd)
                eventfd_signal(io_data->ffs->ffs_eventfd, 1);
index 539220d7f5b62069bdaf22e01817b39098982bdc..28d3d4e711829614a85cf5c555cc7c8372c97d70 100644 (file)
@@ -469,7 +469,7 @@ static void ep_user_copy_worker(struct work_struct *work)
                ret = -EFAULT;
 
        /* completing the iocb can drop the ctx and mm, don't touch mm after */
-       iocb->ki_complete(iocb, ret, ret);
+       iocb->ki_complete(iocb, ret, 0);
 
        kfree(priv->buf);
        kfree(priv->to_free);
@@ -496,11 +496,9 @@ static void ep_aio_complete(struct usb_ep *ep, struct usb_request *req)
                kfree(priv->to_free);
                kfree(priv);
                iocb->private = NULL;
-               /* aio_complete() reports bytes-transferred _and_ faults */
-
                iocb->ki_complete(iocb,
                                req->actual ? req->actual : (long)req->status,
-                               req->status);
+                               0);
        } else {
                /* ep_copy_to_user() won't report both; we hide some faults */
                if (unlikely(0 != req->status))