https://github.com/torvalds/linux
Revision 571c30b1a88465a1c85a6f7762609939b9085a15 authored by Thadeu Lima de Souza Cascardo on 28 July 2022, 12:26:02 UTC, committed by Borislav Petkov on 29 July 2022, 08:02:35 UTC
Some cloud hypervisors do not provide IBPB on very recent CPU processors,
including AMD processors affected by Retbleed.

Using IBPB before firmware calls on such systems would cause a GPF at boot
like the one below. Do not enable such calls when IBPB support is not
present.

  EFI Variables Facility v0.08 2004-May-17
  general protection fault, maybe for address 0x1: 0000 [#1] PREEMPT SMP NOPTI
  CPU: 0 PID: 24 Comm: kworker/u2:1 Not tainted 5.19.0-rc8+ #7
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.0.0 02/06/2015
  Workqueue: efi_rts_wq efi_call_rts
  RIP: 0010:efi_call_rts
  Code: e8 37 33 58 ff 41 bf 48 00 00 00 49 89 c0 44 89 f9 48 83 c8 01 4c 89 c2 48 c1 ea 20 66 90 b9 49 00 00 00 b8 01 00 00 00 31 d2 <0f> 30 e8 7b 9f 5d ff e8 f6 f8 ff ff 4c 89 f1 4c 89 ea 4c 89 e6 48
  RSP: 0018:ffffb373800d7e38 EFLAGS: 00010246
  RAX: 0000000000000001 RBX: 0000000000000006 RCX: 0000000000000049
  RDX: 0000000000000000 RSI: ffff94fbc19d8fe0 RDI: ffff94fbc1b2b300
  RBP: ffffb373800d7e70 R08: 0000000000000000 R09: 0000000000000000
  R10: 000000000000000b R11: 000000000000000b R12: ffffb3738001fd78
  R13: ffff94fbc2fcfc00 R14: ffffb3738001fd80 R15: 0000000000000048
  FS:  0000000000000000(0000) GS:ffff94fc3da00000(0000) knlGS:0000000000000000
  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  CR2: ffff94fc30201000 CR3: 000000006f610000 CR4: 00000000000406f0
  Call Trace:
   <TASK>
   ? __wake_up
   process_one_work
   worker_thread
   ? rescuer_thread
   kthread
   ? kthread_complete_and_exit
   ret_from_fork
   </TASK>
  Modules linked in:

Fixes: 28a99e95f55c ("x86/amd: Use IBPB for firmware calls")
Reported-by: Dimitri John Ledkov <dimitri.ledkov@canonical.com>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20220728122602.2500509-1-cascardo@canonical.com
1 parent 5bb6c1d
History
Tip revision: 571c30b1a88465a1c85a6f7762609939b9085a15 authored by Thadeu Lima de Souza Cascardo on 28 July 2022, 12:26:02 UTC
x86/bugs: Do not enable IBPB at firmware entry when IBPB is not available
Tip revision: 571c30b
File Mode Size
bpf
cgroup
configs
debug
dma
entry
events
futex
gcov
irq
kcsan
livepatch
locking
module
power
printk
rcu
sched
time
trace
.gitignore -rw-r--r-- 67 bytes
Kconfig.freezer -rw-r--r-- 92 bytes
Kconfig.hz -rw-r--r-- 1.7 KB
Kconfig.locks -rw-r--r-- 4.9 KB
Kconfig.preempt -rw-r--r-- 4.8 KB
Makefile -rw-r--r-- 5.1 KB
acct.c -rw-r--r-- 15.8 KB
async.c -rw-r--r-- 9.2 KB
audit.c -rw-r--r-- 64.8 KB
audit.h -rw-r--r-- 10.7 KB
audit_fsnotify.c -rw-r--r-- 5.2 KB
audit_tree.c -rw-r--r-- 25.6 KB
audit_watch.c -rw-r--r-- 13.7 KB
auditfilter.c -rw-r--r-- 34.4 KB
auditsc.c -rw-r--r-- 81.6 KB
backtracetest.c -rw-r--r-- 1.9 KB
bounds.c -rw-r--r-- 751 bytes
capability.c -rw-r--r-- 14.8 KB
cfi.c -rw-r--r-- 8.2 KB
compat.c -rw-r--r-- 6.8 KB
configs.c -rw-r--r-- 2.0 KB
context_tracking.c -rw-r--r-- 6.4 KB
cpu.c -rw-r--r-- 65.8 KB
cpu_pm.c -rw-r--r-- 6.1 KB
crash_core.c -rw-r--r-- 11.9 KB
crash_dump.c -rw-r--r-- 1.1 KB
cred.c -rw-r--r-- 24.2 KB
delayacct.c -rw-r--r-- 6.8 KB
dma.c -rw-r--r-- 3.3 KB
exec_domain.c -rw-r--r-- 1.1 KB
exit.c -rw-r--r-- 44.9 KB
extable.c -rw-r--r-- 4.3 KB
fail_function.c -rw-r--r-- 7.0 KB
fork.c -rw-r--r-- 79.4 KB
freezer.c -rw-r--r-- 4.4 KB
gen_kheaders.sh -rwxr-xr-x 3.1 KB
groups.c -rw-r--r-- 4.8 KB
hung_task.c -rw-r--r-- 9.4 KB
iomem.c -rw-r--r-- 4.7 KB
irq_work.c -rw-r--r-- 7.5 KB
jump_label.c -rw-r--r-- 21.4 KB
kallsyms.c -rw-r--r-- 22.2 KB
kcmp.c -rw-r--r-- 5.4 KB
kcov.c -rw-r--r-- 28.9 KB
kexec.c -rw-r--r-- 7.4 KB
kexec_core.c -rw-r--r-- 31.7 KB
kexec_elf.c -rw-r--r-- 11.4 KB
kexec_file.c -rw-r--r-- 32.8 KB
kexec_internal.h -rw-r--r-- 924 bytes
kheaders.c -rw-r--r-- 1.6 KB
kmod.c -rw-r--r-- 5.0 KB
kprobes.c -rw-r--r-- 73.5 KB
ksysfs.c -rw-r--r-- 6.3 KB
kthread.c -rw-r--r-- 41.5 KB
latencytop.c -rw-r--r-- 7.6 KB
module_signature.c -rw-r--r-- 1.1 KB
notifier.c -rw-r--r-- 17.9 KB
nsproxy.c -rw-r--r-- 12.8 KB
padata.c -rw-r--r-- 27.4 KB
panic.c -rw-r--r-- 18.8 KB
params.c -rw-r--r-- 23.1 KB
pid.c -rw-r--r-- 18.2 KB
pid_namespace.c -rw-r--r-- 11.3 KB
platform-feature.c -rw-r--r-- 654 bytes
profile.c -rw-r--r-- 13.3 KB
ptrace.c -rw-r--r-- 36.9 KB
range.c -rw-r--r-- 3.0 KB
reboot.c -rw-r--r-- 31.7 KB
regset.c -rw-r--r-- 1.9 KB
relay.c -rw-r--r-- 30.0 KB
resource.c -rw-r--r-- 48.4 KB
resource_kunit.c -rw-r--r-- 4.3 KB
rseq.c -rw-r--r-- 10.3 KB
scftorture.c -rw-r--r-- 20.0 KB
scs.c -rw-r--r-- 2.9 KB
seccomp.c -rw-r--r-- 63.4 KB
signal.c -rw-r--r-- 123.3 KB
smp.c -rw-r--r-- 34.4 KB
smpboot.c -rw-r--r-- 11.9 KB
smpboot.h -rw-r--r-- 640 bytes
softirq.c -rw-r--r-- 24.1 KB
stackleak.c -rw-r--r-- 4.5 KB
stacktrace.c -rw-r--r-- 10.4 KB
static_call.c -rw-r--r-- 158 bytes
static_call_inline.c -rw-r--r-- 12.5 KB
stop_machine.c -rw-r--r-- 18.3 KB
sys.c -rw-r--r-- 65.2 KB
sys_ni.c -rw-r--r-- 10.1 KB
sysctl-test.c -rw-r--r-- 10.7 KB
sysctl.c -rw-r--r-- 58.5 KB
task_work.c -rw-r--r-- 5.0 KB
taskstats.c -rw-r--r-- 15.8 KB
torture.c -rw-r--r-- 25.3 KB
tracepoint.c -rw-r--r-- 20.3 KB
tsacct.c -rw-r--r-- 5.0 KB
ucount.c -rw-r--r-- 9.1 KB
uid16.c -rw-r--r-- 5.1 KB
uid16.h -rw-r--r-- 442 bytes
umh.c -rw-r--r-- 15.1 KB
up.c -rw-r--r-- 1.5 KB
user-return-notifier.c -rw-r--r-- 1.3 KB
user.c -rw-r--r-- 5.9 KB
user_namespace.c -rw-r--r-- 35.6 KB
usermode_driver.c -rw-r--r-- 4.3 KB
utsname.c -rw-r--r-- 3.8 KB
utsname_sysctl.c -rw-r--r-- 3.2 KB
watch_queue.c -rw-r--r-- 16.9 KB
watchdog.c -rw-r--r-- 22.4 KB
watchdog_hld.c -rw-r--r-- 7.7 KB
workqueue.c -rw-r--r-- 168.2 KB
workqueue_internal.h -rw-r--r-- 2.4 KB

back to top