]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 11 Jul 2022 07:17:14 +0000 (09:17 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 11 Jul 2022 07:17:14 +0000 (09:17 +0200)
added patches:
dmaengine-at_xdma-handle-errors-of-at_xdmac_alloc_desc-correctly.patch
dmaengine-pl330-fix-lockdep-warning-about-non-static-key.patch
dmaengine-ti-add-missing-put_device-in-ti_dra7_xbar_route_allocate.patch
dmaengine-ti-fix-refcount-leak-in-ti_dra7_xbar_route_allocate.patch
dt-bindings-dma-allwinner-sun50i-a64-dma-fix-min-max-typo.patch
ida-don-t-use-bug_on-for-debugging.patch

queue-5.10/dmaengine-at_xdma-handle-errors-of-at_xdmac_alloc_desc-correctly.patch [new file with mode: 0644]
queue-5.10/dmaengine-pl330-fix-lockdep-warning-about-non-static-key.patch [new file with mode: 0644]
queue-5.10/dmaengine-ti-add-missing-put_device-in-ti_dra7_xbar_route_allocate.patch [new file with mode: 0644]
queue-5.10/dmaengine-ti-fix-refcount-leak-in-ti_dra7_xbar_route_allocate.patch [new file with mode: 0644]
queue-5.10/dt-bindings-dma-allwinner-sun50i-a64-dma-fix-min-max-typo.patch [new file with mode: 0644]
queue-5.10/ida-don-t-use-bug_on-for-debugging.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/dmaengine-at_xdma-handle-errors-of-at_xdmac_alloc_desc-correctly.patch b/queue-5.10/dmaengine-at_xdma-handle-errors-of-at_xdmac_alloc_desc-correctly.patch
new file mode 100644 (file)
index 0000000..e139723
--- /dev/null
@@ -0,0 +1,36 @@
+From 3770d92bd5237d686e49da7b2fb86f53ee6ed259 Mon Sep 17 00:00:00 2001
+From: Michael Walle <michael@walle.cc>
+Date: Thu, 26 May 2022 15:51:11 +0200
+Subject: dmaengine: at_xdma: handle errors of at_xdmac_alloc_desc() correctly
+
+From: Michael Walle <michael@walle.cc>
+
+commit 3770d92bd5237d686e49da7b2fb86f53ee6ed259 upstream.
+
+It seems that it is valid to have less than the requested number of
+descriptors. But what is not valid and leads to subsequent errors is to
+have zero descriptors. In that case, abort the probing.
+
+Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
+Signed-off-by: Michael Walle <michael@walle.cc>
+Link: https://lore.kernel.org/r/20220526135111.1470926-1-michael@walle.cc
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/dma/at_xdmac.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/dma/at_xdmac.c
++++ b/drivers/dma/at_xdmac.c
+@@ -1838,6 +1838,11 @@ static int at_xdmac_alloc_chan_resources
+       for (i = 0; i < init_nr_desc_per_channel; i++) {
+               desc = at_xdmac_alloc_desc(chan, GFP_KERNEL);
+               if (!desc) {
++                      if (i == 0) {
++                              dev_warn(chan2dev(chan),
++                                       "can't allocate any descriptors\n");
++                              return -EIO;
++                      }
+                       dev_warn(chan2dev(chan),
+                               "only %d descriptors have been allocated\n", i);
+                       break;
diff --git a/queue-5.10/dmaengine-pl330-fix-lockdep-warning-about-non-static-key.patch b/queue-5.10/dmaengine-pl330-fix-lockdep-warning-about-non-static-key.patch
new file mode 100644 (file)
index 0000000..34c0d0a
--- /dev/null
@@ -0,0 +1,55 @@
+From b64b3b2f1d81f83519582e1feee87d77f51f5f17 Mon Sep 17 00:00:00 2001
+From: Dmitry Osipenko <dmitry.osipenko@collabora.com>
+Date: Fri, 20 May 2022 21:14:32 +0300
+Subject: dmaengine: pl330: Fix lockdep warning about non-static key
+
+From: Dmitry Osipenko <dmitry.osipenko@collabora.com>
+
+commit b64b3b2f1d81f83519582e1feee87d77f51f5f17 upstream.
+
+The DEFINE_SPINLOCK() macro shouldn't be used for dynamically allocated
+spinlocks. The lockdep warns about this and disables locking validator.
+Fix the warning by making lock static.
+
+ INFO: trying to register non-static key.
+ The code is fine but needs lockdep annotation, or maybe
+ you didn't initialize this object before use?
+ turning off the locking correctness validator.
+ Hardware name: Radxa ROCK Pi 4C (DT)
+ Call trace:
+  dump_backtrace.part.0+0xcc/0xe0
+  show_stack+0x18/0x6c
+  dump_stack_lvl+0x8c/0xb8
+  dump_stack+0x18/0x34
+  register_lock_class+0x4a8/0x4cc
+  __lock_acquire+0x78/0x20cc
+  lock_acquire.part.0+0xe0/0x230
+  lock_acquire+0x68/0x84
+  _raw_spin_lock_irqsave+0x84/0xc4
+  add_desc+0x44/0xc0
+  pl330_get_desc+0x15c/0x1d0
+  pl330_prep_dma_cyclic+0x100/0x270
+  snd_dmaengine_pcm_trigger+0xec/0x1c0
+  dmaengine_pcm_trigger+0x18/0x24
+  ...
+
+Fixes: e588710311ee ("dmaengine: pl330: fix descriptor allocation fail")
+Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
+Link: https://lore.kernel.org/r/20220520181432.149904-1-dmitry.osipenko@collabora.com
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/dma/pl330.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/dma/pl330.c
++++ b/drivers/dma/pl330.c
+@@ -2591,7 +2591,7 @@ static struct dma_pl330_desc *pl330_get_
+       /* If the DMAC pool is empty, alloc new */
+       if (!desc) {
+-              DEFINE_SPINLOCK(lock);
++              static DEFINE_SPINLOCK(lock);
+               LIST_HEAD(pool);
+               if (!add_desc(&pool, &lock, GFP_ATOMIC, 1))
diff --git a/queue-5.10/dmaengine-ti-add-missing-put_device-in-ti_dra7_xbar_route_allocate.patch b/queue-5.10/dmaengine-ti-add-missing-put_device-in-ti_dra7_xbar_route_allocate.patch
new file mode 100644 (file)
index 0000000..78269af
--- /dev/null
@@ -0,0 +1,55 @@
+From 615a4bfc426e11dba05c2cf343f9ac752fb381d2 Mon Sep 17 00:00:00 2001
+From: Miaoqian Lin <linmq006@gmail.com>
+Date: Sun, 5 Jun 2022 08:27:22 +0400
+Subject: dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate
+
+From: Miaoqian Lin <linmq006@gmail.com>
+
+commit 615a4bfc426e11dba05c2cf343f9ac752fb381d2 upstream.
+
+of_find_device_by_node() takes reference, we should use put_device()
+to release it when not need anymore.
+
+Fixes: a074ae38f859 ("dmaengine: Add driver for TI DMA crossbar on DRA7x")
+Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
+Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
+Link: https://lore.kernel.org/r/20220605042723.17668-1-linmq006@gmail.com
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/dma/ti/dma-crossbar.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/dma/ti/dma-crossbar.c
++++ b/drivers/dma/ti/dma-crossbar.c
+@@ -245,6 +245,7 @@ static void *ti_dra7_xbar_route_allocate
+       if (dma_spec->args[0] >= xbar->xbar_requests) {
+               dev_err(&pdev->dev, "Invalid XBAR request number: %d\n",
+                       dma_spec->args[0]);
++              put_device(&pdev->dev);
+               return ERR_PTR(-EINVAL);
+       }
+@@ -252,12 +253,14 @@ static void *ti_dra7_xbar_route_allocate
+       dma_spec->np = of_parse_phandle(ofdma->of_node, "dma-masters", 0);
+       if (!dma_spec->np) {
+               dev_err(&pdev->dev, "Can't get DMA master\n");
++              put_device(&pdev->dev);
+               return ERR_PTR(-EINVAL);
+       }
+       map = kzalloc(sizeof(*map), GFP_KERNEL);
+       if (!map) {
+               of_node_put(dma_spec->np);
++              put_device(&pdev->dev);
+               return ERR_PTR(-ENOMEM);
+       }
+@@ -269,6 +272,7 @@ static void *ti_dra7_xbar_route_allocate
+               dev_err(&pdev->dev, "Run out of free DMA requests\n");
+               kfree(map);
+               of_node_put(dma_spec->np);
++              put_device(&pdev->dev);
+               return ERR_PTR(-ENOMEM);
+       }
+       set_bit(map->xbar_out, xbar->dma_inuse);
diff --git a/queue-5.10/dmaengine-ti-fix-refcount-leak-in-ti_dra7_xbar_route_allocate.patch b/queue-5.10/dmaengine-ti-fix-refcount-leak-in-ti_dra7_xbar_route_allocate.patch
new file mode 100644 (file)
index 0000000..a14f1f8
--- /dev/null
@@ -0,0 +1,33 @@
+From c132fe78ad7b4ce8b5d49a501a15c29d08eeb23a Mon Sep 17 00:00:00 2001
+From: Miaoqian Lin <linmq006@gmail.com>
+Date: Sun, 5 Jun 2022 08:27:23 +0400
+Subject: dmaengine: ti: Fix refcount leak in ti_dra7_xbar_route_allocate
+
+From: Miaoqian Lin <linmq006@gmail.com>
+
+commit c132fe78ad7b4ce8b5d49a501a15c29d08eeb23a upstream.
+
+of_parse_phandle() returns a node pointer with refcount
+incremented, we should use of_node_put() on it when not needed anymore.
+
+Add missing of_node_put() in to fix this.
+
+Fixes: ec9bfa1e1a79 ("dmaengine: ti-dma-crossbar: dra7: Use bitops instead of idr")
+Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
+Link: https://lore.kernel.org/r/20220605042723.17668-2-linmq006@gmail.com
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/dma/ti/dma-crossbar.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/dma/ti/dma-crossbar.c
++++ b/drivers/dma/ti/dma-crossbar.c
+@@ -268,6 +268,7 @@ static void *ti_dra7_xbar_route_allocate
+               mutex_unlock(&xbar->mutex);
+               dev_err(&pdev->dev, "Run out of free DMA requests\n");
+               kfree(map);
++              of_node_put(dma_spec->np);
+               return ERR_PTR(-ENOMEM);
+       }
+       set_bit(map->xbar_out, xbar->dma_inuse);
diff --git a/queue-5.10/dt-bindings-dma-allwinner-sun50i-a64-dma-fix-min-max-typo.patch b/queue-5.10/dt-bindings-dma-allwinner-sun50i-a64-dma-fix-min-max-typo.patch
new file mode 100644 (file)
index 0000000..4b7b0ac
--- /dev/null
@@ -0,0 +1,34 @@
+From 607a48c78e6b427b0b684d24e61c19e846ad65d6 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Fri, 1 Jul 2022 22:19:02 -0500
+Subject: dt-bindings: dma: allwinner,sun50i-a64-dma: Fix min/max typo
+
+From: Samuel Holland <samuel@sholland.org>
+
+commit 607a48c78e6b427b0b684d24e61c19e846ad65d6 upstream.
+
+The conditional block for variants with a second clock should have set
+minItems, not maxItems, which was already 2. Since clock-names requires
+two items, this typo should not have caused any problems.
+
+Fixes: edd14218bd66 ("dt-bindings: dmaengine: Convert Allwinner A31 and A64 DMA to a schema")
+Signed-off-by: Samuel Holland <samuel@sholland.org>
+Reviewed-by: Rob Herring <robh@kernel.org>
+Link: https://lore.kernel.org/r/20220702031903.21703-1-samuel@sholland.org
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
++++ b/Documentation/devicetree/bindings/dma/allwinner,sun50i-a64-dma.yaml
+@@ -61,7 +61,7 @@ if:
+ then:
+   properties:
+     clocks:
+-      maxItems: 2
++      minItems: 2
+   required:
+     - clock-names
diff --git a/queue-5.10/ida-don-t-use-bug_on-for-debugging.patch b/queue-5.10/ida-don-t-use-bug_on-for-debugging.patch
new file mode 100644 (file)
index 0000000..e69b8fa
--- /dev/null
@@ -0,0 +1,58 @@
+From fc82bbf4dede758007763867d0282353c06d1121 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Sun, 10 Jul 2022 13:55:49 -0700
+Subject: ida: don't use BUG_ON() for debugging
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit fc82bbf4dede758007763867d0282353c06d1121 upstream.
+
+This is another old BUG_ON() that just shouldn't exist (see also commit
+a382f8fee42c: "signal handling: don't use BUG_ON() for debugging").
+
+In fact, as Matthew Wilcox points out, this condition shouldn't really
+even result in a warning, since a negative id allocation result is just
+a normal allocation failure:
+
+  "I wonder if we should even warn here -- sure, the caller is trying to
+   free something that wasn't allocated, but we don't warn for
+   kfree(NULL)"
+
+and goes on to point out how that current error check is only causing
+people to unnecessarily do their own index range checking before freeing
+it.
+
+This was noted by Itay Iellin, because the bluetooth HCI socket cookie
+code does *not* do that range checking, and ends up just freeing the
+error case too, triggering the BUG_ON().
+
+The HCI code requires CAP_NET_RAW, and seems to just result in an ugly
+splat, but there really is no reason to BUG_ON() here, and we have
+generally striven for allocation models where it's always ok to just do
+
+    free(alloc());
+
+even if the allocation were to fail for some random reason (usually
+obviously that "random" reason being some resource limit).
+
+Fixes: 88eca0207cf1 ("ida: simplified functions for id allocation")
+Reported-by: Itay Iellin <ieitayie@gmail.com>
+Suggested-by: Matthew Wilcox <willy@infradead.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ lib/idr.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/lib/idr.c
++++ b/lib/idr.c
+@@ -491,7 +491,8 @@ void ida_free(struct ida *ida, unsigned
+       struct ida_bitmap *bitmap;
+       unsigned long flags;
+-      BUG_ON((int)id < 0);
++      if ((int)id < 0)
++              return;
+       xas_lock_irqsave(&xas, flags);
+       bitmap = xas_load(&xas);
index 756a45338aa59f8d5df33d173318d5974e9bf237..96d85e4ff980f42ecd95012e5172158e1ded5546 100644 (file)
@@ -47,3 +47,9 @@ dmaengine-imx-sdma-allow-imx8m-for-imx7-fw-revs.patch
 misc-rtsx_usb-fix-use-of-dma-mapped-buffer-for-usb-bulk-transfer.patch
 misc-rtsx_usb-use-separate-command-and-response-buffers.patch
 misc-rtsx_usb-set-return-value-in-rsp_buf-alloc-err-path.patch
+dt-bindings-dma-allwinner-sun50i-a64-dma-fix-min-max-typo.patch
+ida-don-t-use-bug_on-for-debugging.patch
+dmaengine-pl330-fix-lockdep-warning-about-non-static-key.patch
+dmaengine-at_xdma-handle-errors-of-at_xdmac_alloc_desc-correctly.patch
+dmaengine-ti-fix-refcount-leak-in-ti_dra7_xbar_route_allocate.patch
+dmaengine-ti-add-missing-put_device-in-ti_dra7_xbar_route_allocate.patch