From: Greg Kroah-Hartman Date: Mon, 27 Nov 2017 16:26:30 +0000 (+0100) Subject: 3.18-stable patches X-Git-Tag: v3.18.85~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8bc38934869526e5c531d75b63e442f57463bb85;p=thirdparty%2Fkernel%2Fstable-queue.git 3.18-stable patches added patches: clk-ti-dra7-atl-clock-fix-child-node-lookups.patch clk-ti-dra7-atl-clock-fix-of_node-reference-counting.patch ib-srpt-do-not-accept-invalid-initiator-port-names.patch kvm-nvmx-set-idtr-and-gdtr-limits-when-loading-l1-host-state.patch kvm-svm-obey-guest-pat.patch nfc-fix-device-allocation-error-return.patch --- diff --git a/queue-3.18/clk-ti-dra7-atl-clock-fix-child-node-lookups.patch b/queue-3.18/clk-ti-dra7-atl-clock-fix-child-node-lookups.patch new file mode 100644 index 00000000000..140bf333176 --- /dev/null +++ b/queue-3.18/clk-ti-dra7-atl-clock-fix-child-node-lookups.patch @@ -0,0 +1,41 @@ +From 33ec6dbc5a02677509d97fe36cd2105753f0f0ea Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Sat, 11 Nov 2017 17:29:29 +0100 +Subject: clk: ti: dra7-atl-clock: fix child-node lookups + +From: Johan Hovold + +commit 33ec6dbc5a02677509d97fe36cd2105753f0f0ea upstream. + +Fix child node-lookup during probe, which ended up searching the whole +device tree depth-first starting at parent rather than just matching on +its children. + +Note that the original premature free of the parent node has already +been fixed separately, but that fix was apparently never backported to +stable. + +Fixes: 9ac33b0ce81f ("CLK: TI: Driver for DRA7 ATL (Audio Tracking Logic)") +Fixes: 660e15519399 ("clk: ti: dra7-atl-clock: Fix of_node reference counting") +Cc: Peter Ujfalusi +Signed-off-by: Johan Hovold +Acked-by: Peter Ujfalusi +Signed-off-by: Stephen Boyd +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/clk/ti/clk-dra7-atl.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/clk/ti/clk-dra7-atl.c ++++ b/drivers/clk/ti/clk-dra7-atl.c +@@ -259,8 +259,7 @@ static int of_dra7_atl_clk_probe(struct + + /* Get configuration for the ATL instances */ + snprintf(prop, sizeof(prop), "atl%u", i); +- of_node_get(node); +- cfg_node = of_find_node_by_name(node, prop); ++ cfg_node = of_get_child_by_name(node, prop); + if (cfg_node) { + ret = of_property_read_u32(cfg_node, "bws", + &cdesc->bws); diff --git a/queue-3.18/clk-ti-dra7-atl-clock-fix-of_node-reference-counting.patch b/queue-3.18/clk-ti-dra7-atl-clock-fix-of_node-reference-counting.patch new file mode 100644 index 00000000000..c4f92635b55 --- /dev/null +++ b/queue-3.18/clk-ti-dra7-atl-clock-fix-of_node-reference-counting.patch @@ -0,0 +1,41 @@ +From 660e1551939931657808d47838a3f443c0e83fd0 Mon Sep 17 00:00:00 2001 +From: Peter Ujfalusi +Date: Fri, 11 Mar 2016 16:13:32 +0200 +Subject: clk: ti: dra7-atl-clock: Fix of_node reference counting + +From: Peter Ujfalusi + +commit 660e1551939931657808d47838a3f443c0e83fd0 upstream. + +of_find_node_by_name() will call of_node_put() on the node so we need to +get it first to avoid warnings. +The cfg_node needs to be put after we have finished processing the +properties. + +Signed-off-by: Peter Ujfalusi +Tested-by: Nishanth Menon +Signed-off-by: Stephen Boyd +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/clk/ti/clk-dra7-atl.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/clk/ti/clk-dra7-atl.c ++++ b/drivers/clk/ti/clk-dra7-atl.c +@@ -259,6 +259,7 @@ static int of_dra7_atl_clk_probe(struct + + /* Get configuration for the ATL instances */ + snprintf(prop, sizeof(prop), "atl%u", i); ++ of_node_get(node); + cfg_node = of_find_node_by_name(node, prop); + if (cfg_node) { + ret = of_property_read_u32(cfg_node, "bws", +@@ -272,6 +273,7 @@ static int of_dra7_atl_clk_probe(struct + atl_write(cinfo, DRA7_ATL_AWSMUX_REG(i), + cdesc->aws); + } ++ of_node_put(cfg_node); + } + + cdesc->probed = true; diff --git a/queue-3.18/ib-srpt-do-not-accept-invalid-initiator-port-names.patch b/queue-3.18/ib-srpt-do-not-accept-invalid-initiator-port-names.patch new file mode 100644 index 00000000000..52dec9ddc01 --- /dev/null +++ b/queue-3.18/ib-srpt-do-not-accept-invalid-initiator-port-names.patch @@ -0,0 +1,46 @@ +From c70ca38960399a63d5c048b7b700612ea321d17e Mon Sep 17 00:00:00 2001 +From: Bart Van Assche +Date: Wed, 11 Oct 2017 10:27:22 -0700 +Subject: IB/srpt: Do not accept invalid initiator port names + +From: Bart Van Assche + +commit c70ca38960399a63d5c048b7b700612ea321d17e upstream. + +Make srpt_parse_i_port_id() return a negative value if hex2bin() +fails. + +Fixes: commit a42d985bd5b2 ("ib_srpt: Initial SRP Target merge for v3.3-rc1") +Signed-off-by: Bart Van Assche +Signed-off-by: Doug Ledford +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/infiniband/ulp/srpt/ib_srpt.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +--- a/drivers/infiniband/ulp/srpt/ib_srpt.c ++++ b/drivers/infiniband/ulp/srpt/ib_srpt.c +@@ -3522,7 +3522,7 @@ static int srpt_parse_i_port_id(u8 i_por + { + const char *p; + unsigned len, count, leading_zero_bytes; +- int ret, rc; ++ int ret; + + p = name; + if (strncasecmp(p, "0x", 2) == 0) +@@ -3534,10 +3534,9 @@ static int srpt_parse_i_port_id(u8 i_por + count = min(len / 2, 16U); + leading_zero_bytes = 16 - count; + memset(i_port_id, 0, leading_zero_bytes); +- rc = hex2bin(i_port_id + leading_zero_bytes, p, count); +- if (rc < 0) +- pr_debug("hex2bin failed for srpt_parse_i_port_id: %d\n", rc); +- ret = 0; ++ ret = hex2bin(i_port_id + leading_zero_bytes, p, count); ++ if (ret < 0) ++ pr_debug("hex2bin failed for srpt_parse_i_port_id: %d\n", ret); + out: + return ret; + } diff --git a/queue-3.18/kvm-nvmx-set-idtr-and-gdtr-limits-when-loading-l1-host-state.patch b/queue-3.18/kvm-nvmx-set-idtr-and-gdtr-limits-when-loading-l1-host-state.patch new file mode 100644 index 00000000000..1c262f9cc2c --- /dev/null +++ b/queue-3.18/kvm-nvmx-set-idtr-and-gdtr-limits-when-loading-l1-host-state.patch @@ -0,0 +1,32 @@ +From 21f2d551183847bc7fbe8d866151d00cdad18752 Mon Sep 17 00:00:00 2001 +From: Ladi Prosek +Date: Wed, 11 Oct 2017 16:54:42 +0200 +Subject: KVM: nVMX: set IDTR and GDTR limits when loading L1 host state + +From: Ladi Prosek + +commit 21f2d551183847bc7fbe8d866151d00cdad18752 upstream. + +Intel SDM 27.5.2 Loading Host Segment and Descriptor-Table Registers: + +"The GDTR and IDTR limits are each set to FFFFH." + +Signed-off-by: Ladi Prosek +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/vmx.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/x86/kvm/vmx.c ++++ b/arch/x86/kvm/vmx.c +@@ -8929,6 +8929,8 @@ static void load_vmcs12_host_state(struc + vmcs_writel(GUEST_SYSENTER_EIP, vmcs12->host_ia32_sysenter_eip); + vmcs_writel(GUEST_IDTR_BASE, vmcs12->host_idtr_base); + vmcs_writel(GUEST_GDTR_BASE, vmcs12->host_gdtr_base); ++ vmcs_write32(GUEST_IDTR_LIMIT, 0xFFFF); ++ vmcs_write32(GUEST_GDTR_LIMIT, 0xFFFF); + + /* If not VM_EXIT_CLEAR_BNDCFGS, the L2 value propagates to L1. */ + if (vmcs12->vm_exit_controls & VM_EXIT_CLEAR_BNDCFGS) diff --git a/queue-3.18/kvm-svm-obey-guest-pat.patch b/queue-3.18/kvm-svm-obey-guest-pat.patch new file mode 100644 index 00000000000..60c5626a91d --- /dev/null +++ b/queue-3.18/kvm-svm-obey-guest-pat.patch @@ -0,0 +1,54 @@ +From 15038e14724799b8c205beb5f20f9e54896013c3 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini +Date: Thu, 26 Oct 2017 09:13:27 +0200 +Subject: KVM: SVM: obey guest PAT +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Paolo Bonzini + +commit 15038e14724799b8c205beb5f20f9e54896013c3 upstream. + +For many years some users of assigned devices have reported worse +performance on AMD processors with NPT than on AMD without NPT, +Intel or bare metal. + +The reason turned out to be that SVM is discarding the guest PAT +setting and uses the default (PA0=PA4=WB, PA1=PA5=WT, PA2=PA6=UC-, +PA3=UC). The guest might be using a different setting, and +especially might want write combining but isn't getting it +(instead getting slow UC or UC- accesses). + +Thanks a lot to geoff@hostfission.com for noticing the relation +to the g_pat setting. The patch has been tested also by a bunch +of people on VFIO users forums. + +Fixes: 709ddebf81cb40e3c36c6109a7892e8b93a09464 +Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=196409 +Signed-off-by: Paolo Bonzini +Reviewed-by: David Hildenbrand +Tested-by: Nick Sarnie +Signed-off-by: Radim Krčmář +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/svm.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/arch/x86/kvm/svm.c ++++ b/arch/x86/kvm/svm.c +@@ -3187,6 +3187,13 @@ static int svm_set_msr(struct kvm_vcpu * + u32 ecx = msr->index; + u64 data = msr->data; + switch (ecx) { ++ case MSR_IA32_CR_PAT: ++ if (!kvm_mtrr_valid(vcpu, MSR_IA32_CR_PAT, data)) ++ return 1; ++ vcpu->arch.pat = data; ++ svm->vmcb->save.g_pat = data; ++ mark_dirty(svm->vmcb, VMCB_NPT); ++ break; + case MSR_IA32_TSC: + kvm_write_tsc(vcpu, msr); + break; diff --git a/queue-3.18/nfc-fix-device-allocation-error-return.patch b/queue-3.18/nfc-fix-device-allocation-error-return.patch new file mode 100644 index 00000000000..3a7240a073d --- /dev/null +++ b/queue-3.18/nfc-fix-device-allocation-error-return.patch @@ -0,0 +1,41 @@ +From c45e3e4c5b134b081e8af362109905427967eb19 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Sun, 9 Jul 2017 13:08:58 +0200 +Subject: NFC: fix device-allocation error return + +From: Johan Hovold + +commit c45e3e4c5b134b081e8af362109905427967eb19 upstream. + +A recent change fixing NFC device allocation itself introduced an +error-handling bug by returning an error pointer in case device-id +allocation failed. This is clearly broken as the callers still expected +NULL to be returned on errors as detected by Dan's static checker. + +Fix this up by returning NULL in the event that we've run out of memory +when allocating a new device id. + +Note that the offending commit is marked for stable (3.8) so this fix +needs to be backported along with it. + +Fixes: 20777bc57c34 ("NFC: fix broken device allocation") +Reported-by: Dan Carpenter +Signed-off-by: Johan Hovold +Signed-off-by: Samuel Ortiz +Signed-off-by: Greg Kroah-Hartman + +--- + net/nfc/core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/nfc/core.c ++++ b/net/nfc/core.c +@@ -1074,7 +1074,7 @@ struct nfc_dev *nfc_allocate_device(stru + err_free_dev: + kfree(dev); + +- return ERR_PTR(rc); ++ return NULL; + } + EXPORT_SYMBOL(nfc_allocate_device); + diff --git a/queue-3.18/series b/queue-3.18/series index 8583cfbf3c2..0d50069d81e 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -25,3 +25,9 @@ alsa-usb-audio-add-sanity-checks-in-v2-clock-parsers.patch alsa-timer-remove-kernel-warning-at-compat-ioctl-error-paths.patch fs-9p-compare-qid.path-in-v9fs_test_inode.patch iscsi-target-fix-non-immediate-tmr-reference-leak.patch +kvm-nvmx-set-idtr-and-gdtr-limits-when-loading-l1-host-state.patch +kvm-svm-obey-guest-pat.patch +clk-ti-dra7-atl-clock-fix-of_node-reference-counting.patch +clk-ti-dra7-atl-clock-fix-child-node-lookups.patch +ib-srpt-do-not-accept-invalid-initiator-port-names.patch +nfc-fix-device-allocation-error-return.patch