Description
In the Linux kernel, the following vulnerability has been resolved: dax/fsdev: use __va(phys) for kaddr in direct_access 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. This leaves dev_dax->virt_addr write-only, so remove the field (suggested by Dave Jiang).
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
759455848df0b9ac3acabdbedcdc4a55af67935f to < 7b642bd3d39105eef4d5908970726c5fda291b53affected759455848df0b9ac3acabdbedcdc4a55af67935f to < ff7c73fca793bd5c29a15ba735b0886f62f3a840affected
Linux Linux
Default version status: affected
7.1affected0 to < 7.1unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected