Re: [PATCH] sh: hp6xx: unset apm_get_power_status on unload
From: John Paul Adrian Glaubitz
Date: Sat Apr 18 2026 - 15:43:51 EST
Hi Artur,
On Sat, 2026-04-18 at 21:20 +0200, Artur Rojek wrote:
> On 2026-04-12 09:30, John Paul Adrian Glaubitz wrote:
> > Hi Ahelenia,
> >
> > On Fri, 2025-10-17 at 00:05 +0200, Ahelenia Ziemiańska wrote:
> > > The API for apm_get_power_status is "call it if it isn't NULL".
> > > If the module is unloaded and it's not unset,
> > > reading /proc/apm will jump into unloaded kernel memory.
> > >
> > > The first commit that added this incompletely refactored
> > > the assigned-to variable in __exit,
> > > the second deleted it instead of fixing it.
> > >
> > > Unset it on unload like drivers/macintosh/apm_emu.c.
> > >
> > > Fixes: 0a9b0db19262 ("[APM] SH: Convert to use shared APM emulation.")
> > > Fixes: 8c8ee8254767 ("sh: hp6xx: APM build fix and new battery
> > > values.")
> > > Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@xxxxxxxxxxxxxxxxxx>
> > > ---
> > > arch/sh/boards/mach-hp6xx/hp6xx_apm.c | 3 +++
> > > 1 file changed, 3 insertions(+)
> > >
> > > diff --git a/arch/sh/boards/mach-hp6xx/hp6xx_apm.c
> > > b/arch/sh/boards/mach-hp6xx/hp6xx_apm.c
> > > index e5c4c7d34139..089eca39c4e6 100644
> > > --- a/arch/sh/boards/mach-hp6xx/hp6xx_apm.c
> > > +++ b/arch/sh/boards/mach-hp6xx/hp6xx_apm.c
> > > @@ -98,6 +98,9 @@ static int __init hp6x0_apm_init(void)
> > >
> > > static void __exit hp6x0_apm_exit(void)
> > > {
> > > + if (apm_get_power_status == hp6x0_apm_get_power_status)
> > > + apm_get_power_status = NULL;
> > > +
> > > free_irq(HP680_BTN_IRQ, 0);
> > > }
> > >
> >
> > Let's CC Artur Rojek who has worked on the hp6xx code before and should
> > give his ACK.
>
> This driver can't be built as a module, so this code is never called.
> But since we can't get rid of module_exit(apm_exit):
Isn't hp6x0_apm_exit() called when the device is being shutdown even when
it's not built as a module?
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913