Message ID | 1364311249-14454-99-git-send-email-luis.henriques@canonical.com |
---|---|
State | New |
Headers | show |
On Tue, Mar 26, 2013 at 03:19:57PM +0000, Luis Henriques wrote: > 3.5.7.9 -stable review patch. If anyone has any objections, please let me know. This patch is incorrect as the wait-queue initialisation is missing. A fix has been posted to linux-usb: http://marc.info/?l=linux-usb&m=136428758202815&w=2 and should show up in 3.9-rc5. This patch and the following use-after-free patches should not be applied without that fix. Johan > ------------------ > > From: Johan Hovold <jhovold@gmail.com> > > commit e5b33dc9d16053c2ae4c2c669cf008829530364b upstream. > > Add modem-status-change wait queue to struct usb_serial_port that > subdrivers can use to implement TIOCMIWAIT. > > Currently subdrivers use a private wait queue which may have been > released when waking up after device disconnected. > > Note that we're adding a new wait queue rather than reusing the tty-port > one as we do not want to get woken up at hangup (yet). > > Signed-off-by: Johan Hovold <jhovold@gmail.com> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Signed-off-by: Luis Henriques <luis.henriques@canonical.com> > --- > include/linux/usb/serial.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h > index 86c0b45..0b61f01 100644 > --- a/include/linux/usb/serial.h > +++ b/include/linux/usb/serial.h > @@ -66,6 +66,7 @@ > * port. > * @flags: usb serial port flags > * @write_wait: a wait_queue_head_t used by the port. > + * @delta_msr_wait: modem-status-change wait queue > * @work: work queue entry for the line discipline waking up. > * @throttled: nonzero if the read urb is inactive to throttle the device > * @throttle_req: nonzero if the tty wants to throttle us > @@ -112,6 +113,7 @@ struct usb_serial_port { > > unsigned long flags; > wait_queue_head_t write_wait; > + wait_queue_head_t delta_msr_wait; > struct work_struct work; > char throttled; > char throttle_req;
On Tue, Mar 26, 2013 at 04:31:18PM +0100, Johan Hovold wrote: > On Tue, Mar 26, 2013 at 03:19:57PM +0000, Luis Henriques wrote: > > 3.5.7.9 -stable review patch. If anyone has any objections, please let me know. > > This patch is incorrect as the wait-queue initialisation is missing. A > fix has been posted to linux-usb: > > http://marc.info/?l=linux-usb&m=136428758202815&w=2 > > and should show up in 3.9-rc5. This patch and the following > use-after-free patches should not be applied without that fix. Ups, I missed that. Thanks Johan, I'll drop these patches for now and will queued them again to 3.5 later. Cheers, -- Luis > > Johan > > > ------------------ > > > > From: Johan Hovold <jhovold@gmail.com> > > > > commit e5b33dc9d16053c2ae4c2c669cf008829530364b upstream. > > > > Add modem-status-change wait queue to struct usb_serial_port that > > subdrivers can use to implement TIOCMIWAIT. > > > > Currently subdrivers use a private wait queue which may have been > > released when waking up after device disconnected. > > > > Note that we're adding a new wait queue rather than reusing the tty-port > > one as we do not want to get woken up at hangup (yet). > > > > Signed-off-by: Johan Hovold <jhovold@gmail.com> > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > Signed-off-by: Luis Henriques <luis.henriques@canonical.com> > > --- > > include/linux/usb/serial.h | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h > > index 86c0b45..0b61f01 100644 > > --- a/include/linux/usb/serial.h > > +++ b/include/linux/usb/serial.h > > @@ -66,6 +66,7 @@ > > * port. > > * @flags: usb serial port flags > > * @write_wait: a wait_queue_head_t used by the port. > > + * @delta_msr_wait: modem-status-change wait queue > > * @work: work queue entry for the line discipline waking up. > > * @throttled: nonzero if the read urb is inactive to throttle the device > > * @throttle_req: nonzero if the tty wants to throttle us > > @@ -112,6 +113,7 @@ struct usb_serial_port { > > > > unsigned long flags; > > wait_queue_head_t write_wait; > > + wait_queue_head_t delta_msr_wait; > > struct work_struct work; > > char throttled; > > char throttle_req;
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index 86c0b45..0b61f01 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h @@ -66,6 +66,7 @@ * port. * @flags: usb serial port flags * @write_wait: a wait_queue_head_t used by the port. + * @delta_msr_wait: modem-status-change wait queue * @work: work queue entry for the line discipline waking up. * @throttled: nonzero if the read urb is inactive to throttle the device * @throttle_req: nonzero if the tty wants to throttle us @@ -112,6 +113,7 @@ struct usb_serial_port { unsigned long flags; wait_queue_head_t write_wait; + wait_queue_head_t delta_msr_wait; struct work_struct work; char throttled; char throttle_req;