From: Greg Kroah-Hartman Date: Mon, 3 Dec 2018 11:23:05 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: v4.19.7~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2153425682a5b8a58635e7d68be584d71db5abb3;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches 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 --- 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 index 00000000000..ae6aa3142fc --- /dev/null +++ b/queue-4.19/arm-dts-rockchip-remove-0-from-the-veyron-memory-node.patch @@ -0,0 +1,41 @@ +From 672e60b72bbe7aace88721db55b380b6a51fb8f9 Mon Sep 17 00:00:00 2001 +From: Heiko Stuebner +Date: Sun, 18 Nov 2018 20:03:02 +0100 +Subject: ARM: dts: rockchip: Remove @0 from the veyron memory node + +From: Heiko Stuebner + +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 +Signed-off-by: Heiko Stuebner +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..553df9c2502 --- /dev/null +++ b/queue-4.19/dmaengine-at_hdmac-fix-memory-leak-in-at_dma_xlate.patch @@ -0,0 +1,57 @@ +From 98f5f932254b88ce828bc8e4d1642d14e5854caa Mon Sep 17 00:00:00 2001 +From: Richard Genoud +Date: Tue, 27 Nov 2018 17:06:34 +0100 +Subject: dmaengine: at_hdmac: fix memory leak in at_dma_xlate() + +From: Richard Genoud + +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 +Suggested-by: Alexandre Belloni +Acked-by: Alexandre Belloni +Acked-by: Ludovic Desroches +Signed-off-by: Richard Genoud +Signed-off-by: Vinod Koul +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..09b22d9a4f7 --- /dev/null +++ b/queue-4.19/dmaengine-at_hdmac-fix-module-unloading.patch @@ -0,0 +1,37 @@ +From 77e75fda94d2ebb86aa9d35fb1860f6395bf95de Mon Sep 17 00:00:00 2001 +From: Richard Genoud +Date: Tue, 27 Nov 2018 17:06:35 +0100 +Subject: dmaengine: at_hdmac: fix module unloading + +From: Richard Genoud + +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 +Signed-off-by: Richard Genoud +Signed-off-by: Vinod Koul +Signed-off-by: Greg Kroah-Hartman + +--- + 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); diff --git a/queue-4.19/series b/queue-4.19/series index 48f5655a05c..e9c6f7fff27 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -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