| From 3017cd63f26fc655d56875aaf497153ba60e9edf Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com> |
| Date: Thu, 26 May 2016 15:16:25 -0700 |
| Subject: dma-debug: avoid spinlock recursion when disabling dma-debug |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| |
| commit 3017cd63f26fc655d56875aaf497153ba60e9edf upstream. |
| |
| With netconsole (at least) the pr_err("... disablingn") call can |
| recurse back into the dma-debug code, where it'll try to grab |
| free_entries_lock again. Avoid the problem by doing the printk after |
| dropping the lock. |
| |
| Link: http://lkml.kernel.org/r/1463678421-18683-1-git-send-email-ville.syrjala@linux.intel.com |
| Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| lib/dma-debug.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/lib/dma-debug.c |
| +++ b/lib/dma-debug.c |
| @@ -657,9 +657,9 @@ static struct dma_debug_entry *dma_entry |
| spin_lock_irqsave(&free_entries_lock, flags); |
| |
| if (list_empty(&free_entries)) { |
| - pr_err("DMA-API: debugging out of memory - disabling\n"); |
| global_disable = true; |
| spin_unlock_irqrestore(&free_entries_lock, flags); |
| + pr_err("DMA-API: debugging out of memory - disabling\n"); |
| return NULL; |
| } |
| |