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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
f2325ecebc5b7988fd49968bd3a660fd1594dc84 to < 1a6059f5ed57f48edfe7159404ff7d538d9d405baffectedf2325ecebc5b7988fd49968bd3a660fd1594dc84 to < f55cb52ec98b22125f5bda36391edb8894f7e8cfaffectedf2325ecebc5b7988fd49968bd3a660fd1594dc84 to < 2100e374251a8fc00cce1916cfc50f3cb652cbe3affectedf2325ecebc5b7988fd49968bd3a660fd1594dc84 to < df1da53a7e98f0b2a0eb2241c154f148f2f2c1d8affectedf2325ecebc5b7988fd49968bd3a660fd1594dc84 to < 8bf8d5dade4c5e1d8a2386f29253ed28b5d87735affectedf2325ecebc5b7988fd49968bd3a660fd1594dc84 to < 54fa25ffab2b700df5abd58c136d64a912c53953affectedf2325ecebc5b7988fd49968bd3a660fd1594dc84 to < ec15405b80fc15ffc87a23d01378ae061c1aba07affectedf2325ecebc5b7988fd49968bd3a660fd1594dc84 to < e36a82bebbf7da814530d5a179bef9df5934b717affected
Linux Linux
Default version status: affected
2.6.18affected0 to < 2.6.18unaffected4.14.312 to ≤ 4.14.*unaffected4.19.280 to ≤ 4.19.*unaffected5.4.240 to ≤ 5.4.*unaffected5.10.177 to ≤ 5.10.*unaffected5.15.105 to ≤ 5.15.*unaffected6.1.22 to ≤ 6.1.*unaffected6.2.9 to ≤ 6.2.*unaffected6.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/1a6059f5ed57f48edfe7159404ff7d538d9d405b ↗
- https://git.kernel.org/stable/c/f55cb52ec98b22125f5bda36391edb8894f7e8cf ↗
- https://git.kernel.org/stable/c/2100e374251a8fc00cce1916cfc50f3cb652cbe3 ↗
- https://git.kernel.org/stable/c/df1da53a7e98f0b2a0eb2241c154f148f2f2c1d8 ↗
- https://git.kernel.org/stable/c/8bf8d5dade4c5e1d8a2386f29253ed28b5d87735 ↗
- https://git.kernel.org/stable/c/54fa25ffab2b700df5abd58c136d64a912c53953 ↗
- https://git.kernel.org/stable/c/ec15405b80fc15ffc87a23d01378ae061c1aba07 ↗
- https://git.kernel.org/stable/c/e36a82bebbf7da814530d5a179bef9df5934b717 ↗