mbox series

[RESEND,0/4] Fix oops about sleeping in led_trigger_blink()

Message ID 20230510162234.291439-1-hdegoede@redhat.com
Headers show
Series Fix oops about sleeping in led_trigger_blink() | expand

Message

Hans de Goede May 10, 2023, 4:22 p.m. UTC
Hi All,

This is a resend with al the subsys maintainers of files touched
by the small led_trigger_blink() / led_trigger_blink_oneshot()
API/prototype change in the first patch in this series.

ARCNet, power-supply, USB, MAC80211 and netfilter maintainers,
may we please have your ack for merging patch 1/4 through Lee's
LED tree: https://git.kernel.org/pub/scm/linux/kernel/git/lee/leds.git/
?

Orginal cover letter:

Here is a patch series to fix an oops about sleeping in led_trigger_blink()
+ one other small bugfix.

Fixes: 0b9536c95709 ("leds: Add ability to blink via simple trigger")

tag, but Fixes tags tend to lead to patches getting automatically added
to the stable series and I would prefer to see this series get some
significant testing time in mainline first, so I have chosen to omit
the tag.

Regards,

Hans


Hans de Goede (4):
  leds: Change led_trigger_blink[_oneshot]() delay parameters to
    pass-by-value
  leds: Fix set_brightness_delayed() race
  leds: Fix oops about sleeping in led_trigger_blink()
  leds: Clear LED_INIT_DEFAULT_TRIGGER when clearing current trigger

 drivers/leds/led-core.c                  | 81 ++++++++++++++++++++----
 drivers/leds/led-triggers.c              | 17 ++---
 drivers/leds/trigger/ledtrig-disk.c      |  9 +--
 drivers/leds/trigger/ledtrig-mtd.c       |  8 +--
 drivers/net/arcnet/arcnet.c              |  8 +--
 drivers/power/supply/power_supply_leds.c |  5 +-
 drivers/usb/common/led.c                 |  4 +-
 include/linux/leds.h                     | 43 ++++++++++---
 net/mac80211/led.c                       |  2 +-
 net/mac80211/led.h                       |  8 +--
 net/netfilter/xt_LED.c                   |  3 +-
 11 files changed, 125 insertions(+), 63 deletions(-)

Comments

Florian Westphal May 10, 2023, 9:43 p.m. UTC | #1
Hans de Goede <hdegoede@redhat.com> wrote:
> led_blink_set[_oneshot]()'s delay_on and delay_off function parameters
> are pass by reference, so that hw-blink implementations can report
> back the actual achieved delays when the values have been rounded
> to something the hw supports.
> 
> This is really only interesting for the sysfs API / the timer trigger.
> Other triggers don't really care about this and none of the callers of
> led_trigger_blink[_oneshot]() do anything with the returned delay values.
> 
> Change the led_trigger_blink[_oneshot]() delay parameters to pass-by-value,
> there are 2 reasons for this:
> 
> 1. led_cdev->blink_set() may sleep, while led_trigger_blink() may not.
> So on hw where led_cdev->blink_set() sleeps the call needs to be deferred
> to a workqueue, in which case the actual achieved delays are unknown
> (this is a preparation patch for the deferring).
> 
> 2. Since the callers don't care about the actual achieved delays, allowing
> callers to directly pass a value leads to simpler code for most callers.

For netfilter:

Acked-by: Florian Westphal <fw@strlen.de>