OSDN Git Service

rtc: isl1208: switch to rtc_register_device
authorDenis Osterland <Denis.Osterland@diehl.com>
Mon, 5 Mar 2018 10:43:53 +0000 (10:43 +0000)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Sat, 17 Mar 2018 13:20:54 +0000 (14:20 +0100)
Fix possible race condition.
It is not allowed to return with an error code after RTC is registered.

Suggested-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Denis Osterland <Denis.Osterland@diehl.com>
Reviewed-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-isl1208.c

index a13a4ba..1a2c38c 100644 (file)
@@ -635,12 +635,12 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id)
        if (isl1208_i2c_validate_client(client) < 0)
                return -ENODEV;
 
-       rtc = devm_rtc_device_register(&client->dev, isl1208_driver.driver.name,
-                                 &isl1208_rtc_ops,
-                                 THIS_MODULE);
+       rtc = devm_rtc_allocate_device(&client->dev);
        if (IS_ERR(rtc))
                return PTR_ERR(rtc);
 
+       rtc->ops = &isl1208_rtc_ops;
+
        i2c_set_clientdata(client, rtc);
 
        rc = isl1208_i2c_get_sr(client);
@@ -674,7 +674,7 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id)
                }
        }
 
-       return 0;
+       return rtc_register_device(rtc);
 }
 
 static int