[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025061842-CVE-2022-50206-24d2@gregkh>
Date: Wed, 18 Jun 2025 13:04:31 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...nel.org>
Subject: CVE-2022-50206: arm64: fix oops in concurrently setting insn_emulation sysctls
From: Greg Kroah-Hartman <gregkh@...nel.org>
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
arm64: fix oops in concurrently setting insn_emulation sysctls
emulation_proc_handler() changes table->data for proc_dointvec_minmax
and can generate the following Oops if called concurrently with itself:
| Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
| Internal error: Oops: 96000006 [#1] SMP
| Call trace:
| update_insn_emulation_mode+0xc0/0x148
| emulation_proc_handler+0x64/0xb8
| proc_sys_call_handler+0x9c/0xf8
| proc_sys_write+0x18/0x20
| __vfs_write+0x20/0x48
| vfs_write+0xe4/0x1d0
| ksys_write+0x70/0xf8
| __arm64_sys_write+0x20/0x28
| el0_svc_common.constprop.0+0x7c/0x1c0
| el0_svc_handler+0x2c/0xa0
| el0_svc+0x8/0x200
To fix this issue, keep the table->data as &insn->current_mode and
use container_of() to retrieve the insn pointer. Another mutex is
used to protect against the current_mode update but not for retrieving
insn_emulation as table->data is no longer changing.
The Linux kernel CVE team has assigned CVE-2022-50206 to this issue.
Affected and fixed versions
===========================
Fixed in 4.14.291 with commit 9d5fec6ba2e4117d196a8259ab54615ffe562460
Fixed in 4.19.256 with commit b51881b1da57fe9877125dfdd0aac5172958fcfd
Fixed in 5.4.211 with commit 04549063d5701976034d8c2bfda3d3a8cbf0409f
Fixed in 5.10.137 with commit 353b4673d01c512303c45cf2346f630cda73b5c9
Fixed in 5.15.61 with commit cc69ef95988b9ef2fc730ec452a7441efb90ef5e
Fixed in 5.18.18 with commit 6a2fd114678d7fc1b5a0f8865ae98f1c17787455
Fixed in 5.19.2 with commit 07022e07017ee5540f5559b0aeb916e8383c1e1a
Fixed in 6.0 with commit af483947d472eccb79e42059276c4deed76f99a6
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2022-50206
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
arch/arm64/kernel/armv8_deprecated.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/9d5fec6ba2e4117d196a8259ab54615ffe562460
https://git.kernel.org/stable/c/b51881b1da57fe9877125dfdd0aac5172958fcfd
https://git.kernel.org/stable/c/04549063d5701976034d8c2bfda3d3a8cbf0409f
https://git.kernel.org/stable/c/353b4673d01c512303c45cf2346f630cda73b5c9
https://git.kernel.org/stable/c/cc69ef95988b9ef2fc730ec452a7441efb90ef5e
https://git.kernel.org/stable/c/6a2fd114678d7fc1b5a0f8865ae98f1c17787455
https://git.kernel.org/stable/c/07022e07017ee5540f5559b0aeb916e8383c1e1a
https://git.kernel.org/stable/c/af483947d472eccb79e42059276c4deed76f99a6
Powered by blists - more mailing lists