On Thu, 14 Jul 2016 16:01:22 +0800, Allen Hung wrote: > dmi_dev is freed in error exit code but, according to the document > of device_register, it should never directly free device structure > after calling this function, even if it returned an error! Use > put_device() instead. > > Signed-off-by: Allen Hung <[email protected]> > --- > drivers/firmware/dmi-id.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c > index 94a58a0..44c0139 100644 > --- a/drivers/firmware/dmi-id.c > +++ b/drivers/firmware/dmi-id.c > @@ -229,14 +229,14 @@ static int __init dmi_id_init(void) > > ret = device_register(dmi_dev); > if (ret) > - goto fail_free_dmi_dev; > + goto fail_put_dmi_dev; > > return 0; > > -fail_free_dmi_dev: > - kfree(dmi_dev); > -fail_class_unregister: > +fail_put_dmi_dev: > + put_device(dmi_dev); > > +fail_class_unregister: > class_unregister(&dmi_class); > > return ret;
Good catch. Applied, thanks. -- Jean Delvare SUSE L3 Support

