Patch "usb: gadget: f_fs: Fix use-after-free" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
usb: gadget: f_fs: Fix use-after-free
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
usb-gadget-f_fs-fix-use-after-free.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
38740a5b87d53ceb89eb2c970150f6e94e00373aMon Sep 17 00:00:00 2001
From: Lars-Peter Clausen <[email protected]>
Date: Thu, 14 Apr 2016 17:01:17 +0200
Subject: usb: gadget: f_fs: Fix use-after-free
From: Lars-Peter Clausen <[email protected]>
commit 38740a5b87d53ceb89eb2c970150f6e94e00373a upstream.
When using asynchronous read or write operations on the USB endpoints the issuer of the IO request is notified by calling the ki_complete() callback of the submitted kiocb when the URB has been completed.
Calling this ki_complete() callback will free kiocb. Make sure that the structure is no longer accessed beyond that point, otherwise undefined behaviour might occur.
--- drivers/usb/gadget/function/f_fs.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/usb/gadget/function/f_fs.c +2 -3
@@ -646,6 +646,7 @@ static void ffs_user_copy_worker(struct work);int ret = io_data->req->status ? io_data->req->status : io_data->req->actual; +bool kiocb_has_eventfd = io_data->kiocb->ki_flags &IOCB_EVENTFD ;if (io_data->read && ret >0 ) {use_mm (io_data->mm);
@@ -657,13 +658,11 @@ static void ffs_user_copy_worker(struct io_data->kiocb->ki_complete (io_data->kiocb, ret, ret); -if (io_data->ffs->ffs_eventfd && - !(io_data->kiocb->ki_flags &IOCB_EVENTFD )) +if (io_data->ffs->ffs_eventfd && !kiocb_has_eventfd)eventfd_signal (io_data->ffs->ffs_eventfd,1 );usb_ep_free_request (io_data->ep, io_data->req); - io_data->kiocb->private =NULL ;if (io_data->read)kfree (io_data->to_free);kfree (io_data->buf);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/usb-gadget-f_fs-fix-use-after-free.patch