firewire: cdev: fix fw_cdev_event_bus_reset emission after local config ROM changes
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Wed, 7 Jul 2010 13:36:07 +0000 (15:36 +0200)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Tue, 13 Jul 2010 07:47:47 +0000 (09:47 +0200)
When a descriptor was added or removed to the local node's config ROM,
userspace clients which had a local node's /dev/fw* open did not receive
any fw_cdev_event_bus_reset for poll()/read() consumption.

The cause was that the core-device.c facility which re-reads the config
ROM of the bus reset initiator node missed to call the fw_device update
function.  The fw_units are destroyed and newly added, but their parent
stays and needs to be updated.

Reported-by: Jay Fenlason <fenlason@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/core-device.c

index 781fd73..e9c18f5 100644 (file)
@@ -1136,6 +1136,7 @@ static void fw_device_refresh(struct work_struct *work)
                goto give_up;
        }
 
+       fw_device_cdev_update(device);
        create_units(device);
 
        /* Userspace may want to re-read attributes. */