Skip to content

Commit

Permalink
[PATCH] RTC: handle sysfs errors
Browse files Browse the repository at this point in the history
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Jeff Garzik authored and Linus Torvalds committed Dec 7, 2006
1 parent bfc7ee2 commit 91046a8
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 7 deletions.
9 changes: 7 additions & 2 deletions drivers/rtc/rtc-ds1672.c
Original file line number Diff line number Diff line change
Expand Up @@ -237,17 +237,22 @@ static int ds1672_probe(struct i2c_adapter *adapter, int address, int kind)
/* read control register */
err = ds1672_get_control(client, &control);
if (err)
goto exit_detach;
goto exit_devreg;

if (control & DS1672_REG_CONTROL_EOSC)
dev_warn(&client->dev, "Oscillator not enabled. "
"Set time to enable.\n");

/* Register sysfs hooks */
device_create_file(&client->dev, &dev_attr_control);
err = device_create_file(&client->dev, &dev_attr_control);
if (err)
goto exit_devreg;

return 0;

exit_devreg:
rtc_device_unregister(rtc);

exit_detach:
i2c_detach_client(client);

Expand Down
12 changes: 10 additions & 2 deletions drivers/rtc/rtc-rs5c372.c
Original file line number Diff line number Diff line change
Expand Up @@ -238,11 +238,19 @@ static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind)

i2c_set_clientdata(client, rtc);

device_create_file(&client->dev, &dev_attr_trim);
device_create_file(&client->dev, &dev_attr_osc);
err = device_create_file(&client->dev, &dev_attr_trim);
if (err) goto exit_devreg;
err = device_create_file(&client->dev, &dev_attr_osc);
if (err) goto exit_trim;

return 0;

exit_trim:
device_remove_file(&client->dev, &dev_attr_trim);

exit_devreg:
rtc_device_unregister(rtc);

exit_detach:
i2c_detach_client(client);

Expand Down
9 changes: 8 additions & 1 deletion drivers/rtc/rtc-test.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,18 @@ static int test_probe(struct platform_device *plat_dev)
err = PTR_ERR(rtc);
return err;
}
device_create_file(&plat_dev->dev, &dev_attr_irq);

err = device_create_file(&plat_dev->dev, &dev_attr_irq);
if (err)
goto err;

platform_set_drvdata(plat_dev, rtc);

return 0;

err:
rtc_device_unregister(rtc);
return err;
}

static int __devexit test_remove(struct platform_device *plat_dev)
Expand Down
12 changes: 10 additions & 2 deletions drivers/rtc/rtc-x1205.c
Original file line number Diff line number Diff line change
Expand Up @@ -562,11 +562,19 @@ static int x1205_probe(struct i2c_adapter *adapter, int address, int kind)
else
dev_err(&client->dev, "couldn't read status\n");

device_create_file(&client->dev, &dev_attr_atrim);
device_create_file(&client->dev, &dev_attr_dtrim);
err = device_create_file(&client->dev, &dev_attr_atrim);
if (err) goto exit_devreg;
err = device_create_file(&client->dev, &dev_attr_dtrim);
if (err) goto exit_atrim;

return 0;

exit_atrim:
device_remove_file(&client->dev, &dev_attr_atrim);

exit_devreg:
rtc_device_unregister(rtc);

exit_detach:
i2c_detach_client(client);

Expand Down

0 comments on commit 91046a8

Please sign in to comment.