diff options
author | David Lin <dtwlin@google.com> | 2016-08-22 15:51:11 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@google.com> | 2016-08-26 13:16:11 +0200 |
commit | 0e352343c2e371ad618d8850f542e9ca230e3aa6 (patch) | |
tree | 37856ec34f57f6299b1637febcb3d99fb4c65b6a | |
parent | f0ec8cd5eb49e0360ce6ba865d5f2267b28d1f84 (diff) | |
download | op-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.c | 5 |
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), |