All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andy@kernel.org>
To: Hans de Goede <hdegoede@redhat.com>
Cc: Mark Gross <markgross@kernel.org>, Pavel Machek <pavel@ucw.cz>,
	Lee Jones <lee@kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	Daniel Scally <djrscally@gmail.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	platform-driver-x86@vger.kernel.org, linux-leds@vger.kernel.org,
	linux-gpio@vger.kernel.org, Kate Hsuan <hpa@redhat.com>,
	Mark Pearson <markpearson@lenovo.com>,
	Andy Yeh <andy.yeh@intel.com>, Yao Hao <yao.hao@intel.com>,
	linux-media@vger.kernel.org
Subject: Re: [PATCH v3 08/11] platform/x86: int3472/discrete: Create a LED class device for the privacy LED
Date: Fri, 16 Dec 2022 19:14:00 +0200	[thread overview]
Message-ID: <Y5ynWBqkhLB2cHYU@smile.fi.intel.com> (raw)
In-Reply-To: <d3d28b30-a364-66eb-7870-06c43d683bb7@redhat.com>

On Fri, Dec 16, 2022 at 05:29:13PM +0100, Hans de Goede wrote:
> On 12/16/22 15:16, Andy Shevchenko wrote:
> > On Fri, Dec 16, 2022 at 12:30:10PM +0100, Hans de Goede wrote:

...

> >> +	if (IS_ERR(int3472->pled.gpio)) {
> >> +		ret = PTR_ERR(int3472->pled.gpio);
> >> +		return dev_err_probe(int3472->dev, ret, "getting privacy LED GPIO\n");
> > 
> > 	return dev_err_probe(...);
> 
> That goes over 100 chars.

The point is you don't need ret to be initialized. Moreover, no-one prevents
you to split the line to two.

> >> +	}

...

> >> +	/* Generate the name, replacing the ':' in the ACPI devname with '_' */
> >> +	snprintf(int3472->pled.name, sizeof(int3472->pled.name),
> >> +		 "%s::privacy_led", acpi_dev_name(int3472->sensor));
> > 
> >> +	for (i = 0; int3472->pled.name[i]; i++) {
> >> +		if (int3472->pled.name[i] == ':') {
> >> +			int3472->pled.name[i] = '_';
> >> +			break;
> >> +		}
> >> +	}
> > 
> > NIH strreplace().
> 
> Please look more careful, quoting from the strreplace() docs:
> 
>  * strreplace - Replace all occurrences of character in string.
> 
> Notice the *all* and we only want to replace the first ':' here,
> because the ':' char has a special meaning in LED class-device-names.

It's still possible to use that, but anyway, the above is still
something NIH.

	char *p;

	p = strchr(name, ':');
	*p = '_';

But either code has an issue if by some reason you need to check if : is ever
present in acpi_dev_name().

The more robust is either to copy acpi_dev_name(), call strreplace(), so you
will be sure that _all_ : from ACPI device name will be covered and then attach
the rest.

...

