Message ID | 1533766387-30529-1-git-send-email-khoroshilov@ispras.ru |
---|---|
State | Rejected |
Headers | show |
Series | rtc: isl1208: fix error handling in isl1208_probe() | expand |
Hello Alexey, On 09/08/2018 01:13:07+0300, Alexey Khoroshilov wrote: > After moving rtc_register_device() sysfs group is left unremoved > on the error path. > > Found by Linux Driver Verification project (linuxtesting.org). > > Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> > Fixes: 236b7187034e ("rtc: isl1208: switch to rtc_register_device") Thank you for that report, I've fixed it that way which also avoid the sysfs race: http://patchwork.ozlabs.org/patch/970216/ > --- > drivers/rtc/rtc-isl1208.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/rtc/rtc-isl1208.c b/drivers/rtc/rtc-isl1208.c > index 1a2c38cc0178..4b5df9bfb8d4 100644 > --- a/drivers/rtc/rtc-isl1208.c > +++ b/drivers/rtc/rtc-isl1208.c > @@ -674,7 +674,12 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id) > } > } > > - return rtc_register_device(rtc); > + rc = rtc_register_device(rtc); > + if (rc) { > + sysfs_remove_group(&client->dev.kobj, &isl1208_rtc_sysfs_files); > + return rc; > + } > + return 0; > } > > static int > -- > 2.7.4 >
diff --git a/drivers/rtc/rtc-isl1208.c b/drivers/rtc/rtc-isl1208.c index 1a2c38cc0178..4b5df9bfb8d4 100644 --- a/drivers/rtc/rtc-isl1208.c +++ b/drivers/rtc/rtc-isl1208.c @@ -674,7 +674,12 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id) } } - return rtc_register_device(rtc); + rc = rtc_register_device(rtc); + if (rc) { + sysfs_remove_group(&client->dev.kobj, &isl1208_rtc_sysfs_files); + return rc; + } + return 0; } static int
After moving rtc_register_device() sysfs group is left unremoved on the error path. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Fixes: 236b7187034e ("rtc: isl1208: switch to rtc_register_device") --- drivers/rtc/rtc-isl1208.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)