Description
In the Linux kernel, the following vulnerability has been resolved: m68k: Only force 030 bus error if PC not in exception table __get_kernel_nofault() does copy data in supervisor mode when forcing a task backtrace log through /proc/sysrq_trigger. This is expected cause a bus error exception on e.g. NULL pointer dereferencing when logging a kernel task has no workqueue associated. This bus error ought to be ignored. Our 030 bus error handler is ill equipped to deal with this: Whenever ssw indicates a kernel mode access on a data fault, we don't even attempt to handle the fault and instead always send a SEGV signal (or panic). As a result, the check for exception handling at the fault PC (buried in send_sig_fault() which gets called from do_page_fault() eventually) is never used. In contrast, both 040 and 060 access error handlers do not care whether a fault happened on supervisor mode access, and will call do_page_fault() on those, ultimately honoring the exception table. Add a check in bus_error030 to call do_page_fault() in case we do have an entry for the fault PC in our exception table. I had attempted a fix for this earlier in 2019 that did rely on testing pagefault_disabled() (see link below) to achieve the same thing, but this patch should be more generic. Tested on 030 Atari Falcon.
Product status
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 1a6059f5ed57f48edfe7159404ff7d538d9d405b
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before f55cb52ec98b22125f5bda36391edb8894f7e8cf
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 2100e374251a8fc00cce1916cfc50f3cb652cbe3
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before df1da53a7e98f0b2a0eb2241c154f148f2f2c1d8
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 8bf8d5dade4c5e1d8a2386f29253ed28b5d87735
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 54fa25ffab2b700df5abd58c136d64a912c53953
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before ec15405b80fc15ffc87a23d01378ae061c1aba07
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before e36a82bebbf7da814530d5a179bef9df5934b717
4.14.312 (semver)
4.19.280 (semver)
5.4.240 (semver)
5.10.177 (semver)
5.15.105 (semver)
6.1.22 (semver)
6.2.9 (semver)
6.3 (original_commit_for_fix)
References
git.kernel.org/...c/1a6059f5ed57f48edfe7159404ff7d538d9d405b
git.kernel.org/...c/f55cb52ec98b22125f5bda36391edb8894f7e8cf
git.kernel.org/...c/2100e374251a8fc00cce1916cfc50f3cb652cbe3
git.kernel.org/...c/df1da53a7e98f0b2a0eb2241c154f148f2f2c1d8
git.kernel.org/...c/8bf8d5dade4c5e1d8a2386f29253ed28b5d87735
git.kernel.org/...c/54fa25ffab2b700df5abd58c136d64a912c53953
git.kernel.org/...c/ec15405b80fc15ffc87a23d01378ae061c1aba07
git.kernel.org/...c/e36a82bebbf7da814530d5a179bef9df5934b717
Data based on CVE®. Copyright © 1999-2025, The MITRE Corporation. All rights reserved.