Re: [PATCH] power: supply: add stubs for notifier registration helpers
Randy Dunlap <[email protected]>
| Newsgroups | org.kernel.vger.linux-pm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 8/5/26 11:54 AM, Elson Serrao wrote:
> power_supply_reg_notifier() and power_supply_unreg_notifier() are declared
> unconditionally, with no fallback when CONFIG_POWER_SUPPLY is disabled.
> Any driver that calls them unconditionally fails to link:
>
> ERROR: modpost: "power_supply_unreg_notifier" [drivers/usb/dwc3/dwc3.ko]
> undefined!
> ERROR: modpost: "power_supply_reg_notifier" [drivers/usb/dwc3/dwc3.ko]
> undefined!
>
> Fix this by adding stub functions for these calls.
>
> Fixes: 7c87ef27af79 ("usb: dwc3: avoid probe deferral when USB power supply is not available")
> Reported-by: Randy Dunlap <[email protected]>
> Closes: https://lore.kernel.org/all/[email protected]/
> Signed-off-by: Elson Serrao <[email protected]>
Tested-by: Randy Dunlap <[email protected]>
Acked-by: Randy Dunlap <[email protected]>
Thanks.
> ---
> include/linux/power_supply.h | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
> index a9c056f13077..e749d2189335 100644
> --- a/include/linux/power_supply.h
> +++ b/include/linux/power_supply.h
> @@ -816,15 +816,18 @@ struct power_supply_battery_info {
> int bti_resistance_tolerance;
> };
>
> +#if IS_ENABLED(CONFIG_POWER_SUPPLY)
> extern int power_supply_reg_notifier(struct notifier_block *nb);
> extern void power_supply_unreg_notifier(struct notifier_block *nb);
> -#if IS_ENABLED(CONFIG_POWER_SUPPLY)
> extern struct power_supply *power_supply_get_by_name(const char *name);
> extern int __must_check power_supply_get_system_batteries(struct device *dev,
> struct power_supply ***psys);
> extern void power_supply_put_system_batteries(struct power_supply **psys, int count);
> extern void power_supply_put(struct power_supply *psy);
> #else
> +static inline int power_supply_reg_notifier(struct notifier_block *nb)
> +{ return -EOPNOTSUPP; }
> +static inline void power_supply_unreg_notifier(struct notifier_block *nb) {}
> static inline void power_supply_put(struct power_supply *psy) {}
> static inline struct power_supply *power_supply_get_by_name(const char *name)
> { return NULL; }
--
~Randy