]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 3 Dec 2018 11:23:05 +0000 (12:23 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 3 Dec 2018 11:23:05 +0000 (12:23 +0100)
added patches:
arm-dts-rockchip-remove-0-from-the-veyron-memory-node.patch
dmaengine-at_hdmac-fix-memory-leak-in-at_dma_xlate.patch
dmaengine-at_hdmac-fix-module-unloading.patch

queue-4.19/arm-dts-rockchip-remove-0-from-the-veyron-memory-node.patch [new file with mode: 0644]
queue-4.19/dmaengine-at_hdmac-fix-memory-leak-in-at_dma_xlate.patch [new file with mode: 0644]
queue-4.19/dmaengine-at_hdmac-fix-module-unloading.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/arm-dts-rockchip-remove-0-from-the-veyron-memory-node.patch b/queue-4.19/arm-dts-rockchip-remove-0-from-the-veyron-memory-node.patch
new file mode 100644 (file)
index 0000000..ae6aa31
--- /dev/null
@@ -0,0 +1,41 @@
+From 672e60b72bbe7aace88721db55b380b6a51fb8f9 Mon Sep 17 00:00:00 2001
+From: Heiko Stuebner <heiko@sntech.de>
+Date: Sun, 18 Nov 2018 20:03:02 +0100
+Subject: ARM: dts: rockchip: Remove @0 from the veyron memory node
+
+From: Heiko Stuebner <heiko@sntech.de>
+
+commit 672e60b72bbe7aace88721db55b380b6a51fb8f9 upstream.
+
+The Coreboot version on veyron ChromeOS devices seems to ignore
+memory@0 nodes when updating the available memory and instead
+inserts another memory node without the address.
+
+This leads to 4GB systems only ever be using 2GB as the memory@0
+node takes precedence. So remove the @0 for veyron devices.
+
+Fixes: 0b639b815f15 ("ARM: dts: rockchip: Add missing unit name to memory nodes in rk3288 boards")
+Cc: stable@vger.kernel.org
+Reported-by: Heikki Lindholm <holin@iki.fi>
+Signed-off-by: Heiko Stuebner <heiko@sntech.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/boot/dts/rk3288-veyron.dtsi |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/arch/arm/boot/dts/rk3288-veyron.dtsi
++++ b/arch/arm/boot/dts/rk3288-veyron.dtsi
+@@ -10,7 +10,11 @@
+ #include "rk3288.dtsi"
+ / {
+-      memory@0 {
++      /*
++       * The default coreboot on veyron devices ignores memory@0 nodes
++       * and would instead create another memory node.
++       */
++      memory {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
diff --git a/queue-4.19/dmaengine-at_hdmac-fix-memory-leak-in-at_dma_xlate.patch b/queue-4.19/dmaengine-at_hdmac-fix-memory-leak-in-at_dma_xlate.patch
new file mode 100644 (file)
index 0000000..553df9c
--- /dev/null
@@ -0,0 +1,57 @@
+From 98f5f932254b88ce828bc8e4d1642d14e5854caa Mon Sep 17 00:00:00 2001
+From: Richard Genoud <richard.genoud@gmail.com>
+Date: Tue, 27 Nov 2018 17:06:34 +0100
+Subject: dmaengine: at_hdmac: fix memory leak in at_dma_xlate()
+
+From: Richard Genoud <richard.genoud@gmail.com>
+
+commit 98f5f932254b88ce828bc8e4d1642d14e5854caa upstream.
+
+The leak was found when opening/closing a serial port a great number of
+time, increasing kmalloc-32 in slabinfo.
+
+Each time the port was opened, dma_request_slave_channel() was called.
+Then, in at_dma_xlate(), atslave was allocated with devm_kzalloc() and
+never freed. (Well, it was free at module unload, but that's not what we
+want).
+So, here, kzalloc is more suited for the job since it has to be freed in
+atc_free_chan_resources().
+
+Cc: stable@vger.kernel.org
+Fixes: bbe89c8e3d59 ("at_hdmac: move to generic DMA binding")
+Reported-by: Mario Forner <m.forner@be4energy.com>
+Suggested-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
+Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/dma/at_hdmac.c |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/dma/at_hdmac.c
++++ b/drivers/dma/at_hdmac.c
+@@ -1641,6 +1641,12 @@ static void atc_free_chan_resources(stru
+       atchan->descs_allocated = 0;
+       atchan->status = 0;
++      /*
++       * Free atslave allocated in at_dma_xlate()
++       */
++      kfree(chan->private);
++      chan->private = NULL;
++
+       dev_vdbg(chan2dev(chan), "free_chan_resources: done\n");
+ }
+@@ -1675,7 +1681,7 @@ static struct dma_chan *at_dma_xlate(str
+       dma_cap_zero(mask);
+       dma_cap_set(DMA_SLAVE, mask);
+-      atslave = devm_kzalloc(&dmac_pdev->dev, sizeof(*atslave), GFP_KERNEL);
++      atslave = kzalloc(sizeof(*atslave), GFP_KERNEL);
+       if (!atslave)
+               return NULL;
diff --git a/queue-4.19/dmaengine-at_hdmac-fix-module-unloading.patch b/queue-4.19/dmaengine-at_hdmac-fix-module-unloading.patch
new file mode 100644 (file)
index 0000000..09b22d9
--- /dev/null
@@ -0,0 +1,37 @@
+From 77e75fda94d2ebb86aa9d35fb1860f6395bf95de Mon Sep 17 00:00:00 2001
+From: Richard Genoud <richard.genoud@gmail.com>
+Date: Tue, 27 Nov 2018 17:06:35 +0100
+Subject: dmaengine: at_hdmac: fix module unloading
+
+From: Richard Genoud <richard.genoud@gmail.com>
+
+commit 77e75fda94d2ebb86aa9d35fb1860f6395bf95de upstream.
+
+of_dma_controller_free() was not called on module onloading.
+This lead to a soft lockup:
+watchdog: BUG: soft lockup - CPU#0 stuck for 23s!
+Modules linked in: at_hdmac [last unloaded: at_hdmac]
+when of_dma_request_slave_channel() tried to call ofdma->of_dma_xlate().
+
+Cc: stable@vger.kernel.org
+Fixes: bbe89c8e3d59 ("at_hdmac: move to generic DMA binding")
+Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
+Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/dma/at_hdmac.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/dma/at_hdmac.c
++++ b/drivers/dma/at_hdmac.c
+@@ -2006,6 +2006,8 @@ static int at_dma_remove(struct platform
+       struct resource         *io;
+       at_dma_off(atdma);
++      if (pdev->dev.of_node)
++              of_dma_controller_free(pdev->dev.of_node);
+       dma_async_device_unregister(&atdma->dma_common);
+       dma_pool_destroy(atdma->memset_pool);
index 48f5655a05c57b77eaba97a0f4cf807e328511be..e9c6f7fff27217078866a544445ecbcc9b73b2ce 100644 (file)
@@ -118,3 +118,6 @@ ext2-initialize-opts.s_mount_opt-as-zero-before-using-it.patch
 ext2-fix-potential-use-after-free.patch
 asoc-intel-cht_bsw_max98090_ti-add-quirk-for-boards-using-pmc_plt_clk_0.patch
 asoc-pcm186x-fix-device-reset-registers-trigger-value.patch
+arm-dts-rockchip-remove-0-from-the-veyron-memory-node.patch
+dmaengine-at_hdmac-fix-memory-leak-in-at_dma_xlate.patch
+dmaengine-at_hdmac-fix-module-unloading.patch