hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/drivers/leds/leds-powernv.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * PowerNV LED Driver
34 *
....@@ -5,11 +6,6 @@
56 *
67 * Author: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
78 * Author: Anshuman Khandual <khandual@linux.vnet.ibm.com>
8
- *
9
- * This program is free software; you can redistribute it and/or
10
- * modify it under the terms of the GNU General Public License
11
- * as published by the Free Software Foundation; either version
12
- * 2 of the License, or (at your option) any later version.
139 */
1410
1511 #include <linux/leds.h>
....@@ -254,7 +250,7 @@
254250 struct powernv_led_data *powernv_led;
255251 struct device *dev = &pdev->dev;
256252
257
- for_each_child_of_node(led_node, np) {
253
+ for_each_available_child_of_node(led_node, np) {
258254 p = of_find_property(np, "led-types", NULL);
259255
260256 while ((cur = of_prop_next_string(p, cur)) != NULL) {
....@@ -285,6 +281,7 @@
285281 struct device_node *led_node;
286282 struct powernv_led_common *powernv_led_common;
287283 struct device *dev = &pdev->dev;
284
+ int rc;
288285
289286 led_node = of_find_node_by_path("/ibm,opal/leds");
290287 if (!led_node) {
....@@ -295,15 +292,20 @@
295292
296293 powernv_led_common = devm_kzalloc(dev, sizeof(*powernv_led_common),
297294 GFP_KERNEL);
298
- if (!powernv_led_common)
299
- return -ENOMEM;
295
+ if (!powernv_led_common) {
296
+ rc = -ENOMEM;
297
+ goto out;
298
+ }
300299
301300 mutex_init(&powernv_led_common->lock);
302301 powernv_led_common->max_led_type = cpu_to_be64(OPAL_SLOT_LED_TYPE_MAX);
303302
304303 platform_set_drvdata(pdev, powernv_led_common);
305304
306
- return powernv_led_classdev(pdev, led_node, powernv_led_common);
305
+ rc = powernv_led_classdev(pdev, led_node, powernv_led_common);
306
+out:
307
+ of_node_put(led_node);
308
+ return rc;
307309 }
308310
309311 /* Platform driver remove */