• Krzysztof Kozlowski's avatar
    power_supply: ipaq_micro_battery: Check return values in probe · a2c1d531
    Krzysztof Kozlowski authored
    The return values of create_singlethread_workqueue() and
    power_supply_register() calls were not checked and even on error probe()
    function returned 0.
    
    1. If allocation of workqueue failed (returning NULL) then further
       accesses could lead to NULL pointer dereference. The
       queue_delayed_work() expects workqueue to be non-NULL.
    
    2. If registration of power supply failed then during unbind the driver
       tried to unregister power supply which was not actually registered.
       This could lead to memory corruption because
       power_supply_unregister() unconditionally cleans up given power
       supply.
    Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
    Fixes: 00a588f9 ("power: add driver for battery reading on iPaq h3xxx")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarSebastian Reichel <sre@kernel.org>
    a2c1d531
ipaq_micro_battery.c 7.66 KB