• Krzysztof Kozlowski's avatar
    power_supply: sysfs: Bring back write to writeable properties · 5c6e3a97
    Krzysztof Kozlowski authored
    The fix for NULL pointer exception related to calling uevent for not
    finished probe caused to set all writeable properties as non-writeable.
    This was caused by checking if property is writeable before the initial
    increase of power supply usage counter and in the same time using
    wrapper over property_is_writeable(). The wrapper returns ENODEV if the
    usage counter is still 0.
    
    The call trace looked like:
      device probe:
        power_supply_register()
          use_cnt = 0;
          device_add()
            create sysfs entries
              power_supply_attr_is_visible()
                power_supply_property_is_writeable()
                  if (use_cnt == 0) return -ENODEV;
          use_cnt++;
    
    Replace the usage of wrapper with direct call to property_is_writeable()
    from driver. This should be safe call during device probe because
    implementations of this callback just return 0/1 for different
    properties and they do not access any of the driver's internal data.
    
    Fixes: 8e59c7f2 ("power_supply: Fix NULL pointer dereference during bq27x00_battery probe")
    Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: default avatarSebastian Reichel <sre@kernel.org>
    5c6e3a97
power_supply_sysfs.c 9.05 KB