Re: [PATCH] drivers: acpi: Fix platform profile driver on !acpi platforms

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 22.05.25 um 16:13 schrieb Alexandre Ghiti:

The platform profile driver is loaded even on platforms that do not have
acpi enabled. The initialization of the sysfs entries was recently moved
from platform_profile_register() to the module init call, and those
entries need acpi_kobj to be initialized which is not the case when acpi
is disabled.

This results in the following warning:

  WARNING: CPU: 5 PID: 1 at fs/sysfs/group.c:131 internal_create_group+0xa22/0xdd8
  Modules linked in:
  CPU: 5 UID: 0 PID: 1 Comm: swapper/0 Tainted: G        W           6.15.0-rc7-dirty #6 PREEMPT
  Tainted: [W]=WARN
  Hardware name: riscv-virtio,qemu (DT)
  epc : internal_create_group+0xa22/0xdd8
   ra : internal_create_group+0xa22/0xdd8

  Call Trace:

  internal_create_group+0xa22/0xdd8
  sysfs_create_group+0x22/0x2e
  platform_profile_init+0x74/0xb2
  do_one_initcall+0x198/0xa9e
  kernel_init_freeable+0x6d8/0x780
  kernel_init+0x28/0x24c
  ret_from_fork+0xe/0x18

Fix this by checking if acpi is enabled before trying to create sysfs
entries.

I already submitted a patch for this problem (see https://lore.kernel.org/linux-acpi/a6d92cdd-4dc3-4080-9ed9-5b1f02f247e0@xxxxxx/T/)
that only disables the legacy sysfs interface while keeping the class-based interface functional
as it does not depend on ACPI at all.

Thank,
Armin Wolf

Fixes: 77be5cacb2c2 ("ACPI: platform_profile: Create class for ACPI platform profile")
Signed-off-by: Alexandre Ghiti <alexghiti@xxxxxxxxxxxx>
---
  drivers/acpi/platform_profile.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c
index ffbfd32f4cf1..b43f4459a4f6 100644
--- a/drivers/acpi/platform_profile.c
+++ b/drivers/acpi/platform_profile.c
@@ -688,6 +688,9 @@ static int __init platform_profile_init(void)
  {
  	int err;
+ if (acpi_disabled)
+		return -EOPNOTSUPP;
+
  	err = class_register(&platform_profile_class);
  	if (err)
  		return err;





[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]
  Powered by Linux