On 02/20/2017 05:38 PM, Oliver Neukum wrote:

There is a small window during which the an URB may

   So the or an?

remain active after disconnect has returned. If in that case
already freed memory may be accessed and executed.

The fix is to poison the URB befotre the work is flushed.

Signed-off-by: Oliver Neukum <oneu...@suse.com>
---
 drivers/usb/misc/lvstest.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/usb/misc/lvstest.c b/drivers/usb/misc/lvstest.c
index 7717651..e5d2500 100644
--- a/drivers/usb/misc/lvstest.c
+++ b/drivers/usb/misc/lvstest.c
@@ -429,6 +429,8 @@ static void lvs_rh_disconnect(struct usb_interface *intf)
        struct lvs_rh *lvs = usb_get_intfdata(intf);

        sysfs_remove_group(&intf->dev.kobj, &lvs_attr_group);
+       usb_poison_urb(lvs->urb); /* used in scheduled work */
+       (lvs->urb);

   What?

[...]

MBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to