aboutsummaryrefslogtreecommitdiff
path: root/SOURCES/patch-6.10-redhat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'SOURCES/patch-6.10-redhat.patch')
-rw-r--r--SOURCES/patch-6.10-redhat.patch191
1 files changed, 139 insertions, 52 deletions
diff --git a/SOURCES/patch-6.10-redhat.patch b/SOURCES/patch-6.10-redhat.patch
index 01f9da9..3ef3fe6 100644
--- a/SOURCES/patch-6.10-redhat.patch
+++ b/SOURCES/patch-6.10-redhat.patch
@@ -1,6 +1,12 @@
+ Documentation/virt/kvm/api.rst | 3 +
Makefile | 12 ++
arch/arm/Kconfig | 4 +-
arch/arm64/Kconfig | 2 +-
+ arch/powerpc/include/asm/kvm_host.h | 3 +
+ arch/powerpc/include/uapi/asm/kvm.h | 3 +
+ arch/powerpc/kvm/book3s_hv.c | 18 +++
+ arch/powerpc/kvm/book3s_hv.h | 3 +
+ arch/powerpc/kvm/book3s_hv_nestedv2.c | 18 +++
arch/s390/include/asm/ipl.h | 1 +
arch/s390/kernel/ipl.c | 5 +
arch/s390/kernel/setup.c | 4 +
@@ -23,7 +29,6 @@
drivers/input/rmi4/rmi_driver.c | 124 ++++++++++-------
drivers/iommu/iommu.c | 22 +++
drivers/media/pci/intel/ipu-bridge.c | 40 ++++--
- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 13 +-
drivers/pci/quirks.c | 24 ++++
drivers/scsi/sd.c | 10 ++
drivers/usb/core/hub.c | 7 +
@@ -40,11 +45,26 @@
security/lockdown/Kconfig | 13 ++
security/lockdown/lockdown.c | 1 +
security/security.c | 12 ++
- security/selinux/hooks.c | 12 +-
- 43 files changed, 800 insertions(+), 260 deletions(-)
+ 47 files changed, 827 insertions(+), 256 deletions(-)
+diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
+index eec8df1dde06..88f49dd10cd0 100644
+--- a/Documentation/virt/kvm/api.rst
++++ b/Documentation/virt/kvm/api.rst
+@@ -2445,8 +2445,11 @@ registers, find a list below:
+ PPC KVM_REG_PPC_PSSCR 64
+ PPC KVM_REG_PPC_DEC_EXPIRY 64
+ PPC KVM_REG_PPC_PTCR 64
++ PPC KVM_REG_PPC_HASHKEYR 64
++ PPC KVM_REG_PPC_HASHPKEYR 64
+ PPC KVM_REG_PPC_DAWR1 64
+ PPC KVM_REG_PPC_DAWRX1 64
++ PPC KVM_REG_PPC_DEXCR 64
+ PPC KVM_REG_PPC_TM_GPR0 64
+ ...
+ PPC KVM_REG_PPC_TM_GPR31 64
diff --git a/Makefile b/Makefile
-index 361a70264e1f..eaf69484d4ce 100644
+index ab77d171e268..c46aa8337181 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \
@@ -95,6 +115,120 @@ index 11bbdc15c6e5..9cecc1448e3c 100644
help
For systems with 52-bit userspace VAs enabled, the kernel will attempt
to maintain compatibility with older software by providing 48-bit VAs
+diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
+index 8abac532146e..6a0c771d3ce8 100644
+--- a/arch/powerpc/include/asm/kvm_host.h
++++ b/arch/powerpc/include/asm/kvm_host.h
+@@ -599,6 +599,9 @@ struct kvm_vcpu_arch {
+ ulong dawrx0;
+ ulong dawr1;
+ ulong dawrx1;
++ ulong dexcr;
++ ulong hashkeyr;
++ ulong hashpkeyr;
+ ulong ciabr;
+ ulong cfar;
+ ulong ppr;
+diff --git a/arch/powerpc/include/uapi/asm/kvm.h b/arch/powerpc/include/uapi/asm/kvm.h
+index 1691297a766a..eaeda001784e 100644
+--- a/arch/powerpc/include/uapi/asm/kvm.h
++++ b/arch/powerpc/include/uapi/asm/kvm.h
+@@ -645,6 +645,9 @@ struct kvm_ppc_cpu_char {
+ #define KVM_REG_PPC_SIER3 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc3)
+ #define KVM_REG_PPC_DAWR1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc4)
+ #define KVM_REG_PPC_DAWRX1 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc5)
++#define KVM_REG_PPC_DEXCR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc6)
++#define KVM_REG_PPC_HASHKEYR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc7)
++#define KVM_REG_PPC_HASHPKEYR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc8)
+
+ /* Transactional Memory checkpointed state:
+ * This is all GPRs, all VSX regs and a subset of SPRs
+diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
+index d8352e4d9cdc..36068c3ed8a7 100644
+--- a/arch/powerpc/kvm/book3s_hv.c
++++ b/arch/powerpc/kvm/book3s_hv.c
+@@ -2349,6 +2349,15 @@ static int kvmppc_get_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
+ case KVM_REG_PPC_DAWRX1:
+ *val = get_reg_val(id, kvmppc_get_dawrx1_hv(vcpu));
+ break;
++ case KVM_REG_PPC_DEXCR:
++ *val = get_reg_val(id, kvmppc_get_dexcr_hv(vcpu));
++ break;
++ case KVM_REG_PPC_HASHKEYR:
++ *val = get_reg_val(id, kvmppc_get_hashkeyr_hv(vcpu));
++ break;
++ case KVM_REG_PPC_HASHPKEYR:
++ *val = get_reg_val(id, kvmppc_get_hashpkeyr_hv(vcpu));
++ break;
+ case KVM_REG_PPC_CIABR:
+ *val = get_reg_val(id, kvmppc_get_ciabr_hv(vcpu));
+ break;
+@@ -2592,6 +2601,15 @@ static int kvmppc_set_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
+ case KVM_REG_PPC_DAWRX1:
+ kvmppc_set_dawrx1_hv(vcpu, set_reg_val(id, *val) & ~DAWRX_HYP);
+ break;
++ case KVM_REG_PPC_DEXCR:
++ kvmppc_set_dexcr_hv(vcpu, set_reg_val(id, *val));
++ break;
++ case KVM_REG_PPC_HASHKEYR:
++ kvmppc_set_hashkeyr_hv(vcpu, set_reg_val(id, *val));
++ break;
++ case KVM_REG_PPC_HASHPKEYR:
++ kvmppc_set_hashpkeyr_hv(vcpu, set_reg_val(id, *val));
++ break;
+ case KVM_REG_PPC_CIABR:
+ kvmppc_set_ciabr_hv(vcpu, set_reg_val(id, *val));
+ /* Don't allow setting breakpoints in hypervisor code */
+diff --git a/arch/powerpc/kvm/book3s_hv.h b/arch/powerpc/kvm/book3s_hv.h
+index 47b2c815641e..a404c9b221c1 100644
+--- a/arch/powerpc/kvm/book3s_hv.h
++++ b/arch/powerpc/kvm/book3s_hv.h
+@@ -116,6 +116,9 @@ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawr0, 64, KVMPPC_GSID_DAWR0)
+ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawr1, 64, KVMPPC_GSID_DAWR1)
+ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawrx0, 64, KVMPPC_GSID_DAWRX0)
+ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawrx1, 64, KVMPPC_GSID_DAWRX1)
++KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dexcr, 64, KVMPPC_GSID_DEXCR)
++KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(hashkeyr, 64, KVMPPC_GSID_HASHKEYR)
++KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(hashpkeyr, 64, KVMPPC_GSID_HASHPKEYR)
+ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(ciabr, 64, KVMPPC_GSID_CIABR)
+ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(wort, 64, KVMPPC_GSID_WORT)
+ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(ppr, 64, KVMPPC_GSID_PPR)
+diff --git a/arch/powerpc/kvm/book3s_hv_nestedv2.c b/arch/powerpc/kvm/book3s_hv_nestedv2.c
+index 342f58314770..eeecea8f202b 100644
+--- a/arch/powerpc/kvm/book3s_hv_nestedv2.c
++++ b/arch/powerpc/kvm/book3s_hv_nestedv2.c
+@@ -193,6 +193,15 @@ static int gs_msg_ops_vcpu_fill_info(struct kvmppc_gs_buff *gsb,
+ case KVMPPC_GSID_DAWRX1:
+ rc = kvmppc_gse_put_u32(gsb, iden, vcpu->arch.dawrx1);
+ break;
++ case KVMPPC_GSID_DEXCR:
++ rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.dexcr);
++ break;
++ case KVMPPC_GSID_HASHKEYR:
++ rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.hashkeyr);
++ break;
++ case KVMPPC_GSID_HASHPKEYR:
++ rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.hashpkeyr);
++ break;
+ case KVMPPC_GSID_CIABR:
+ rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.ciabr);
+ break;
+@@ -445,6 +454,15 @@ static int gs_msg_ops_vcpu_refresh_info(struct kvmppc_gs_msg *gsm,
+ case KVMPPC_GSID_DAWRX1:
+ vcpu->arch.dawrx1 = kvmppc_gse_get_u32(gse);
+ break;
++ case KVMPPC_GSID_DEXCR:
++ vcpu->arch.dexcr = kvmppc_gse_get_u64(gse);
++ break;
++ case KVMPPC_GSID_HASHKEYR:
++ vcpu->arch.hashkeyr = kvmppc_gse_get_u64(gse);
++ break;
++ case KVMPPC_GSID_HASHPKEYR:
++ vcpu->arch.hashpkeyr = kvmppc_gse_get_u64(gse);
++ break;
+ case KVMPPC_GSID_CIABR:
+ vcpu->arch.ciabr = kvmppc_gse_get_u64(gse);
+ break;
diff --git a/arch/s390/include/asm/ipl.h b/arch/s390/include/asm/ipl.h
index b0d00032479d..afb9544fb007 100644
--- a/arch/s390/include/asm/ipl.h
@@ -569,7 +703,7 @@ index 1687483ff319..390b67f19181 100644
return ctx.rc;
}
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
-index 503773707e01..2fead21fcb07 100644
+index cdc5a74092c7..45679565878f 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1793,6 +1793,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
@@ -1523,30 +1657,6 @@ index 61750cc98d70..a0e9a71580b5 100644
};
static const struct ipu_property_names prop_names = {
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-index 5fe0e671ecb3..826b768196e2 100644
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -4320,9 +4320,16 @@ brcmf_pmksa_v3_op(struct brcmf_if *ifp, struct cfg80211_pmksa *pmksa,
- /* Single PMK operation */
- pmk_op->count = cpu_to_le16(1);
- length += sizeof(struct brcmf_pmksa_v3);
-- memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN);
-- memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN);
-- pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN;
-+ if (pmksa->bssid)
-+ memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN);
-+ if (pmksa->pmkid) {
-+ memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN);
-+ pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN;
-+ }
-+ if (pmksa->ssid && pmksa->ssid_len) {
-+ memcpy(pmk_op->pmk[0].ssid.SSID, pmksa->ssid, pmksa->ssid_len);
-+ pmk_op->pmk[0].ssid.SSID_len = pmksa->ssid_len;
-+ }
- pmk_op->pmk[0].time_left = cpu_to_le32(alive ? BRCMF_PMKSA_NO_EXPIRY : 0);
- }
-
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 568410e64ce6..6afbaee83950 100644
--- a/drivers/pci/quirks.c
@@ -1957,26 +2067,3 @@ index 8cee5b6c6e6d..489e25946bf9 100644
#ifdef CONFIG_PERF_EVENTS
/**
* security_perf_event_open() - Check if a perf event open is allowed
-diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
-index 55c78c318ccd..bfa61e005aac 100644
---- a/security/selinux/hooks.c
-+++ b/security/selinux/hooks.c
-@@ -3852,7 +3852,17 @@ static int selinux_file_mprotect(struct vm_area_struct *vma,
- if (default_noexec &&
- (prot & PROT_EXEC) && !(vma->vm_flags & VM_EXEC)) {
- int rc = 0;
-- if (vma_is_initial_heap(vma)) {
-+ /*
-+ * We don't use the vma_is_initial_heap() helper as it has
-+ * a history of problems and is currently broken on systems
-+ * where there is no heap, e.g. brk == start_brk. Before
-+ * replacing the conditional below with vma_is_initial_heap(),
-+ * or something similar, please ensure that the logic is the
-+ * same as what we have below or you have tested every possible
-+ * corner case you can think to test.
-+ */
-+ if (vma->vm_start >= vma->vm_mm->start_brk &&
-+ vma->vm_end <= vma->vm_mm->brk) {
- rc = avc_has_perm(sid, sid, SECCLASS_PROCESS,
- PROCESS__EXECHEAP, NULL);
- } else if (!vma->vm_file && (vma_is_initial_stack(vma) ||