
root cause
I think this is a double free BUG.
fg_psy_register calls devm_power_supply_register, means no need to call power_supply_unregister when unload driver, but power_supply_unregister was indeed called in fg_psy_unregister, which is evenually called by bq_fg_remove.
how to fix it?
replace devm_power_supply_register with power_supply_register in fg_psy_register.
root cause
I think this is a double free BUG.
fg_psy_registercallsdevm_power_supply_register, means no need to callpower_supply_unregisterwhen unload driver, butpower_supply_unregisterwas indeed called infg_psy_unregister, which is evenually called bybq_fg_remove.how to fix it?
replace
devm_power_supply_registerwithpower_supply_registerinfg_psy_register.