Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29cdd4e4 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by Joerg Roedel
Browse files

dma-debug: release free_entries_lock before saving stack trace



Saving stack trace can take a while and once the entry
is allocated free_entries_lock is no longer needed.

Signed-off-by: default avatarJakub Kicinski <kubakici@wp.pl>
Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
parent 00341028
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -430,7 +430,7 @@ static struct dma_debug_entry *__dma_entry_alloc(void)
 */
static struct dma_debug_entry *dma_entry_alloc(void)
{
	struct dma_debug_entry *entry = NULL;
	struct dma_debug_entry *entry;
	unsigned long flags;

	spin_lock_irqsave(&free_entries_lock, flags);
@@ -438,11 +438,14 @@ static struct dma_debug_entry *dma_entry_alloc(void)
	if (list_empty(&free_entries)) {
		pr_err("DMA-API: debugging out of memory - disabling\n");
		global_disable = true;
		goto out;
		spin_unlock_irqrestore(&free_entries_lock, flags);
		return NULL;
	}

	entry = __dma_entry_alloc();

	spin_unlock_irqrestore(&free_entries_lock, flags);

#ifdef CONFIG_STACKTRACE
	entry->stacktrace.max_entries = DMA_DEBUG_STACKTRACE_ENTRIES;
	entry->stacktrace.entries = entry->st_entries;
@@ -450,9 +453,6 @@ static struct dma_debug_entry *dma_entry_alloc(void)
	save_stack_trace(&entry->stacktrace);
#endif

out:
	spin_unlock_irqrestore(&free_entries_lock, flags);

	return entry;
}