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

From: Daney, David
Date: Wed Apr 29 2015 - 20:07:17 EST


First of all, let me apologize for top posting, but it is currently my only option.

I have been away from my office for the last couple of weeks, I was going to re-send on Monday, May 4. If you would like to do it before then, please go ahead and do that.

Thanks,
David Daney

-----Original Message-----
From: Ido Shamay [mailto:idos@xxxxxxxxxxxxxxxxxx]
Sent: Wednesday, April 29, 2015 7:14 AM
To: David Daney; linux-kernel@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; linux-rdma@xxxxxxxxxxxxxxx; David S. Miller
Cc: Roland Dreier; Sean Hefty; Hal Rosenstock; Amir Vadai; Or Gerlitz; Yishai Hadas; Matan Barak; Majd Dibbiny; Jack Morgenstein; Moni Shoua; Eugenia Emantayev; Saeed Mahameed; Yuval Atias; Maor Gottlieb; David Daney
Subject: Re: [PATCH RFC] net/mlx4: Remove improper usage of dma_alloc_coherent().


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/