Re: [PATCH RFC] net/mlx4: Remove improper usage of dma_alloc_coherent().

From: Ido Shamay
Date: Wed Apr 29 2015 - 10:14:27 EST



On 4/13/2015 12:33 AM, Ido Shamay wrote:
On 4/7/2015 10:43 PM, Ido Shamay wrote:
On 4/7/2015 2:00 AM, David Daney wrote:
From: David Daney <david.daney@xxxxxxxxxx>

The dma_alloc_coherent() function returns a virtual address which can
be used for coherent access to the underlying memory. On some
architectures, like arm64, undefined behavior results if this memory is
also accessed via virtual mappings that are not coherent. Because of
their undefined nature, operations like virt_to_page() return garbage
when passed virtual addresses obtained from dma_alloc_coherent(). Any
subsequent mappings via vmap() of the garbage page values are unusable
and result in bad things like bus errors (synchronous aborts in ARM64
speak).

The MLX4 driver contains code that does the equivalent of:

vmap(virt_to_page(dma_alloc_coherent))

This results in an OOPs when the device is opened.

To fix this...

Always use result of dma_alloc_coherent() directly.
Acked-by: Ido Shamay <idos@xxxxxxxxxxxx>
Thanks David, this is good for us

Hi David,

Are you resending this patch or you want us to do that?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/