瀏覽代碼

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>
David Lin 9 年之前
父節點
當前提交
0e352343c2
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      drivers/staging/greybus/light.c

+ 3 - 2
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),