• Andy Shevchenko's avatar
    gpio: mockup: Convert to use software nodes · 6fda593f
    Andy Shevchenko authored
    The gpio-mockup driver creates the properties that are shared between
    platform and GPIO devices. Because of that, the properties may not
    be removed at the proper point of time without provoking a use-after-free
    as shown in the following backtrace:
    
      refcount_t: underflow; use-after-free.
      WARNING: CPU: 0 PID: 103 at lib/refcount.c:28 refcount_warn_saturate+0xd1/0x120
      ...
      Call Trace:
      kobject_put+0xdc/0xf0
      software_node_notify_remove+0xa8/0xc0
      device_del+0x15a/0x3e0
    
    That's why the driver has to manage the lifetime of the software nodes
    by itself.
    
    The problem originates from the old device_add_properties() API, but
    has been only revealed after the commit bd1e336a ("driver core: platform:
    Remove platform_device_add_properties()"). Hence, it's used as a landmark
    for backporting.
    
    Fixes: bd1e336a
    
     ("driver core: platform: Remove platform_device_add_properties()")
    Reported-by: default avatarKent Gibson <warthog618@gmail.com>
    Tested-by: default avatarKent Gibson <warthog618@gmail.com>
    Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    [Bartosz: tweaked local variable placement]
    Signed-off-by: default avatarBartosz Golaszewski <brgl@bgdev.pl>
    6fda593f
gpio-mockup.c 15.4 KB