• Dave Peterson's avatar
    [PATCH] EDAC: kobject/sysfs fixes · 472678eb
    Dave Peterson authored
    - After we unregister a kobject, wait for our kobject release method
      to call complete().  This causes us to wait until the kobject
      reference count reaches 0.  Otherwise, a task accessing the EDAC
      sysfs interface can hold the reference count above 0 until after the
      EDAC module has been unloaded.  When the reference count finally
      drops to 0, this will result in an attempt to call our release
      method inside the EDAC module after the module has already been
      unloaded.
    
      This isn't the best fix, since a process can get stuck sleeping forever
      uninterruptibly if the user does the following:
    
          rmmod my_module < /sys/my_sysfs/file
    
      I'll go back and implement a better fix later.  However this should
      be ok for now.
    
    - Call edac_remove_sysfs_mci_device() from edac_mc_del_mc() rather
      than from edac_mc_free().  Since edac_mc_add_mc() calls
      edac_create_sysfs_mci_device(), edac_mc_del_mc() should call
      edac_remove_sysfs_mci_device().
    Signed-off-by: default avatarDavid S. Peterson <dsp@llnl.gov>
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    472678eb
edac_mc.c 51.9 KB