Skip to content

Commit 6d57339

Browse files
arndbChristoph Hellwig
authored andcommitted
dma-coherent: fix rmem_dma_device_init regression
My recent bug fix introduced another bug, which caused rmem_dma_device_init to always fail, as rmem->priv is never set to anything. This restores the previous behavior, calling dma_init_coherent_memory() whenever ->priv is NULL. Fixes: d35b099 ("dma-coherent: fix dma_declare_coherent_memory() logic error") Reported-by: Roy Pledge <[email protected]> Tested-by: Roy Pledge <[email protected]> Signed-off-by: Arnd Bergmann <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]>
1 parent 2bd6bf0 commit 6d57339

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

drivers/base/dma-coherent.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -348,16 +348,15 @@ static int rmem_dma_device_init(struct reserved_mem *rmem, struct device *dev)
348348
struct dma_coherent_mem *mem = rmem->priv;
349349
int ret;
350350

351-
if (!mem)
352-
return -ENODEV;
353-
354-
ret = dma_init_coherent_memory(rmem->base, rmem->base, rmem->size,
355-
DMA_MEMORY_EXCLUSIVE, &mem);
356-
357-
if (ret) {
358-
pr_err("Reserved memory: failed to init DMA memory pool at %pa, size %ld MiB\n",
359-
&rmem->base, (unsigned long)rmem->size / SZ_1M);
360-
return ret;
351+
if (!mem) {
352+
ret = dma_init_coherent_memory(rmem->base, rmem->base,
353+
rmem->size,
354+
DMA_MEMORY_EXCLUSIVE, &mem);
355+
if (ret) {
356+
pr_err("Reserved memory: failed to init DMA memory pool at %pa, size %ld MiB\n",
357+
&rmem->base, (unsigned long)rmem->size / SZ_1M);
358+
return ret;
359+
}
361360
}
362361
mem->use_dev_dma_pfn_offset = true;
363362
rmem->priv = mem;

0 commit comments

Comments
 (0)