From: Greg Kroah-Hartman Date: Wed, 12 Dec 2018 17:30:05 +0000 (+0100) Subject: drop broken 3.18.y and 4.4.y patch X-Git-Tag: v4.19.9~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=854e2e54ad570ef42c4df60730302fc4bb7f60cb;p=thirdparty%2Fkernel%2Fstable-queue.git drop broken 3.18.y and 4.4.y patch --- diff --git a/queue-3.18/dmaengine-cppi41-delete-channel-from-pending-list-when-stop-channel.patch b/queue-3.18/dmaengine-cppi41-delete-channel-from-pending-list-when-stop-channel.patch deleted file mode 100644 index 0fa8ee84183..00000000000 --- a/queue-3.18/dmaengine-cppi41-delete-channel-from-pending-list-when-stop-channel.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 59861547ec9a9736e7882f6fb0c096a720ff811a Mon Sep 17 00:00:00 2001 -From: Bin Liu -Date: Mon, 12 Nov 2018 09:43:22 -0600 -Subject: dmaengine: cppi41: delete channel from pending list when stop channel - -From: Bin Liu - -commit 59861547ec9a9736e7882f6fb0c096a720ff811a upstream. - -The driver defines three states for a cppi channel. -- idle: .chan_busy == 0 && not in .pending list -- pending: .chan_busy == 0 && in .pending list -- busy: .chan_busy == 1 && not in .pending list - -There are cases in which the cppi channel could be in the pending state -when cppi41_dma_issue_pending() is called after cppi41_runtime_suspend() -is called. - -cppi41_stop_chan() has a bug for these cases to set channels to idle state. -It only checks the .chan_busy flag, but not the .pending list, then later -when cppi41_runtime_resume() is called the channels in .pending list will -be transitioned to busy state. - -Removing channels from the .pending list solves the problem. - -Fixes: 975faaeb9985 ("dma: cppi41: start tear down only if channel is busy") -Cc: stable@vger.kernel.org # v3.15+ -Signed-off-by: Bin Liu -Reviewed-by: Peter Ujfalusi -Signed-off-by: Vinod Koul -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/dma/cppi41.c | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - ---- a/drivers/dma/cppi41.c -+++ b/drivers/dma/cppi41.c -@@ -629,8 +629,22 @@ static int cppi41_stop_chan(struct dma_c - - desc_phys = lower_32_bits(c->desc_phys); - desc_num = (desc_phys - cdd->descs_phys) / sizeof(struct cppi41_desc); -- if (!cdd->chan_busy[desc_num]) -+ if (!cdd->chan_busy[desc_num]) { -+ struct cppi41_channel *cc, *_ct; -+ -+ /* -+ * channels might still be in the pendling list if -+ * cppi41_dma_issue_pending() is called after -+ * cppi41_runtime_suspend() is called -+ */ -+ list_for_each_entry_safe(cc, _ct, &cdd->pending, node) { -+ if (cc != c) -+ continue; -+ list_del(&cc->node); -+ break; -+ } - return 0; -+ } - - ret = cppi41_tear_down_chan(c); - if (ret) diff --git a/queue-3.18/series b/queue-3.18/series index 70082ee54d1..b8c394c7cdc 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -45,7 +45,6 @@ alsa-hda-add-support-for-amd-stoney-ridge.patch alsa-pcm-call-snd_pcm_unlink-conditionally-at-closing.patch alsa-pcm-fix-interval-evaluation-with-openmin-max.patch sunrpc-fix-leak-of-krb5p-encode-pages.patch -dmaengine-cppi41-delete-channel-from-pending-list-when-stop-channel.patch xhci-prevent-u1-u2-link-pm-states-if-exit-latency-is-too-long.patch usb-serial-option-add-device-id-for-hp-lt2523-novate.patch staging-lustre-remove-two-build-warnings.patch diff --git a/queue-4.4/dmaengine-cppi41-delete-channel-from-pending-list-when-stop-channel.patch b/queue-4.4/dmaengine-cppi41-delete-channel-from-pending-list-when-stop-channel.patch deleted file mode 100644 index dccb960926e..00000000000 --- a/queue-4.4/dmaengine-cppi41-delete-channel-from-pending-list-when-stop-channel.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 59861547ec9a9736e7882f6fb0c096a720ff811a Mon Sep 17 00:00:00 2001 -From: Bin Liu -Date: Mon, 12 Nov 2018 09:43:22 -0600 -Subject: dmaengine: cppi41: delete channel from pending list when stop channel - -From: Bin Liu - -commit 59861547ec9a9736e7882f6fb0c096a720ff811a upstream. - -The driver defines three states for a cppi channel. -- idle: .chan_busy == 0 && not in .pending list -- pending: .chan_busy == 0 && in .pending list -- busy: .chan_busy == 1 && not in .pending list - -There are cases in which the cppi channel could be in the pending state -when cppi41_dma_issue_pending() is called after cppi41_runtime_suspend() -is called. - -cppi41_stop_chan() has a bug for these cases to set channels to idle state. -It only checks the .chan_busy flag, but not the .pending list, then later -when cppi41_runtime_resume() is called the channels in .pending list will -be transitioned to busy state. - -Removing channels from the .pending list solves the problem. - -Fixes: 975faaeb9985 ("dma: cppi41: start tear down only if channel is busy") -Cc: stable@vger.kernel.org # v3.15+ -Signed-off-by: Bin Liu -Reviewed-by: Peter Ujfalusi -Signed-off-by: Vinod Koul -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/dma/cppi41.c | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - ---- a/drivers/dma/cppi41.c -+++ b/drivers/dma/cppi41.c -@@ -628,8 +628,22 @@ static int cppi41_stop_chan(struct dma_c - - desc_phys = lower_32_bits(c->desc_phys); - desc_num = (desc_phys - cdd->descs_phys) / sizeof(struct cppi41_desc); -- if (!cdd->chan_busy[desc_num]) -+ if (!cdd->chan_busy[desc_num]) { -+ struct cppi41_channel *cc, *_ct; -+ -+ /* -+ * channels might still be in the pendling list if -+ * cppi41_dma_issue_pending() is called after -+ * cppi41_runtime_suspend() is called -+ */ -+ list_for_each_entry_safe(cc, _ct, &cdd->pending, node) { -+ if (cc != c) -+ continue; -+ list_del(&cc->node); -+ break; -+ } - return 0; -+ } - - ret = cppi41_tear_down_chan(c); - if (ret) diff --git a/queue-4.4/series b/queue-4.4/series index 911d9ae4a6e..30334dfe8cb 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -78,7 +78,6 @@ alsa-pcm-fix-interval-evaluation-with-openmin-max.patch virtio-s390-avoid-race-on-vcdev-config.patch virtio-s390-fix-race-in-ccw_io_helper.patch sunrpc-fix-leak-of-krb5p-encode-pages.patch -dmaengine-cppi41-delete-channel-from-pending-list-when-stop-channel.patch xhci-prevent-u1-u2-link-pm-states-if-exit-latency-is-too-long.patch staging-lustre-remove-two-build-warnings.patch cifs-fix-separator-when-building-path-from-dentry.patch