hwmon: (gpio-fan) Fix fan_ctrl_init error path
In current implementation, the sysfs entries is not removed before return -ENODEV. Creating the sysfs attribute should be the last thing done by the function, after all the rest has been successful. Otherwise there is a small window during which user-space can access the attribute but the driver isn't ready to deal with the requests. Fix it by moving sysfs_create_group to be the last thing done by the function. Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Simon Guinot <sguinot@lacie.com> Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
This commit is contained in:
parent
f0030d87be
commit
4f5b7994f0
|
@ -376,10 +376,6 @@ static int fan_ctrl_init(struct gpio_fan_data *fan_data,
|
|||
}
|
||||
}
|
||||
|
||||
err = sysfs_create_group(&pdev->dev.kobj, &gpio_fan_ctrl_group);
|
||||
if (err)
|
||||
goto err_free_gpio;
|
||||
|
||||
fan_data->num_ctrl = num_ctrl;
|
||||
fan_data->ctrl = ctrl;
|
||||
fan_data->num_speed = pdata->num_speed;
|
||||
|
@ -391,6 +387,10 @@ static int fan_ctrl_init(struct gpio_fan_data *fan_data,
|
|||
goto err_free_gpio;
|
||||
}
|
||||
|
||||
err = sysfs_create_group(&pdev->dev.kobj, &gpio_fan_ctrl_group);
|
||||
if (err)
|
||||
goto err_free_gpio;
|
||||
|
||||
return 0;
|
||||
|
||||
err_free_gpio:
|
||||
|
|
Loading…
Reference in New Issue