mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
- An SGX use after free fix.
- A fix for the fix to disable CET instrumentation generation for kernel code. We forgot 32-bit, which we seem to do very often nowadays. - A Xen PV fix to irqdomain init ordering. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmAo+tUACgkQEsHwGGHe VUqR0hAAqdYjPIk3ecxNKqjdhd9ggV66hmkwnq7iWkWGi8p33q7y9hAA1dG2PBc1 dMuGs9jOqGs5U5FrYjFD8nROVQnvNGt5ISOK02ABMqtiGSUVfInaib1nlCcyLTlt y9a1PMISyuexrhgGwRe1LjTSV6BQmH+jlBSpioJ4lCYugfhttOPpghRKY3M2HKQ3 LhTh0j3+ls2onvgr7DP3wLfz+77ccxK7gRRc0BczqnRjVdpIdXpmxOOOaXA0Yhyd FKnXDZ4ApIFwGB6gUvv7SlKKMULL7ev3LJQnRK4A7AUOJF37e6yMCDI7neGs6Qde r3j7xwqNzge0B2vGaT6IOsKcytduxcB6/gpZVpExHhVBWgCl1AA7Ech+5kGdtWky xMEYyGZZgpVvFND8iTYuoXvrkUOX3pAdXgsNLvcN5OxQrNGGfzpSzikwtZAsYqM4 Ckdv/XkMG9ALM46cNAR4kdecjOypP2zSt7k/olWbma4/MMLBjD+vAm1Vzjws7oMw GSgENGMUa0zjLmi4gN5IZnMCbfBHkzvMlyFBop7cSt983nGLap8z/vx9J6R0jXHy Nhlc129Pd5lRIptxFg0d6Fsn4IimOASFyfgxp1kGSR7nd9jnogXsDfMqC4TLCnwW p1d+1JkUWIlrC2hqB+whQ23s81H9Myt4lp87GOT7s+FWmtAc7p0= =9CtU -----END PGP SIGNATURE----- Merge tag 'x86_urgent_for_v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull x86 fixes from Borislav Petkov: "I kinda knew while typing 'I hope this is the last batch of x86/urgent updates' last week, Murphy was reading too and uttered 'Hold my beer!'. So here's more fixes... Thanks Murphy. Anyway, three more x86/urgent fixes for 5.11 final. We should be finally ready (famous last words). :-) - An SGX use after free fix - A fix for the fix to disable CET instrumentation generation for kernel code. We forgot 32-bit, which we seem to do very often nowadays - A Xen PV fix to irqdomain init ordering" * tag 'x86_urgent_for_v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/pci: Create PCI/MSI irqdomain after x86_init.pci.arch_init() x86/build: Disable CET instrumentation in the kernel for 32-bit too x86/sgx: Maintain encl->refcount for each encl->mm_list entry
This commit is contained in:
commit
c553021498
@ -50,6 +50,9 @@ export BITS
|
||||
KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow
|
||||
KBUILD_CFLAGS += $(call cc-option,-mno-avx,)
|
||||
|
||||
# Intel CET isn't enabled in the kernel
|
||||
KBUILD_CFLAGS += $(call cc-option,-fcf-protection=none)
|
||||
|
||||
ifeq ($(CONFIG_X86_32),y)
|
||||
BITS := 32
|
||||
UTS_MACHINE := i386
|
||||
@ -120,9 +123,6 @@ else
|
||||
|
||||
KBUILD_CFLAGS += -mno-red-zone
|
||||
KBUILD_CFLAGS += -mcmodel=kernel
|
||||
|
||||
# Intel CET isn't enabled in the kernel
|
||||
KBUILD_CFLAGS += $(call cc-option,-fcf-protection=none)
|
||||
endif
|
||||
|
||||
ifdef CONFIG_X86_X32
|
||||
|
@ -72,6 +72,9 @@ static int sgx_release(struct inode *inode, struct file *file)
|
||||
synchronize_srcu(&encl->srcu);
|
||||
mmu_notifier_unregister(&encl_mm->mmu_notifier, encl_mm->mm);
|
||||
kfree(encl_mm);
|
||||
|
||||
/* 'encl_mm' is gone, put encl_mm->encl reference: */
|
||||
kref_put(&encl->refcount, sgx_encl_release);
|
||||
}
|
||||
|
||||
kref_put(&encl->refcount, sgx_encl_release);
|
||||
|
@ -481,6 +481,9 @@ static void sgx_mmu_notifier_free(struct mmu_notifier *mn)
|
||||
{
|
||||
struct sgx_encl_mm *encl_mm = container_of(mn, struct sgx_encl_mm, mmu_notifier);
|
||||
|
||||
/* 'encl_mm' is going away, put encl_mm->encl reference: */
|
||||
kref_put(&encl_mm->encl->refcount, sgx_encl_release);
|
||||
|
||||
kfree(encl_mm);
|
||||
}
|
||||
|
||||
@ -534,6 +537,8 @@ int sgx_encl_mm_add(struct sgx_encl *encl, struct mm_struct *mm)
|
||||
if (!encl_mm)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Grab a refcount for the encl_mm->encl reference: */
|
||||
kref_get(&encl->refcount);
|
||||
encl_mm->encl = encl;
|
||||
encl_mm->mm = mm;
|
||||
encl_mm->mmu_notifier.ops = &sgx_mmu_notifier_ops;
|
||||
|
@ -9,16 +9,23 @@
|
||||
in the right sequence from here. */
|
||||
static __init int pci_arch_init(void)
|
||||
{
|
||||
int type;
|
||||
|
||||
x86_create_pci_msi_domain();
|
||||
int type, pcbios = 1;
|
||||
|
||||
type = pci_direct_probe();
|
||||
|
||||
if (!(pci_probe & PCI_PROBE_NOEARLY))
|
||||
pci_mmcfg_early_init();
|
||||
|
||||
if (x86_init.pci.arch_init && !x86_init.pci.arch_init())
|
||||
if (x86_init.pci.arch_init)
|
||||
pcbios = x86_init.pci.arch_init();
|
||||
|
||||
/*
|
||||
* Must happen after x86_init.pci.arch_init(). Xen sets up the
|
||||
* x86_init.irqs.create_pci_msi_domain there.
|
||||
*/
|
||||
x86_create_pci_msi_domain();
|
||||
|
||||
if (!pcbios)
|
||||
return 0;
|
||||
|
||||
pci_pcbios_init();
|
||||
|
Loading…
Reference in New Issue
Block a user