This is a note to let you know that I've just added the patch titled USB: cdc-acm: fix potential urb leak and PM imbalance in write to the 3.15-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-cdc-acm-fix-potential-urb-leak-and-pm-imbalance-in-write.patch and it can be found in the queue-3.15 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 183a45087d126d126e8dd1d9b2602fc129dff9ad Mon Sep 17 00:00:00 2001 From: Johan Hovold <jhovold@xxxxxxxxx> Date: Mon, 26 May 2014 19:23:41 +0200 Subject: USB: cdc-acm: fix potential urb leak and PM imbalance in write From: Johan Hovold <jhovold@xxxxxxxxx> commit 183a45087d126d126e8dd1d9b2602fc129dff9ad upstream. Make sure to check return value of autopm get in write() in order to avoid urb leak and PM counter imbalance on errors. Fixes: 11ea859d64b6 ("USB: additional power savings for cdc-acm devices that support remote wakeup") Signed-off-by: Johan Hovold <jhovold@xxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/usb/class/cdc-acm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -668,7 +668,13 @@ static int acm_tty_write(struct tty_stru memcpy(wb->buf, buf, count); wb->len = count; - usb_autopm_get_interface_async(acm->control); + stat = usb_autopm_get_interface_async(acm->control); + if (stat) { + wb->use = 0; + spin_unlock_irqrestore(&acm->write_lock, flags); + return stat; + } + if (acm->susp_count) { usb_anchor_urb(wb->urb, &acm->delayed); spin_unlock_irqrestore(&acm->write_lock, flags); Patches currently in stable-queue which might be from jhovold@xxxxxxxxx are queue-3.15/usb-cdc-acm-fix-i-o-after-failed-open.patch queue-3.15/usb-cdc-acm-fix-write-and-resume-race.patch queue-3.15/usb-cdc-acm-fix-runtime-pm-for-control-messages.patch queue-3.15/usb-cdc-acm-fix-broken-runtime-suspend.patch queue-3.15/usb-cdc-acm-fix-open-and-suspend-race.patch queue-3.15/usb-cdc-acm-fix-potential-urb-leak-and-pm-imbalance-in-write.patch queue-3.15/usb-cdc-acm-fix-runtime-pm-imbalance-at-shutdown.patch queue-3.15/usb-cdc-acm-fix-shutdown-and-suspend-race.patch queue-3.15/usb-cdc-acm-fix-write-and-suspend-race.patch queue-3.15/usb-cdc-acm-fix-failed-open-not-being-detected.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html