linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Josef Johansson <josef@oderland.se>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-i2c@vger.kernel.org, Wolfram Sang <wsa@kernel.org>
Subject: Re: [PATCH v3 1/1] i2c: scmi: Replace open coded device_get_match_data()
Date: Tue, 16 Aug 2022 08:03:33 +0200	[thread overview]
Message-ID: <4d2d5b04-0b6c-1cb1-a63f-dc06dfe1b5da@oderland.se> (raw)
In-Reply-To: <20220708120958.74034-1-andriy.shevchenko () linux ! intel ! com>

On 7/8/22 14:09, Andy Shevchenko wrote:

> Replace open coded device_get_match_data() in acpi_smbus_cmi_add().
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> v2: used device_get_match_data()
> v3: fixed couple of warnings (LKP)
>   drivers/i2c/busses/i2c-scmi.c | 9 ++-------
>   1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-scmi.c b/drivers/i2c/busses/i2c-scmi.c
> index 6746aa46d96c..79798fc7462a 100644
> --- a/drivers/i2c/busses/i2c-scmi.c
> +++ b/drivers/i2c/busses/i2c-scmi.c
> @@ -30,7 +30,7 @@ struct acpi_smbus_cmi {
>   	u8 cap_info:1;
>   	u8 cap_read:1;
>   	u8 cap_write:1;
> -	struct smbus_methods_t *methods;
> +	const struct smbus_methods_t *methods;
>   };
>   
>   static const struct smbus_methods_t smbus_methods = {
> @@ -361,7 +361,6 @@ static acpi_status acpi_smbus_cmi_query_methods(acpi_handle handle, u32 level,
>   static int acpi_smbus_cmi_add(struct acpi_device *device)
>   {
>   	struct acpi_smbus_cmi *smbus_cmi;
> -	const struct acpi_device_id *id;
>   	int ret;
>   
>   	smbus_cmi = kzalloc(sizeof(struct acpi_smbus_cmi), GFP_KERNEL);
> @@ -369,6 +368,7 @@ static int acpi_smbus_cmi_add(struct acpi_device *device)
>   		return -ENOMEM;
>   
>   	smbus_cmi->handle = device->handle;
> +	smbus_cmi->methods = device_get_match_data(&device->dev);
>   	strcpy(acpi_device_name(device), ACPI_SMBUS_HC_DEVICE_NAME);
>   	strcpy(acpi_device_class(device), ACPI_SMBUS_HC_CLASS);
>   	device->driver_data = smbus_cmi;
> @@ -376,11 +376,6 @@ static int acpi_smbus_cmi_add(struct acpi_device *device)
>   	smbus_cmi->cap_read = 0;
>   	smbus_cmi->cap_write = 0;
>   
> -	for (id = acpi_smbus_cmi_ids; id->id[0]; id++)
> -		if (!strcmp(id->id, acpi_device_hid(device)))
> -			smbus_cmi->methods =
> -				(struct smbus_methods_t *) id->driver_data;
> -
>   	acpi_walk_namespace(ACPI_TYPE_METHOD, smbus_cmi->handle, 1,
>   			    acpi_smbus_cmi_query_methods, NULL, smbus_cmi, NULL);
>   

Hi,

I tried build Linux 6.0 and run under Xen 4.14.5. I got a kernel null pointer dereferenced while booting. Reverting this commit allowed the system to boot.

Since I do not have any way of capturing the error except camera (it's a long message), here's my best try.

BUG: kernel NULL pointer dereference, address: 0000000000000000

#PF: supervisor read access in kernel mode

#PF: error_code(0x0800) - not-present page

PGD 0 P4D 0

Oops: 0000 [#1] PREEMPT SMP NOPT

CPU: 3 PID: 1879 Comm: systemd-udevd Tainted: G  W 6.0.0-1.fc32.quebs.x86_64 #1

RIP: e838:acpi_smbus_cmi_add_cap.isra.0+0x45/0x1a0 [i2c_scmi]

Code: 84 00 00 4c 8b 37 4c 89 e7 65 48 8b 04 25 28 00 00 00 48 89 44 24 10 31 c0 48 c7 04 24 ff ff ff ff 48 c7 44 24 08 00 00 00 00 <4c>

RSP: e02b:ffffc98841d1bad8 EFLAGS: 00010246

RAX: 0000000000000000 RBX: ffff88810abb6000 RCX: 0000000000000000

RDX: ffffc90041d1bb23 RSI: ffffc90041d1bb33 RDI: ffffc90041d1bb33

RBP: 0000000000000000 R08: ffff88818127169c R09: 0000000000000000

R10: ffff8881020f56f0 R11: 0000000000000000 R12: ffffc90041d1bb33

R13: 0000000000000000 r14: fffff888181271cc0 R15: 0000000000000000

FS:  00007572507ceb00(0000) GS: ffff8881408c0000(0000) knlGS: 0000000000000000

CS:   e830 DS: 0000 ES: 0000 CR0: 0000000000050033

CR2: 0000000000000000 CR3: 000000010ab1e000 CR4: 0000000000010660

Call Trace:

   <TASK>

   acp_smbus_cmi_query_methods+0x78/0x7f [i2c_scmi]

   acpi_ns_walk_namespace+0xea/0x1cb

   ? acpi_smbus_cmi_add_cap.isra.0+0x1a8/0x1a0 [i2c_scmi]

   ? acpi_smbus_cmi_add_cap.isra.0+0x1a8/0x1a0 [i2c_scmi]

   acpi_ns_walk_namespace+0x99/0xcf

   acpi_smbus_cmi_add+0xad/0x150 [i2c_scmi]

   acpi_device_probe+0xx45/0x160

   call_driver-probe+0x24/0xe0

   really_probe+0xcf/0x2d0

   ? pm_runtime_barrier+0x50/0x90

   __driver_probe_device+0x70/0x180

   driver_probe_device+0x1e/0x90

   __driver_attach+0xc4/0x1e0

   ? __device_attach_driver+0x??

   ? __device_attach_driver+??

   bus_for-each_dev

   bus_add_driver

   driver_register

   ??

   do_one_initcall

   do_init_module

   __do_sys_finit_??

   do_syscall_64

   ? do_syscall_64

   ? syscall_exit_to_??

   ? do_syscall_64

   entry_SYSCALL_64_after??

RIP:

Code:

RSP:

RAX

RZBX

?

R10

R13

  </TASK>

Modules linked in:

CR2: 0000000000000000

---[ end trace

RIP: e830: acpi_smbis_cmi_add_cap.isra

Code:..

RSP..

..

CR2: ?

Kernel panic - not syncing: Fatal exception

Kernel Offset: disabled

   

Cheers

Josef


       reply	other threads:[~2022-08-16  8:17 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20220708120958.74034-1-andriy.shevchenko () linux ! intel ! com>
2022-08-16  6:03 ` Josef Johansson [this message]
2022-08-16 10:18   ` [PATCH v3 1/1] i2c: scmi: Replace open coded device_get_match_data() Wolfram Sang
2022-08-16 10:20     ` Josef Johansson
2022-08-16 10:27       ` Wolfram Sang
2022-08-23 14:29     ` Andy Shevchenko
2022-08-25 15:14   ` Andy Shevchenko
2022-08-25 16:54     ` Josef Johansson
2022-08-25 17:41       ` Andy Shevchenko
2022-08-25 18:16         ` Josef Johansson
2022-07-08 12:09 Andy Shevchenko
2022-07-16 12:30 ` Wolfram Sang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4d2d5b04-0b6c-1cb1-a63f-dc06dfe1b5da@oderland.se \
    --to=josef@oderland.se \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=wsa@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).