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 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).