summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lin <dtwlin@google.com>2016-08-22 15:51:11 -0700
committerGreg Kroah-Hartman <gregkh@google.com>2016-08-26 13:16:11 +0200
commit0e352343c2e371ad618d8850f542e9ca230e3aa6 (patch)
tree37856ec34f57f6299b1637febcb3d99fb4c65b6a
parentf0ec8cd5eb49e0360ce6ba865d5f2267b28d1f84 (diff)
downloadop-kernel-dev-0e352343c2e371ad618d8850f542e9ca230e3aa6.zip
op-kernel-dev-0e352343c2e371ad618d8850f542e9ca230e3aa6.tar.gz
greybus: light: fix incorrect led attribute files allocation
Fix incorrect attribute size when the channel supports fader, as well as fixing the issue that the attribute list is not null terminated. Testing Done: - Verified by setting brightness and color on red/green/blue leds of the device class test board. Signed-off-by: David Lin <dtwlin@google.com> Reviewed-by: Rui Miguel Silva <rui.silva@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
-rw-r--r--drivers/staging/greybus/light.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/staging/greybus/light.c b/drivers/staging/greybus/light.c
index a57d593..85bf555 100644
--- a/drivers/staging/greybus/light.c
+++ b/drivers/staging/greybus/light.c
@@ -293,13 +293,14 @@ static int channel_attr_groups_set(struct gb_channel *channel,
if (channel->flags & GB_LIGHT_CHANNEL_MULTICOLOR)
size++;
if (channel->flags & GB_LIGHT_CHANNEL_FADER)
- size++;
+ size += 2;
if (!size)
return 0;
/* Set attributes based in the channel flags */
- channel->attrs = kcalloc(size, sizeof(**channel->attrs), GFP_KERNEL);
+ channel->attrs = kcalloc(size + 1, sizeof(**channel->attrs),
+ GFP_KERNEL);
if (!channel->attrs)
return -ENOMEM;
channel->attr_group = kcalloc(1, sizeof(*channel->attr_group),
OpenPOWER on IntegriCloud