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
next parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.