From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Gavin Shan <gshan@redhat.com>
Cc: <linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <yury.norov@gmail.com>,
<linux@rasmusvillemoes.dk>, <salil.mehta@huawei.com>,
<shan.gavin@gmail.com>
Subject: Re: [PATCH] cpumask: Fix crash on updating CPU enabled mask
Date: Thu, 8 Aug 2024 09:41:08 +0100 [thread overview]
Message-ID: <20240808094108.00004b97@Huawei.com> (raw)
In-Reply-To: <20240808040808.647316-1-gshan@redhat.com>
On Thu, 8 Aug 2024 14:08:08 +1000
Gavin Shan <gshan@redhat.com> wrote:
> The CPU enabled mask instead of the CPU possible mask should be used
> by set_cpu_enabled(). Otherwise, we run into crash due to write to
> the read-only CPU possible mask when vCPU is hot added on ARM64.
>
> (qemu) device_add host-arm-cpu,id=cpu1,socket-id=1
> Unable to handle kernel write to read-only memory at virtual address ffff800080fa7190
> :
> Call trace:
> register_cpu+0x1a4/0x2e8
> arch_register_cpu+0x84/0xd8
> acpi_processor_add+0x480/0x5b0
> acpi_bus_attach+0x1c4/0x300
> acpi_dev_for_one_check+0x3c/0x50
> device_for_each_child+0x68/0xc8
> acpi_dev_for_each_child+0x48/0x80
> acpi_bus_attach+0x84/0x300
> acpi_bus_scan+0x74/0x220
> acpi_scan_rescan_bus+0x54/0x88
> acpi_device_hotplug+0x208/0x478
> acpi_hotplug_work_fn+0x2c/0x50
> process_one_work+0x15c/0x3c0
> worker_thread+0x2ec/0x400
> kthread+0x120/0x130
> ret_from_fork+0x10/0x20
>
> Fix it by passing the CPU enabled mask instead of the CPU possible
> mask to set_cpu_enabled().
>
> Fixes: 51c4767503d5 ("Merge tag 'bitmap-6.11-rc1' of https://github.com:/norov/linux")
> Signed-off-by: Gavin Shan <gshan@redhat.com>
Thanks Gavin!
We'd flagged the merge conflict but thought we'd chase it with a patch adding
set_cpu_enabled() as you have it fixed below.
I completely missed that Linus took a different path whilst resolving the conflict
to https://lore.kernel.org/all/20240701175051.0ef5d901@canb.auug.org.au/
which was what Stephen did for linux-next (which would have needed a follow up to
use the new infrastructure.
Anyhow, all's well that ends well.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> include/linux/cpumask.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
> index 801a7e524113..53158de44b83 100644
> --- a/include/linux/cpumask.h
> +++ b/include/linux/cpumask.h
> @@ -1037,7 +1037,7 @@ void init_cpu_online(const struct cpumask *src);
> assign_bit(cpumask_check(cpu), cpumask_bits(mask), (val))
>
> #define set_cpu_possible(cpu, possible) assign_cpu((cpu), &__cpu_possible_mask, (possible))
> -#define set_cpu_enabled(cpu, enabled) assign_cpu((cpu), &__cpu_possible_mask, (enabled))
> +#define set_cpu_enabled(cpu, enabled) assign_cpu((cpu), &__cpu_enabled_mask, (enabled))
> #define set_cpu_present(cpu, present) assign_cpu((cpu), &__cpu_present_mask, (present))
> #define set_cpu_active(cpu, active) assign_cpu((cpu), &__cpu_active_mask, (active))
> #define set_cpu_dying(cpu, dying) assign_cpu((cpu), &__cpu_dying_mask, (dying))
next prev parent reply other threads:[~2024-08-08 8:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-08 4:08 [PATCH] cpumask: Fix crash on updating CPU enabled mask Gavin Shan
2024-08-08 8:41 ` Jonathan Cameron [this message]
2024-08-08 17:35 ` Yury Norov
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=20240808094108.00004b97@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=gshan@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=salil.mehta@huawei.com \
--cc=shan.gavin@gmail.com \
--cc=yury.norov@gmail.com \
/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.