Linux: arm64: hibernate: pass HVC_SET_VECTORS args to the resume hvc
What fixes it
- 6646418d1032cac25110526161f60d255ed08397LinuxCVE List
- 909e92423db7299e0206232051aa21fe129f65d0LinuxCVE List
- 60a3c319f1127c4d247d4ed235c5d65376d5e745LinuxCVE List
- 955d86e5f3b95b731991fdb84966c50b16314629LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
arm64: hibernate: pass HVC_SET_VECTORS args to the resume hvc
swsusp_arch_suspend_exit() reinstalls the restored kernel's hyp stub vectors with an hvc, but never passes the arguments. x0 is not set to HVC_SET_VECTORS and x1 is not set to the vector address, so the stub dispatch falls through and returns without writing vbar_el2. EL2 is left pointing at the trans_pgd copy of the vectors, a page that swsusp_free() releases right after resume.
Set the arguments up the same way __hyp_set_vectors() does.
Without this fix, Vladimir was able to trigger a hang when resuming from hibernation with CONFIG_PAGE_POISONING=y and page_poison=on.
Text from CVE List
Affected versions 14
- Linuxaffected: 788bfdd97434982b6d575062581e8e72eea755af before 6646418d1032cac25110526161f60d255ed08397CVE List
- Linuxaffected: 788bfdd97434982b6d575062581e8e72eea755af before 909e92423db7299e0206232051aa21fe129f65d0CVE List
- Linuxaffected: 788bfdd97434982b6d575062581e8e72eea755af before 60a3c319f1127c4d247d4ed235c5d65376d5e745CVE List
- Linuxaffected: 788bfdd97434982b6d575062581e8e72eea755af before e80ea8118a073a30ebe7a31bd78938c2b1751accCVE List
- Linuxaffected: 788bfdd97434982b6d575062581e8e72eea755af before d3f8f773312af69eaf4dda106d76d6d42e4362e5CVE List
- Linuxaffected: 788bfdd97434982b6d575062581e8e72eea755af before 955d86e5f3b95b731991fdb84966c50b16314629CVE List
- Linuxaffected: 5.16CVE List
- Linuxunaffected: all versions before 5.16CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.54 through 6.18.*CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 6
- git.kernel.org/stable/c/6646418d1032cac25110526161f60d255ed08397Referencevia CVE List
- git.kernel.org/stable/c/909e92423db7299e0206232051aa21fe129f65d0Referencevia CVE List
- git.kernel.org/stable/c/60a3c319f1127c4d247d4ed235c5d65376d5e745Referencevia CVE List
- git.kernel.org/stable/c/e80ea8118a073a30ebe7a31bd78938c2b1751accReferencevia CVE List
- git.kernel.org/stable/c/d3f8f773312af69eaf4dda106d76d6d42e4362e5Referencevia CVE List
- git.kernel.org/stable/c/955d86e5f3b95b731991fdb84966c50b16314629Referencevia CVE List