power_supply: Fix use after free and memory leak

device_unregister() might free its argument.  This leads to freed
memory use in kfree().  Also use put_device() instead of kfree()
as dev may be already used in another layer after call to device_add().

Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
This commit is contained in:
Vasiliy Kulikov 2010-11-19 21:41:58 +03:00 committed by Anton Vorontsov
parent 26eb387265
commit 3a2dbd611b
1 changed files with 2 additions and 2 deletions

View File

@ -190,10 +190,10 @@ int power_supply_register(struct device *parent, struct power_supply *psy)
goto success;
create_triggers_failed:
device_unregister(psy->dev);
device_del(dev);
kobject_set_name_failed:
device_add_failed:
kfree(dev);
put_device(dev);
success:
return rc;
}