Re: [PATCH] sh: hp6xx: unset apm_get_power_status on unload
Artur Rojek <[email protected]>
| Newsgroups | gmane.linux.ports.sh.devel,gmane.linux.kernel |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]>
>> ---
>> 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):
Acked-by: Artur Rojek <[email protected]>
Cheers,
Artur
>
> Adrian