• Stefan Richter's avatar
    ieee1394: nodemgr: revise semaphore protection of driver core data · b07375b1
    Stefan Richter authored
     - 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: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    b07375b1
nodemgr.c 53.3 KB