aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds/led-triggers.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/leds/led-triggers.c')
-rw-r--r--drivers/leds/led-triggers.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c
index 262eb4193710..3c972b2f9893 100644
--- a/drivers/leds/led-triggers.c
+++ b/drivers/leds/led-triggers.c
@@ -166,6 +166,19 @@ void led_trigger_set_default(struct led_classdev *led_cdev)
166} 166}
167EXPORT_SYMBOL_GPL(led_trigger_set_default); 167EXPORT_SYMBOL_GPL(led_trigger_set_default);
168 168
169void led_trigger_rename_static(const char *name, struct led_trigger *trig)
170{
171 /* new name must be on a temporary string to prevent races */
172 BUG_ON(name == trig->name);
173
174 down_write(&triggers_list_lock);
175 /* this assumes that trig->name was originaly allocated to
176 * non constant storage */
177 strcpy((char *)trig->name, name);
178 up_write(&triggers_list_lock);
179}
180EXPORT_SYMBOL_GPL(led_trigger_rename_static);
181
169/* LED Trigger Interface */ 182/* LED Trigger Interface */
170 183
171int led_trigger_register(struct led_trigger *trig) 184int led_trigger_register(struct led_trigger *trig)
@@ -300,13 +313,13 @@ void led_trigger_register_simple(const char *name, struct led_trigger **tp)
300 if (err < 0) { 313 if (err < 0) {
301 kfree(trig); 314 kfree(trig);
302 trig = NULL; 315 trig = NULL;
303 printk(KERN_WARNING "LED trigger %s failed to register" 316 pr_warn("LED trigger %s failed to register (%d)\n",
304 " (%d)\n", name, err); 317 name, err);
305 } 318 }
306 } else 319 } else {
307 printk(KERN_WARNING "LED trigger %s failed to register" 320 pr_warn("LED trigger %s failed to register (no memory)\n",
308 " (no memory)\n", name); 321 name);
309 322 }
310 *tp = trig; 323 *tp = trig;
311} 324}
312EXPORT_SYMBOL_GPL(led_trigger_register_simple); 325EXPORT_SYMBOL_GPL(led_trigger_register_simple);