mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] coretemp: Check for null before removing sysfs attrs
@ 2022-11-17 16:23 Phil Auld
  2022-11-20 13:49 ` Guenter Roeck
  0 siblings, 1 reply; 2+ messages in thread
From: Phil Auld @ 2022-11-17 16:23 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-hwmon, Fenghua Yu, Jean Delvare, Guenter Roeck, pauld

If coretemp_add_core() gets an error then pdata->core_data[indx]
is already NULL and has been kfreed. Don't pass that to
sysfs_remove_group() as that will crash in sysfs_remove_group().

[Shortened for readability]
[91854.020159] sysfs: cannot create duplicate filename '/devices/platform/coretemp.0/hwmon/hwmon2/temp20_label'
<cpu offline>
[91855.126115] BUG: kernel NULL pointer dereference, address: 0000000000000188
[91855.165103] #PF: supervisor read access in kernel mode
[91855.194506] #PF: error_code(0x0000) - not-present page
[91855.224445] PGD 0 P4D 0
[91855.238508] Oops: 0000 [#1] PREEMPT SMP PTI
...
[91855.342716] RIP: 0010:sysfs_remove_group+0xc/0x80
...
[91855.796571] Call Trace:
[91855.810524]  coretemp_cpu_offline+0x12b/0x1dd [coretemp]
[91855.841738]  ? coretemp_cpu_online+0x180/0x180 [coretemp]
[91855.871107]  cpuhp_invoke_callback+0x105/0x4b0
[91855.893432]  cpuhp_thread_fun+0x8e/0x150
...

Fix this by checking for NULL first.

Signed-off-by: Phil Auld <pauld@redhat.com>
Cc: linux-hwmon@vger.kernel.org
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Jean Delvare <jdelvare@suse.com>
Cc: Guenter Roeck <linux@roeck-us.net>
---
 drivers/hwmon/coretemp.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
index 8bf32c6c85d9..30a19d711f89 100644
--- a/drivers/hwmon/coretemp.c
+++ b/drivers/hwmon/coretemp.c
@@ -533,6 +533,10 @@ static void coretemp_remove_core(struct platform_data *pdata, int indx)
 {
 	struct temp_data *tdata = pdata->core_data[indx];
 
+	/* if we errored on add then this is already gone */
+	if (!tdata)
+		return;
+
 	/* Remove the sysfs attributes */
 	sysfs_remove_group(&pdata->hwmon_dev->kobj, &tdata->attr_group);
 
-- 
2.31.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] coretemp: Check for null before removing sysfs attrs
  2022-11-17 16:23 [PATCH] coretemp: Check for null before removing sysfs attrs Phil Auld
@ 2022-11-20 13:49 ` Guenter Roeck
  0 siblings, 0 replies; 2+ messages in thread
From: Guenter Roeck @ 2022-11-20 13:49 UTC (permalink / raw)
  To: Phil Auld; +Cc: linux-kernel, linux-hwmon, Fenghua Yu, Jean Delvare

On Thu, Nov 17, 2022 at 11:23:13AM -0500, Phil Auld wrote:
> If coretemp_add_core() gets an error then pdata->core_data[indx]
> is already NULL and has been kfreed. Don't pass that to
> sysfs_remove_group() as that will crash in sysfs_remove_group().
> 
> [Shortened for readability]
> [91854.020159] sysfs: cannot create duplicate filename '/devices/platform/coretemp.0/hwmon/hwmon2/temp20_label'
> <cpu offline>
> [91855.126115] BUG: kernel NULL pointer dereference, address: 0000000000000188
> [91855.165103] #PF: supervisor read access in kernel mode
> [91855.194506] #PF: error_code(0x0000) - not-present page
> [91855.224445] PGD 0 P4D 0
> [91855.238508] Oops: 0000 [#1] PREEMPT SMP PTI
> ...
> [91855.342716] RIP: 0010:sysfs_remove_group+0xc/0x80
> ...
> [91855.796571] Call Trace:
> [91855.810524]  coretemp_cpu_offline+0x12b/0x1dd [coretemp]
> [91855.841738]  ? coretemp_cpu_online+0x180/0x180 [coretemp]
> [91855.871107]  cpuhp_invoke_callback+0x105/0x4b0
> [91855.893432]  cpuhp_thread_fun+0x8e/0x150
> ...
> 
> Fix this by checking for NULL first.
> 
> Signed-off-by: Phil Auld <pauld@redhat.com>
> Cc: linux-hwmon@vger.kernel.org
> Cc: Fenghua Yu <fenghua.yu@intel.com>
> Cc: Jean Delvare <jdelvare@suse.com>
> Cc: Guenter Roeck <linux@roeck-us.net>

Applied.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-11-20 13:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-17 16:23 [PATCH] coretemp: Check for null before removing sysfs attrs Phil Auld
2022-11-20 13:49 ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®