]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 7 Jan 2018 08:38:22 +0000 (09:38 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 7 Jan 2018 08:38:22 +0000 (09:38 +0100)
added patches:
arc-uaccess-dont-use-l-gcc-inline-asm-constraint-modifier.patch
input-elantech-add-new-icbody-type-15.patch
iommu-arm-smmu-v3-cope-with-duplicated-stream-ids.patch
iommu-arm-smmu-v3-don-t-free-page-table-ops-twice.patch

queue-4.9/arc-uaccess-dont-use-l-gcc-inline-asm-constraint-modifier.patch [new file with mode: 0644]
queue-4.9/input-elantech-add-new-icbody-type-15.patch [new file with mode: 0644]
queue-4.9/iommu-arm-smmu-v3-cope-with-duplicated-stream-ids.patch [new file with mode: 0644]
queue-4.9/iommu-arm-smmu-v3-don-t-free-page-table-ops-twice.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/arc-uaccess-dont-use-l-gcc-inline-asm-constraint-modifier.patch b/queue-4.9/arc-uaccess-dont-use-l-gcc-inline-asm-constraint-modifier.patch
new file mode 100644 (file)
index 0000000..cd16875
--- /dev/null
@@ -0,0 +1,44 @@
+From 79435ac78d160e4c245544d457850a56f805ac0d Mon Sep 17 00:00:00 2001
+From: Vineet Gupta <vgupta@synopsys.com>
+Date: Fri, 8 Dec 2017 08:26:58 -0800
+Subject: ARC: uaccess: dont use "l" gcc inline asm constraint modifier
+
+From: Vineet Gupta <vgupta@synopsys.com>
+
+commit 79435ac78d160e4c245544d457850a56f805ac0d upstream.
+
+This used to setup the LP_COUNT register automatically, but now has been
+removed.
+
+There was an earlier fix 3c7c7a2fc8811 which fixed instance in delay.h but
+somehow missed this one as gcc change had not made its way into
+production toolchains and was not pedantic as it is now !
+
+Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arc/include/asm/uaccess.h |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/arch/arc/include/asm/uaccess.h
++++ b/arch/arc/include/asm/uaccess.h
+@@ -673,6 +673,7 @@ __arc_strncpy_from_user(char *dst, const
+               return 0;
+       __asm__ __volatile__(
++      "       mov     lp_count, %5            \n"
+       "       lp      3f                      \n"
+       "1:     ldb.ab  %3, [%2, 1]             \n"
+       "       breq.d  %3, 0, 3f               \n"
+@@ -689,8 +690,8 @@ __arc_strncpy_from_user(char *dst, const
+       "       .word   1b, 4b                  \n"
+       "       .previous                       \n"
+       : "+r"(res), "+r"(dst), "+r"(src), "=r"(val)
+-      : "g"(-EFAULT), "l"(count)
+-      : "memory");
++      : "g"(-EFAULT), "r"(count)
++      : "lp_count", "lp_start", "lp_end", "memory");
+       return res;
+ }
diff --git a/queue-4.9/input-elantech-add-new-icbody-type-15.patch b/queue-4.9/input-elantech-add-new-icbody-type-15.patch
new file mode 100644 (file)
index 0000000..427f5ad
--- /dev/null
@@ -0,0 +1,30 @@
+From 10d900303f1c3a821eb0bef4e7b7ece16768fba4 Mon Sep 17 00:00:00 2001
+From: Aaron Ma <aaron.ma@canonical.com>
+Date: Sat, 25 Nov 2017 16:48:41 -0800
+Subject: Input: elantech - add new icbody type 15
+
+From: Aaron Ma <aaron.ma@canonical.com>
+
+commit 10d900303f1c3a821eb0bef4e7b7ece16768fba4 upstream.
+
+The touchpad of Lenovo Thinkpad L480 reports it's version as 15.
+
+Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/input/mouse/elantech.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/input/mouse/elantech.c
++++ b/drivers/input/mouse/elantech.c
+@@ -1609,7 +1609,7 @@ static int elantech_set_properties(struc
+               case 5:
+                       etd->hw_version = 3;
+                       break;
+-              case 6 ... 14:
++              case 6 ... 15:
+                       etd->hw_version = 4;
+                       break;
+               default:
diff --git a/queue-4.9/iommu-arm-smmu-v3-cope-with-duplicated-stream-ids.patch b/queue-4.9/iommu-arm-smmu-v3-cope-with-duplicated-stream-ids.patch
new file mode 100644 (file)
index 0000000..3882873
--- /dev/null
@@ -0,0 +1,58 @@
+From 563b5cbe334e9503ab2b234e279d500fc4f76018 Mon Sep 17 00:00:00 2001
+From: Robin Murphy <robin.murphy@arm.com>
+Date: Tue, 2 Jan 2018 12:33:14 +0000
+Subject: iommu/arm-smmu-v3: Cope with duplicated Stream IDs
+
+From: Robin Murphy <robin.murphy@arm.com>
+
+commit 563b5cbe334e9503ab2b234e279d500fc4f76018 upstream.
+
+For PCI devices behind an aliasing PCIe-to-PCI/X bridge, the bridge
+alias to DevFn 0.0 on the subordinate bus may match the original RID of
+the device, resulting in the same SID being present in the device's
+fwspec twice. This causes trouble later in arm_smmu_write_strtab_ent()
+when we wind up visiting the STE a second time and find it already live.
+
+Avoid the issue by giving arm_smmu_install_ste_for_dev() the cleverness
+to skip over duplicates. It seems mildly counterintuitive compared to
+preventing the duplicates from existing in the first place, but since
+the DT and ACPI probe paths build their fwspecs differently, this is
+actually the cleanest and most self-contained way to deal with it.
+
+Fixes: 8f78515425da ("iommu/arm-smmu: Implement of_xlate() for SMMUv3")
+Reported-by: Tomasz Nowicki <tomasz.nowicki@caviumnetworks.com>
+Tested-by: Tomasz Nowicki <Tomasz.Nowicki@cavium.com>
+Tested-by: Jayachandran C. <jnair@caviumnetworks.com>
+Signed-off-by: Robin Murphy <robin.murphy@arm.com>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/arm-smmu-v3.c |    9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/iommu/arm-smmu-v3.c
++++ b/drivers/iommu/arm-smmu-v3.c
+@@ -1582,7 +1582,7 @@ static __le64 *arm_smmu_get_step_for_sid
+ static int arm_smmu_install_ste_for_dev(struct iommu_fwspec *fwspec)
+ {
+-      int i;
++      int i, j;
+       struct arm_smmu_master_data *master = fwspec->iommu_priv;
+       struct arm_smmu_device *smmu = master->smmu;
+@@ -1590,6 +1590,13 @@ static int arm_smmu_install_ste_for_dev(
+               u32 sid = fwspec->ids[i];
+               __le64 *step = arm_smmu_get_step_for_sid(smmu, sid);
++              /* Bridged PCI devices may end up with duplicated IDs */
++              for (j = 0; j < i; j++)
++                      if (fwspec->ids[j] == sid)
++                              break;
++              if (j < i)
++                      continue;
++
+               arm_smmu_write_strtab_ent(smmu, sid, step, &master->ste);
+       }
diff --git a/queue-4.9/iommu-arm-smmu-v3-don-t-free-page-table-ops-twice.patch b/queue-4.9/iommu-arm-smmu-v3-don-t-free-page-table-ops-twice.patch
new file mode 100644 (file)
index 0000000..36507bb
--- /dev/null
@@ -0,0 +1,44 @@
+From 57d72e159b60456c8bb281736c02ddd3164037aa Mon Sep 17 00:00:00 2001
+From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
+Date: Thu, 14 Dec 2017 11:03:01 +0000
+Subject: iommu/arm-smmu-v3: Don't free page table ops twice
+
+From: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
+
+commit 57d72e159b60456c8bb281736c02ddd3164037aa upstream.
+
+Kasan reports a double free when finalise_stage_fn fails: the io_pgtable
+ops are freed by arm_smmu_domain_finalise and then again by
+arm_smmu_domain_free. Prevent this by leaving pgtbl_ops empty on failure.
+
+Fixes: 48ec83bcbcf5 ("iommu/arm-smmu: Add initial driver support for ARM SMMUv3 devices")
+Reviewed-by: Robin Murphy <robin.murphy@arm.com>
+Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/arm-smmu-v3.c |    8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/iommu/arm-smmu-v3.c
++++ b/drivers/iommu/arm-smmu-v3.c
+@@ -1547,13 +1547,15 @@ static int arm_smmu_domain_finalise(stru
+       domain->pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
+       domain->geometry.aperture_end = (1UL << ias) - 1;
+       domain->geometry.force_aperture = true;
+-      smmu_domain->pgtbl_ops = pgtbl_ops;
+       ret = finalise_stage_fn(smmu_domain, &pgtbl_cfg);
+-      if (ret < 0)
++      if (ret < 0) {
+               free_io_pgtable_ops(pgtbl_ops);
++              return ret;
++      }
+-      return ret;
++      smmu_domain->pgtbl_ops = pgtbl_ops;
++      return 0;
+ }
+ static __le64 *arm_smmu_get_step_for_sid(struct arm_smmu_device *smmu, u32 sid)
index e744ab15b77cba5e14e13e9c04707df1bf4a9477..b87551b20fbb2afd47a628ea0ffc0fc9b7714dac 100644 (file)
@@ -9,3 +9,7 @@ kernel-make-groups_sort-calling-a-responsibility-group_info-allocators.patch
 kernel-signal.c-protect-the-traced-signal_unkillable-tasks-from-sigkill.patch
 kernel-signal.c-protect-the-signal_unkillable-tasks-from-sig_kernel_only-signals.patch
 kernel-signal.c-remove-the-no-longer-needed-signal_unkillable-check-in-complete_signal.patch
+iommu-arm-smmu-v3-don-t-free-page-table-ops-twice.patch
+iommu-arm-smmu-v3-cope-with-duplicated-stream-ids.patch
+arc-uaccess-dont-use-l-gcc-inline-asm-constraint-modifier.patch
+input-elantech-add-new-icbody-type-15.patch