Skip to content

Commit b31c413

Browse files
Xiaomeng Tonggregkh
authored andcommitted
vt_ioctl: fix potential spectre v1 in VT_DISALLOCATE
In VT_ACTIVATE an almost identical code path has been patched with array_index_nospec. In the VT_DISALLOCATE path, the arg is the user input from a system call argument and lately used as a index for vc_cons[index].d access, which can be reached through path like vt_disallocate->vc_busy or vt_disallocate->vc_deallocate. For consistency both code paths should have the same mitigations applied. Also, the code style is adjusted as suggested by Jiri. Reviewed-by: Jiri Slaby <jirislaby@kernel.org> Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com> Link: https://lore.kernel.org/r/20220314122921.31223-1-xiam0nd.tong@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent f58c252 commit b31c413

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

drivers/tty/vt/vt_ioctl.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -898,11 +898,13 @@ int vt_ioctl(struct tty_struct *tty,
898898
if (arg > MAX_NR_CONSOLES)
899899
return -ENXIO;
900900

901-
if (arg == 0)
901+
if (arg == 0) {
902902
vt_disallocate_all();
903-
else
904-
return vt_disallocate(--arg);
905-
break;
903+
break;
904+
}
905+
906+
arg = array_index_nospec(arg - 1, MAX_NR_CONSOLES);
907+
return vt_disallocate(arg);
906908

907909
case VT_RESIZE:
908910
{

0 commit comments

Comments
 (0)