|
@@ -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;
|
|
|
}
|
|
|
|