Linux LED subsystem development
 help / color / mirror / Atom feed
From: Dan Murphy <dmurphy@ti.com>
To: <jacek.anaszewski@gmail.com>, <pavel@ucw.cz>
Cc: <linux-leds@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	Dan Murphy <dmurphy@ti.com>
Subject: [RFC PATCH] leds: core: Fix LED_COLOR_MAX_ID
Date: Wed, 2 Oct 2019 11:34:00 -0500	[thread overview]
Message-ID: <20191002163400.25317-1-dmurphy@ti.com> (raw)

The LED_COLOR_MAX_ID is incorrect.  THe MAX_ID should
be the last COLOR_ID in the list.  If an array was allocate
with MAX_ID the allocation would be correct but the meaning
is wrong.

So for array allocation the code should use LED_NUM_COLOR_IDS
which will allocate MAX_ID + 1.  Whent the code needs to validate
that the color ID is not out of bounds then the code should use
LED_COLOR_MAX_ID.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 drivers/leds/led-core.c           | 4 ++--
 drivers/leds/leds.h               | 2 +-
 include/dt-bindings/leds/common.h | 3 ++-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
index f1f718dbe0f8..4e57d47c97e0 100644
--- a/drivers/leds/led-core.c
+++ b/drivers/leds/led-core.c
@@ -25,7 +25,7 @@ EXPORT_SYMBOL_GPL(leds_list_lock);
 LIST_HEAD(leds_list);
 EXPORT_SYMBOL_GPL(leds_list);
 
-const char * const led_colors[LED_COLOR_ID_MAX] = {
+const char * const led_colors[LED_NUM_COLOR_IDS] = {
 	[LED_COLOR_ID_WHITE] = "white",
 	[LED_COLOR_ID_RED] = "red",
 	[LED_COLOR_ID_GREEN] = "green",
@@ -385,7 +385,7 @@ static void led_parse_fwnode_props(struct device *dev,
 		ret = fwnode_property_read_u32(fwnode, "color", &props->color);
 		if (ret)
 			dev_err(dev, "Error parsing 'color' property (%d)\n", ret);
-		else if (props->color >= LED_COLOR_ID_MAX)
+		else if (props->color > LED_COLOR_ID_MAX)
 			dev_err(dev, "LED color identifier out of range\n");
 		else
 			props->color_present = true;
diff --git a/drivers/leds/leds.h b/drivers/leds/leds.h
index 2d9eb48bbed9..2c493efc8f55 100644
--- a/drivers/leds/leds.h
+++ b/drivers/leds/leds.h
@@ -33,6 +33,6 @@ ssize_t led_trigger_write(struct file *filp, struct kobject *kobj,
 extern struct rw_semaphore leds_list_lock;
 extern struct list_head leds_list;
 extern struct list_head trigger_list;
-extern const char * const led_colors[LED_COLOR_ID_MAX];
+extern const char * const led_colors[LED_NUM_COLOR_IDS];
 
 #endif	/* __LEDS_H_INCLUDED */
diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h
index 9e1256a7c1bf..ce82f0b5f6d6 100644
--- a/include/dt-bindings/leds/common.h
+++ b/include/dt-bindings/leds/common.h
@@ -29,7 +29,8 @@
 #define LED_COLOR_ID_VIOLET	5
 #define LED_COLOR_ID_YELLOW	6
 #define LED_COLOR_ID_IR		7
-#define LED_COLOR_ID_MAX	8
+#define LED_COLOR_ID_MAX	LED_COLOR_ID_IR
+#define LED_NUM_COLOR_IDS	(LED_COLOR_ID_MAX + 1)
 
 /* Standard LED functions */
 #define LED_FUNCTION_ACTIVITY "activity"
-- 
2.22.0.214.g8dca754b1e


             reply	other threads:[~2019-10-02 16:33 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-02 16:34 Dan Murphy [this message]
2019-10-02 18:36 ` [RFC PATCH] leds: core: Fix LED_COLOR_MAX_ID Pavel Machek
2019-10-02 18:42   ` Dan Murphy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191002163400.25317-1-dmurphy@ti.com \
    --to=dmurphy@ti.com \
    --cc=jacek.anaszewski@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=pavel@ucw.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox