Re: [PATCH V3 5/9] dax/fsdev: use __va(phys) for kaddr in direct_access
From: Alison Schofield
Date: Tue Jun 02 2026 - 20:18:29 EST
On Sat, May 30, 2026 at 04:51:04PM +0000, John Groves wrote:
> From: John Groves <John@xxxxxxxxxx>
>
> Use __va(phys) instead of virt_addr + linear_offset for the kaddr
> return in __fsdev_dax_direct_access(). The previous code added a
> device-linear byte offset to virt_addr (which is __va of ranges[0]),
> but for multi-range devices with physical gaps between ranges, this
> linear arithmetic crosses the gap and produces a wrong kernel virtual
> address. Using __va(phys) where phys comes from dax_pgoff_to_phys()
> is correct for any range layout because the direct map translates
> each physical address independently.
>
> Fixes: 759455848df0b ("dax: Save the kva from memremap")
> Signed-off-by: John Groves <john@xxxxxxxxxx>
> ---
Reviewed-by: Alison Schofield <alison.schofield@xxxxxxxxx>