summaryrefslogtreecommitdiff
path: root/kernel/dma/debug.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2024-08-30 14:14:29 +0200
committerThomas Zimmermann <tzimmermann@suse.de>2024-08-30 15:00:53 +0200
commit3973a8d052829dcc5193fb6330dcd13c2b7127ca (patch)
treeb02f355e874ec5997196dfea09ad796419c38e7d /kernel/dma/debug.c
parente75356ef5baef69e9f577023c453d91a902dc082 (diff)
parent6d0ebb3904853d18eeec7af5e8b4ca351b6f9025 (diff)
Merge drm/drm-next into drm-misc-next
Backmerging to get fixes from v6.11-rc5. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Diffstat (limited to 'kernel/dma/debug.c')
-rw-r--r--kernel/dma/debug.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
index a6e3792b15f8..d570535342cb 100644
--- a/kernel/dma/debug.c
+++ b/kernel/dma/debug.c
@@ -416,8 +416,11 @@ static unsigned long long phys_addr(struct dma_debug_entry *entry)
* dma_active_cacheline entry to track per event. dma_map_sg(), on the
* other hand, consumes a single dma_debug_entry, but inserts 'nents'
* entries into the tree.
+ *
+ * Use __GFP_NOWARN because the printk from an OOM, to netconsole, could end
+ * up right back in the DMA debugging code, leading to a deadlock.
*/
-static RADIX_TREE(dma_active_cacheline, GFP_ATOMIC);
+static RADIX_TREE(dma_active_cacheline, GFP_ATOMIC | __GFP_NOWARN);
static DEFINE_SPINLOCK(radix_lock);
#define ACTIVE_CACHELINE_MAX_OVERLAP ((1 << RADIX_TREE_MAX_TAGS) - 1)
#define CACHELINE_PER_PAGE_SHIFT (PAGE_SHIFT - L1_CACHE_SHIFT)