]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 11 Jul 2022 07:17:01 +0000 (09:17 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 11 Jul 2022 07:17:01 +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
ida-don-t-use-bug_on-for-debugging.patch

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

diff --git a/queue-4.19/dmaengine-at_xdma-handle-errors-of-at_xdmac_alloc_desc-correctly.patch b/queue-4.19/dmaengine-at_xdma-handle-errors-of-at_xdmac_alloc_desc-correctly.patch
new file mode 100644 (file)
index 0000000..0c74eff
--- /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
+@@ -1804,6 +1804,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_ATOMIC);
+               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-4.19/dmaengine-pl330-fix-lockdep-warning-about-non-static-key.patch b/queue-4.19/dmaengine-pl330-fix-lockdep-warning-about-non-static-key.patch
new file mode 100644 (file)
index 0000000..0b3f6e3
--- /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
+@@ -2568,7 +2568,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-4.19/dmaengine-ti-add-missing-put_device-in-ti_dra7_xbar_route_allocate.patch b/queue-4.19/dmaengine-ti-add-missing-put_device-in-ti_dra7_xbar_route_allocate.patch
new file mode 100644 (file)
index 0000000..5f993a9
--- /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
+@@ -251,6 +251,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);
+       }
+@@ -258,12 +259,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);
+       }
+@@ -275,6 +278,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-4.19/dmaengine-ti-fix-refcount-leak-in-ti_dra7_xbar_route_allocate.patch b/queue-4.19/dmaengine-ti-fix-refcount-leak-in-ti_dra7_xbar_route_allocate.patch
new file mode 100644 (file)
index 0000000..662522f
--- /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
+@@ -274,6 +274,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-4.19/ida-don-t-use-bug_on-for-debugging.patch b/queue-4.19/ida-don-t-use-bug_on-for-debugging.patch
new file mode 100644 (file)
index 0000000..dfd3d9a
--- /dev/null
@@ -0,0 +1,59 @@
+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 |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/lib/idr.c
++++ b/lib/idr.c
+@@ -573,7 +573,9 @@ void ida_free(struct ida *ida, unsigned
+ {
+       unsigned long flags;
+-      BUG_ON((int)id < 0);
++      if ((int)id < 0)
++              return;
++
+       xa_lock_irqsave(&ida->ida_rt, flags);
+       ida_remove(ida, id);
+       xa_unlock_irqrestore(&ida->ida_rt, flags);
index bb0531f9603695858d23b5adae893737f6dbc678..2dbd40309771b16b8565e0be06107041e7070355 100644 (file)
@@ -24,3 +24,8 @@ i2c-cadence-unregister-the-clk-notifier-in-error-pat.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
+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