Hi,

On 10/11/2016 12:07 PM, Baolin Wang wrote:
>>>  /*
>>> >> + * usb_charger_unregister() - Unregister a usb charger.
>>> >> + * @uchger - the usb charger to be unregistered.
>>> >> + */
>>> >> +static int usb_charger_unregister(struct usb_charger *uchger)
>>> >> +{
>>> >> +     ida_simple_remove(&usb_charger_ida, uchger->id);
>>> >> +     sysfs_remove_groups(&uchger->gadget->dev.kobj, usb_charger_groups);
>>> >> +
>>> >> +     mutex_lock(&charger_lock);
>>> >> +     list_del(&uchger->list);
>>> >> +     mutex_unlock(&charger_lock);
>>> >> +
>>> >> +     kfree(uchger);
>> >
>> > Any reasons you want to put kfree() here? You allocated the memory
>> > in usb_charger_init(). Isn't usb_charger_exit() a better place?
> The usb_charger_exit() will issue usb_charger_unregister() and we need
> use the usb_charger structure in usb_charger_unregister() to
> unregister the usb charger.
>

This seems not to be a strong reason. :-)

You can unregister the charger first and then free the structure.
Just do the reverse operation of what you have done in the init
function.

Best regards,
Lu Baolu

Reply via email to