Skip to content

Commit 87a5954

Browse files
glneolag-linaro
authored andcommitted
leds: lp8860: Use new mutex guards to cleanup function exits
Use scoped mutex guards to simplify return paths. While here use devm_mutex_init() to register the muxex so it also is cleaned up automatically. Signed-off-by: Andrew Davis <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Lee Jones <[email protected]>
1 parent 4bab18d commit 87a5954

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

drivers/leds/leds-lp8860.c

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -135,39 +135,37 @@ static int lp8860_unlock_eeprom(struct lp8860_led *led, int lock)
135135
{
136136
int ret;
137137

138-
mutex_lock(&led->lock);
138+
guard(mutex)(&led->lock);
139139

140140
if (lock == LP8860_UNLOCK_EEPROM) {
141141
ret = regmap_write(led->regmap,
142142
LP8860_EEPROM_UNLOCK,
143143
LP8860_EEPROM_CODE_1);
144144
if (ret) {
145145
dev_err(&led->client->dev, "EEPROM Unlock failed\n");
146-
goto out;
146+
return ret;
147147
}
148148

149149
ret = regmap_write(led->regmap,
150150
LP8860_EEPROM_UNLOCK,
151151
LP8860_EEPROM_CODE_2);
152152
if (ret) {
153153
dev_err(&led->client->dev, "EEPROM Unlock failed\n");
154-
goto out;
154+
return ret;
155155
}
156156
ret = regmap_write(led->regmap,
157157
LP8860_EEPROM_UNLOCK,
158158
LP8860_EEPROM_CODE_3);
159159
if (ret) {
160160
dev_err(&led->client->dev, "EEPROM Unlock failed\n");
161-
goto out;
161+
return ret;
162162
}
163163
} else {
164164
ret = regmap_write(led->regmap,
165165
LP8860_EEPROM_UNLOCK,
166166
LP8860_LOCK_EEPROM);
167167
}
168168

169-
out:
170-
mutex_unlock(&led->lock);
171169
return ret;
172170
}
173171

@@ -204,30 +202,29 @@ static int lp8860_brightness_set(struct led_classdev *led_cdev,
204202
int disp_brightness = brt_val * 255;
205203
int ret;
206204

207-
mutex_lock(&led->lock);
205+
guard(mutex)(&led->lock);
208206

209207
ret = lp8860_fault_check(led);
210208
if (ret) {
211209
dev_err(&led->client->dev, "Cannot read/clear faults\n");
212-
goto out;
210+
return ret;
213211
}
214212

215213
ret = regmap_write(led->regmap, LP8860_DISP_CL1_BRT_MSB,
216214
(disp_brightness & 0xff00) >> 8);
217215
if (ret) {
218216
dev_err(&led->client->dev, "Cannot write CL1 MSB\n");
219-
goto out;
217+
return ret;
220218
}
221219

222220
ret = regmap_write(led->regmap, LP8860_DISP_CL1_BRT_LSB,
223221
disp_brightness & 0xff);
224222
if (ret) {
225223
dev_err(&led->client->dev, "Cannot write CL1 LSB\n");
226-
goto out;
224+
return ret;
227225
}
228-
out:
229-
mutex_unlock(&led->lock);
230-
return ret;
226+
227+
return 0;
231228
}
232229

233230
static int lp8860_init(struct lp8860_led *led)
@@ -392,7 +389,7 @@ static int lp8860_probe(struct i2c_client *client)
392389
led->client = client;
393390
led->led_dev.brightness_set_blocking = lp8860_brightness_set;
394391

395-
mutex_init(&led->lock);
392+
devm_mutex_init(&client->dev, &led->lock);
396393

397394
i2c_set_clientdata(client, led);
398395

@@ -443,8 +440,6 @@ static void lp8860_remove(struct i2c_client *client)
443440
dev_err(&led->client->dev,
444441
"Failed to disable regulator\n");
445442
}
446-
447-
mutex_destroy(&led->lock);
448443
}
449444

450445
static const struct i2c_device_id lp8860_id[] = {

0 commit comments

Comments
 (0)