| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2021-47535: drm/msm/a6xx: Allocate enough space for GMU registers |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| drm/msm/a6xx: Allocate enough space for GMU registers |
| |
| In commit 142639a52a01 ("drm/msm/a6xx: fix crashstate capture for |
| A650") we changed a6xx_get_gmu_registers() to read 3 sets of |
| registers. Unfortunately, we didn't change the memory allocation for |
| the array. That leads to a KASAN warning (this was on the chromeos-5.4 |
| kernel, which has the problematic commit backported to it): |
| |
| BUG: KASAN: slab-out-of-bounds in _a6xx_get_gmu_registers+0x144/0x430 |
| Write of size 8 at addr ffffff80c89432b0 by task A618-worker/209 |
| CPU: 5 PID: 209 Comm: A618-worker Tainted: G W 5.4.156-lockdep #22 |
| Hardware name: Google Lazor Limozeen without Touchscreen (rev5 - rev8) (DT) |
| Call trace: |
| dump_backtrace+0x0/0x248 |
| show_stack+0x20/0x2c |
| dump_stack+0x128/0x1ec |
| print_address_description+0x88/0x4a0 |
| __kasan_report+0xfc/0x120 |
| kasan_report+0x10/0x18 |
| __asan_report_store8_noabort+0x1c/0x24 |
| _a6xx_get_gmu_registers+0x144/0x430 |
| a6xx_gpu_state_get+0x330/0x25d4 |
| msm_gpu_crashstate_capture+0xa0/0x84c |
| recover_worker+0x328/0x838 |
| kthread_worker_fn+0x32c/0x574 |
| kthread+0x2dc/0x39c |
| ret_from_fork+0x10/0x18 |
| |
| Allocated by task 209: |
| __kasan_kmalloc+0xfc/0x1c4 |
| kasan_kmalloc+0xc/0x14 |
| kmem_cache_alloc_trace+0x1f0/0x2a0 |
| a6xx_gpu_state_get+0x164/0x25d4 |
| msm_gpu_crashstate_capture+0xa0/0x84c |
| recover_worker+0x328/0x838 |
| kthread_worker_fn+0x32c/0x574 |
| kthread+0x2dc/0x39c |
| ret_from_fork+0x10/0x18 |
| |
| The Linux kernel CVE team has assigned CVE-2021-47535 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 5.9 with commit 142639a52a01e90c512a9a8d2156997e02a65b53 and fixed in 5.10.84 with commit d646856a600e8635ba498f20b194219b158626e8 |
| Issue introduced in 5.9 with commit 142639a52a01e90c512a9a8d2156997e02a65b53 and fixed in 5.15.7 with commit 83e54fcf0b14ca2d869dd37abe1bb6542805f538 |
| Issue introduced in 5.9 with commit 142639a52a01e90c512a9a8d2156997e02a65b53 and fixed in 5.16 with commit b4d25abf9720b69a03465b09d0d62d1998ed6708 |
| |
| 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-2021-47535 |
| 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: |
| drivers/gpu/drm/msm/adreno/a6xx_gpu_state.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/d646856a600e8635ba498f20b194219b158626e8 |
| https://git.kernel.org/stable/c/83e54fcf0b14ca2d869dd37abe1bb6542805f538 |
| https://git.kernel.org/stable/c/b4d25abf9720b69a03465b09d0d62d1998ed6708 |