]> err.no Git - linux-2.6/commit
ieee1394: nodemgr: revise semaphore protection of driver core data
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Sun, 22 Oct 2006 14:16:27 +0000 (16:16 +0200)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Thu, 7 Dec 2006 20:32:10 +0000 (21:32 +0100)
commitb07375b155a0d2ed21a64db68e737da1f19385f7
tree06669d571a153c7692ca9ed3f18c3686613cb231
parent7fdfc90945e308dc1be37e3914cd979a535263e9
ieee1394: nodemgr: revise semaphore protection of driver core data

 - The list "struct class.children" is supposed to be protected by
   class.sem, not by class.subsys.rwsem.

 - nodemgr_remove_uds() iterated over nodemgr_ud_class.children without
   proper protection.  This was never observed as a bug since the code
   is usually only accessed by knodemgrd.  All knodemgrds are currently
   globally serialized.  But userspace can trigger this code too by
   writing to /sys/bus/ieee1394/destroy_node.

 - Clean up access to the FireWire bus type's subsys.rwsem:  Access it
   uniformly via ieee1394_bus_type.  Shrink rwsem protected regions
   where possible.  Expand them where necessary.  The latter wasn't a
   problem so far because knodemgr is globally serialized.

This should harden the interaction of ieee1394 with sysfs and lay ground
for deserialized operation of multiple knodemgrds and for implementation
of subthreads for parallelized scanning and probing.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/ieee1394/nodemgr.c