| From daf82bd24e308c5a83758047aff1bd81edda4f11 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux@rere.qmqm.pl> |
| Date: Sat, 10 Aug 2019 10:42:48 +0200 |
| Subject: usb: gadget: u_serial: add missing port entry locking |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Michał Mirosław <mirq-linux@rere.qmqm.pl> |
| |
| commit daf82bd24e308c5a83758047aff1bd81edda4f11 upstream. |
| |
| gserial_alloc_line() misses locking (for a release barrier) while |
| resetting port entry on TTY allocation failure. Fix this. |
| |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> |
| Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Tested-by: Ladislav Michl <ladis@linux-mips.org> |
| Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/gadget/function/u_serial.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/usb/gadget/function/u_serial.c |
| +++ b/drivers/usb/gadget/function/u_serial.c |
| @@ -1129,8 +1129,10 @@ int gserial_alloc_line(unsigned char *li |
| __func__, port_num, PTR_ERR(tty_dev)); |
| |
| ret = PTR_ERR(tty_dev); |
| + mutex_lock(&ports[port_num].lock); |
| port = ports[port_num].port; |
| ports[port_num].port = NULL; |
| + mutex_unlock(&ports[port_num].lock); |
| gserial_free_port(port); |
| goto err; |
| } |