[PATCH] USB: usbserial: race-condition fix.
authorLuiz Fernando Capitulino <lcapitulino@mandriva.com.br>
Mon, 28 Nov 2005 21:16:07 +0000 (19:16 -0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 4 Jan 2006 21:48:35 +0000 (13:48 -0800)
commit8a4613f01f5bb850cab34e3db572d97251d997b3
tree3ce08f8c75cf8696f7902dd33298a95016ed4e14
parent487f9c6710e7dff338e59820f6cfaeaaa87cb532
[PATCH] USB: usbserial: race-condition fix.

There is a race-condition in usb-serial driver that can be triggered if
a processes does 'port->tty->driver_data = NULL' in serial_close() while
other processes is in kernel-space about to call serial_ioctl() on the
same port.

This happens because a process can open the device while there is
another one closing it.

The patch below fixes that by adding a semaphore to ensure that no
process will open the device while another process is closing it.

Note that we can't use spinlocks here, since serial_open() and
serial_close() can sleep.

Signed-off-by: Luiz Capitulino <lcapitulino@mandriva.com.br>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/serial/usb-serial.c
drivers/usb/serial/usb-serial.h