Commit 91046a8a authored by Jeff Garzik's avatar Jeff Garzik Committed by Linus Torvalds
Browse files

[PATCH] RTC: handle sysfs errors



Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent bfc7ee20
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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);

+10 −2
Original line number Diff line number Diff line
@@ -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);

+8 −1
Original line number Diff line number Diff line
@@ -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)
+10 −2
Original line number Diff line number Diff line
@@ -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);