Scenario: Process A keeps the character device file of node N open. N is being unplugged. File /dev/fwN won't be destroyed as long as A doesn't close it. Now, process B opens /dev/fwN as well. Previously it would succeed but be unable to do any IO on it of course. With this patch, process B's open() will fail immediately with -ENODEV.
Signed-off-by: Stefan Richter <[EMAIL PROTECTED]> --- drivers/firewire/fw-device.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) Index: linux/drivers/firewire/fw-device.c =================================================================== --- linux.orig/drivers/firewire/fw-device.c +++ linux/drivers/firewire/fw-device.c @@ -616,8 +616,12 @@ struct fw_device *fw_device_from_devt(de down_read(&idr_rwsem); device = idr_find(&fw_device_idr, MINOR(devt)); - if (device) - fw_device_get(device); + if (device) { + if (fw_device_is_shutdown(device)) + device = NULL; + else + fw_device_get(device); + } up_read(&idr_rwsem); return device; -- Stefan Richter -=====-==--- ---= ==-== http://arcgraph.de/sr/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/