Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 40bbb7e4 authored by Dan Carpenter's avatar Dan Carpenter Committed by Sasha Levin
Browse files

staging: greybus: fix get_channel_from_mode() failure path



[ Upstream commit 34164202a5827f60a203ca9acaf2d9f7d432aac8 ]

The get_channel_from_mode() function is supposed to return the channel
which matches the mode.  But it has a bug where if it doesn't find a
matching channel then it returns the last channel.  It should return
NULL instead.

Also remove an unnecessary NULL check on "channel".

Fixes: 2870b52b ("greybus: lights: add lights implementation")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: default avatarRui Miguel Silva <rmfrfs@gmail.com>
Reviewed-by: default avatarAlex Elder <elder@linaro.org>
Link: https://lore.kernel.org/r/379c0cb4-39e0-4293-8a18-c7b1298e5420@moroto.mountain


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 787e2620
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -102,16 +102,16 @@ static struct led_classdev *get_channel_cdev(struct gb_channel *channel)
static struct gb_channel *get_channel_from_mode(struct gb_light *light,
						u32 mode)
{
	struct gb_channel *channel = NULL;
	struct gb_channel *channel;
	int i;

	for (i = 0; i < light->channels_count; i++) {
		channel = &light->channels[i];
		if (channel && channel->mode == mode)
			break;
	}
		if (channel->mode == mode)
			return channel;
	}
	return NULL;
}

static int __gb_lights_flash_intensity_set(struct gb_channel *channel,
					   u32 intensity)