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

Commit 00d28301 authored by Subbaraman Narayanamurthy's avatar Subbaraman Narayanamurthy
Browse files

leds: qpnp-flash-v2: fix a possible NULL pointer access



qpnp_flash_led_prepare() is a global function used by clients
like camera flash driver. Add a check to validate the trigger
pointer before using it to obtain LED class device.

Change-Id: I72c0690c13629cb3dd2ef6b9fd084835e58aa410
Signed-off-by: default avatarSubbaraman Narayanamurthy <subbaram@codeaurora.org>
parent 9862ec5a
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -1102,16 +1102,22 @@ static int qpnp_flash_led_switch_set(struct flash_switch_data *snode, bool on)
int qpnp_flash_led_prepare(struct led_trigger *trig, int options,
					int *max_current)
{
	struct led_classdev *led_cdev = trigger_to_lcdev(trig);
	struct led_classdev *led_cdev;
	struct flash_switch_data *snode;
	struct qpnp_flash_led *led;
	int rc;

	if (!led_cdev) {
	if (!trig) {
		pr_err("Invalid led_trigger provided\n");
		return -EINVAL;
	}

	led_cdev = trigger_to_lcdev(trig);
	if (!led_cdev) {
		pr_err("Invalid led_cdev in trigger %s\n", trig->name);
		return -EINVAL;
	}

	snode = container_of(led_cdev, struct flash_switch_data, cdev);
	led = dev_get_drvdata(&snode->pdev->dev);