mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 21:30:54 +07:00
tty: vt_ioctl: fix potential Spectre v1
vsa.console is indirectly controlled by user-space, hence leading to a potential exploitation of the Spectre variant 1 vulnerability. This issue was detected with the help of Smatch: drivers/tty/vt/vt_ioctl.c:711 vt_ioctl() warn: potential spectre issue 'vc_cons' [r] Fix this by sanitizing vsa.console before using it to index vc_cons Notice that given that speculation windows are large, the policy is to kill the speculation on the first load and not worry if it can be completed with a dependent load/store [1]. [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2 Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> Reviewed-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
fe32416790
commit
e97267cb4d
@ -32,6 +32,8 @@
|
|||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
|
|
||||||
|
#include <linux/nospec.h>
|
||||||
|
|
||||||
#include <linux/kbd_kern.h>
|
#include <linux/kbd_kern.h>
|
||||||
#include <linux/vt_kern.h>
|
#include <linux/vt_kern.h>
|
||||||
#include <linux/kbd_diacr.h>
|
#include <linux/kbd_diacr.h>
|
||||||
@ -700,6 +702,8 @@ int vt_ioctl(struct tty_struct *tty,
|
|||||||
if (vsa.console == 0 || vsa.console > MAX_NR_CONSOLES)
|
if (vsa.console == 0 || vsa.console > MAX_NR_CONSOLES)
|
||||||
ret = -ENXIO;
|
ret = -ENXIO;
|
||||||
else {
|
else {
|
||||||
|
vsa.console = array_index_nospec(vsa.console,
|
||||||
|
MAX_NR_CONSOLES + 1);
|
||||||
vsa.console--;
|
vsa.console--;
|
||||||
console_lock();
|
console_lock();
|
||||||
ret = vc_allocate(vsa.console);
|
ret = vc_allocate(vsa.console);
|
||||||
|
Loading…
Reference in New Issue
Block a user