power_supply: Initialize changed_work before calling device_add
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 21 Feb 2011 14:34:19 +0000 (15:34 +0100)
committerLars-Peter Clausen <lars@metafoo.de>
Tue, 22 Feb 2011 10:01:42 +0000 (11:01 +0100)
commit97774672573ac4355bd12cf84b202555c1131b69
treecf5bde9f2f55faa6cdcd0a6ab39ef58e982d4a06
parentf722e17fdb2c97bbec2563636dd88489cdb1428b
power_supply: Initialize changed_work before calling device_add

Calling device_add causes an inital uevent for that device to be generated.
The power_supply uevent function calls the drivers get_property function,
which might causes the driver to update its state, which again might
causes the driver to call power_supply_changed(). Since the power_supplys
changed_work has not been initialized at this point the behavior is
undefined and can result in an OOPS.

This patch fixes the issue by initializing the power_supplys changed_work
prior to adding the power_supplys device to the device tree.

Reported-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
drivers/power/power_supply_core.c