mirror of
https://github.com/adulau/aha.git
synced 2025-01-03 22:53:18 +00:00
331879fd6f
A USB-serial converter device is plugged into a system, and a process opens it's device node. If the device is physically removed whilst the process still has its device node open, then other processes can sucessfully open the now non-existent device's node. I would expect that open() on a device that has been physically removed should return ENODEV. This is manifesting itself with getty on my system. I do the following: 1. set up inittab to spawn getty on ttyUSB0, eg: T1:23:respawn:/sbin/getty -L ttyUSB0 115200 vt100 2. Plug in USB-serial converter cable 3. Wait for a login prompt on a terminal program attached to the serial cable 4. Login 5. Pull the USB-serial converter cable from the box 6. getty doesn't realise that ttyUSB0 no longer exists as /dev/ttyUSB0 can still be opened. 7. Re-insert the USB-serial converter cable 8. You should no longer get a login prompt over the serial cable, as the the USB-serial cable now shows up as /dev/ttyUSB1, and getty is trying to talk to /dev/ttyUSB0. The attached patch will cause open("/dev/ttyUSB0", O_RDONLY) to return ENODEV after the USB-serial converter has been pulled. The patch was created against 2.6.28.1. I can supply it against something else if needs be. It is fairly simple, so should be OK. I am using a pl2303 device, although I don't think that makes any difference. From: James Woodcock <James.Woodcock@ACULAB.COM> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
||
---|---|---|
.. | ||
aircable.c | ||
ark3116.c | ||
belkin_sa.c | ||
belkin_sa.h | ||
bus.c | ||
ch341.c | ||
ChangeLog.history | ||
console.c | ||
cp2101.c | ||
cyberjack.c | ||
cypress_m8.c | ||
cypress_m8.h | ||
digi_acceleport.c | ||
empeg.c | ||
ezusb.c | ||
ezusb_convert.pl | ||
ftdi_sio.c | ||
ftdi_sio.h | ||
funsoft.c | ||
garmin_gps.c | ||
generic.c | ||
hp4x.c | ||
io_16654.h | ||
io_edgeport.c | ||
io_edgeport.h | ||
io_ionsp.h | ||
io_tables.h | ||
io_ti.c | ||
io_ti.h | ||
io_usbvend.h | ||
ipaq.c | ||
ipaq.h | ||
ipw.c | ||
ir-usb.c | ||
iuu_phoenix.c | ||
iuu_phoenix.h | ||
Kconfig | ||
keyspan.c | ||
keyspan.h | ||
keyspan_pda.c | ||
keyspan_usa26msg.h | ||
keyspan_usa28msg.h | ||
keyspan_usa49msg.h | ||
keyspan_usa67msg.h | ||
keyspan_usa90msg.h | ||
kl5kusb105.c | ||
kl5kusb105.h | ||
kobil_sct.c | ||
kobil_sct.h | ||
Makefile | ||
Makefile-keyspan_pda_fw | ||
mct_u232.c | ||
mct_u232.h | ||
mos7720.c | ||
mos7840.c | ||
moto_modem.c | ||
navman.c | ||
omninet.c | ||
opticon.c | ||
option.c | ||
oti6858.c | ||
oti6858.h | ||
pl2303.c | ||
pl2303.h | ||
safe_serial.c | ||
siemens_mpi.c | ||
sierra.c | ||
spcp8x5.c | ||
ti_usb_3410_5052.c | ||
ti_usb_3410_5052.h | ||
usb-serial.c | ||
usb_debug.c | ||
visor.c | ||
visor.h | ||
whiteheat.c | ||
whiteheat.h |