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

Commit f7d60162 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

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

parents d1d4a1d6 00d28301
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static ssize_t brightness_store(struct device *dev,
	if (ret)
		goto unlock;

	if (state == LED_OFF)
	if (state == LED_OFF && !(led_cdev->flags & LED_KEEP_TRIGGER))
		led_trigger_remove(led_cdev);
	led_set_brightness(led_cdev, state);
	led_cdev->usr_brightness_req = state;
+10 −3
Original line number Diff line number Diff line
/* Copyright (c) 2016, The Linux Foundation. All rights reserved.
/* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -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);

@@ -1569,6 +1575,7 @@ static int qpnp_flash_led_parse_and_register_switch(struct qpnp_flash_led *led,
	snode->pdev = led->pdev;
	snode->cdev.brightness_set = qpnp_flash_led_brightness_set;
	snode->cdev.brightness_get = qpnp_flash_led_brightness_get;
	snode->cdev.flags |= LED_KEEP_TRIGGER;
	rc = led_classdev_register(&led->pdev->dev, &snode->cdev);
	if (rc < 0) {
		pr_err("Unable to register led switch node\n");
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ struct led_classdev {
#define SET_BRIGHTNESS_ASYNC	(1 << 21)
#define SET_BRIGHTNESS_SYNC	(1 << 22)
#define LED_DEV_CAP_FLASH	(1 << 23)
#define LED_KEEP_TRIGGER	(1 << 24)

	/* Set LED brightness level */
	/* Must not sleep, use a workqueue if needed */