Patch "soc/fsl/qbman: fix issue in qman_delete_cgr_safe()" has been added to the 4.15-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
soc/fsl/qbman: fix issue in qman_delete_cgr_safe()
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
soc-fsl-qbman-fix-issue-in-qman_delete_cgr_safe.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Mar 28 18:37:51 CEST 2018
From: Madalin Bucur <[email protected]>
Date: Wed, 14 Mar 2018 08:37:28 -0500
Subject: soc/fsl/qbman: fix issue in qman_delete_cgr_safe()
From: Madalin Bucur <[email protected]>
[ Upstream commit 96f413f47677366e0ae03797409bfcc4151dbf9e ]
The wait_for_completion() call in qman_delete_cgr_safe() was triggering a scheduling while atomic bug, replacing the kthread with a smp_call_function_single() call to fix it.
--- drivers/soc/fsl/qbman/qman.c | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-)
drivers/soc/fsl/qbman/qman.c +5 -23
@@ -2443,39 +2443,21 @@ struct cgr_comp {struct completion completion; }; -static int qman_delete_cgr_thread (void *p) +static void qman_delete_cgr_smp_call (void *p) { -struct cgr_comp *cgr_comp = (struct cgr_comp *)p; -int ret; - - ret =qman_delete_cgr (cgr_comp->cgr); -complete (&cgr_comp->completion); - -return ret; +qman_delete_cgr ((struct qman_cgr *)p); }void qman_delete_cgr_safe (struct qman_cgr *cgr) { -struct task_struct *thread; -struct cgr_comp cgr_comp; -preempt_disable ();if (qman_cgr_cpus[cgr->cgrid] !=smp_processor_id ()) { -init_completion (&cgr_comp.completion); - cgr_comp.cgr = cgr; - thread =kthread_create (qman_delete_cgr_thread, &cgr_comp, -"cgr_del" ); - -if (IS_ERR (thread)) - goto out; - -kthread_bind (thread, qman_cgr_cpus[cgr->cgrid]); -wake_up_process (thread); -wait_for_completion (&cgr_comp.completion); +smp_call_function_single (qman_cgr_cpus[cgr->cgrid], + qman_delete_cgr_smp_call, cgr, true);preempt_enable ();return ; } -out: +qman_delete_cgr (cgr);preempt_enable (); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.15/dpaa_eth-remove-duplicate-increment-of-the-tx_errors-counter.patch queue-4.15/soc-fsl-qbman-fix-issue-in-qman_delete_cgr_safe.patch queue-4.15/dpaa_eth-fix-error-in-dpaa_remove.patch