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:
committed by
Anton Vorontsov
parent
26eb387265
commit
3a2dbd611b
@@ -190,10 +190,10 @@ int power_supply_register(struct device *parent, struct power_supply *psy)
|
|||||||
goto success;
|
goto success;
|
||||||
|
|
||||||
create_triggers_failed:
|
create_triggers_failed:
|
||||||
device_unregister(psy->dev);
|
device_del(dev);
|
||||||
kobject_set_name_failed:
|
kobject_set_name_failed:
|
||||||
device_add_failed:
|
device_add_failed:
|
||||||
kfree(dev);
|
put_device(dev);
|
||||||
success:
|
success:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user