> >> +void skl_int3472_unregister_pled(struct int3472_discrete_device *int3472)
> >> +{
> >> +	if (IS_ERR_OR_NULL(int3472->pled.classdev.dev))
> >> +		return;
> > 
> > This dups the check inside the _unregister() below, right?
> 
> Right.
> 
> >> +	led_remove_lookup(&int3472->pled.lookup);
> > 
> > With list_del_init() I believe the above check can be droped.
> 
> No it cannot, list_del_init() inside led_remove_lookup() would
> protect against double led_remove_lookup() calls.
> 
> But here we may have a completely uninitialized list_head on
> devices without an INT3472 privacy-led, which will trigger
> either __list_del_entry_valid() errors or lead to NULL
> pointer derefs.

But we can initialize that as well...

> >> +	led_classdev_unregister(&int3472->pled.classdev);
> >> +	gpiod_put(int3472->pled.gpio);
> >> +}

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2022-12-16 17:14 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-16 11:30 [PATCH v3 00/11] leds: lookup-table support + int3472/media privacy LED support Hans de Goede
2022-12-16 11:30 ` [PATCH v3 01/11] leds: led-class: Add missing put_device() to led_put() Hans de Goede
2022-12-16 13:35   ` Andy Shevchenko
2022-12-16 13:55     ` Andy Shevchenko
2022-12-16 15:22       ` Hans de Goede
2022-12-16 11:30 ` [PATCH v3 02/11] leds: led-class: Add __led_get() helper function Hans de Goede
2022-12-16 13:54   ` Andy Shevchenko
2022-12-16 15:46     ` Hans de Goede
2022-12-16 11:30 ` [PATCH v3 03/11] leds: led-class: Add __of_led_get() helper Hans de Goede
2022-12-16 13:50   ` Andy Shevchenko
2022-12-16 15:52     ` Hans de Goede
2022-12-16 16:05       ` Andy Shevchenko
2022-12-16 11:30 ` [PATCH v3 04/11] leds: led-class: Add __devm_led_get() helper Hans de Goede
2022-12-16 11:30 ` [PATCH v3 05/11] leds: led-class: Add generic [devm_]led_get() Hans de Goede
2022-12-16 13:43   ` Andy Shevchenko
2022-12-16 15:54     ` Hans de Goede
2022-12-16 16:07       ` Andy Shevchenko
2022-12-16 16:12         ` Hans de Goede
2022-12-16 14:15   ` Andy Shevchenko
2022-12-18 23:20   ` Linus Walleij
2022-12-16 11:30 ` [PATCH v3 06/11] v4l: subdev: Make the v4l2-subdev core code enable/disable the privacy LED if present Hans de Goede
2022-12-16 13:56   ` Laurent Pinchart
2022-12-16 13:59     ` Laurent Pinchart
2022-12-16 15:45     ` Hans de Goede
2022-12-16 16:44       ` Laurent Pinchart
2022-12-16 16:52         ` Hans de Goede
2022-12-16 14:02   ` Andy Shevchenko
2022-12-16 16:12     ` Hans de Goede
2022-12-16 11:30 ` [PATCH v3 07/11] platform/x86: int3472/discrete: Refactor GPIO to sensor mapping Hans de Goede
2022-12-16 13:57   ` Andy Shevchenko
2022-12-16 16:15     ` Hans de Goede
2022-12-16 16:26       ` Andy Shevchenko
2022-12-16 11:30 ` [PATCH v3 08/11] platform/x86: int3472/discrete: Create a LED class device for the privacy LED Hans de Goede
2022-12-16 14:16   ` Andy Shevchenko
2022-12-16 16:29     ` Hans de Goede
2022-12-16 17:14       ` Andy Shevchenko [this message]
2023-01-11 11:35         ` Hans de Goede
2022-12-16 11:30 ` [PATCH v3 09/11] platform/x86: int3472/discrete: Move GPIO request to skl_int3472_register_clock() Hans de Goede
2022-12-16 14:20   ` Andy Shevchenko
2022-12-16 16:35     ` Hans de Goede
2022-12-16 17:15       ` Andy Shevchenko
2022-12-16 11:30 ` [PATCH v3 10/11] platform/x86: int3472/discrete: Ensure the clk/power enable pins are in output mode Hans de Goede
2022-12-16 11:30 ` [PATCH v3 11/11] platform/x86: int3472/discrete: Get the polarity from the _DSM entry Hans de Goede
2022-12-16 14:57   ` Andy Shevchenko
2022-12-16 14:57     ` Andy Shevchenko
2022-12-16 16:42     ` Hans de Goede
2022-12-16 17:20       ` Andy Shevchenko
2022-12-16 12:02 ` [PATCH v3 00/11] leds: lookup-table support + int3472/media privacy LED support Hans de Goede

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y5ynWBqkhLB2cHYU@smile.fi.intel.com \
    --to=andy@kernel.org \
    --cc=andy.yeh@intel.com \
    --cc=djrscally@gmail.com \
    --cc=hdegoede@redhat.com \
    --cc=hpa@redhat.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=markgross@kernel.org \
    --cc=markpearson@lenovo.com \
    --cc=mchehab@kernel.org \
    --cc=pavel@ucw.cz \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=yao.hao@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.