On 26/05/26 04:22PM, Dave Jiang wrote:
> 
> 
> On 5/22/26 12:18 PM, John Groves wrote:
> > From: John Groves <[email protected]>
> > 
> > Three fixes for fsdev.c:
> > 
> > 1. Fix memory_failure offset calculation for multi-range devices.
> >    The old code subtracted ranges[0].range.start from the faulting PFN's
> >    physical address, which produces an incorrect (inflated) logical offset
> >    when the PFN falls in ranges[1] or beyond due to physical gaps between
> >    ranges. Add fsdev_pfn_to_offset() to walk the range list and compute
> >    the correct device-linear byte offset.
> > 
> > 2. Clear pgmap->vmemmap_shift for static DAX devices. When rebinding a
> >    static device from device_dax (which may set vmemmap_shift based on
> >    alignment) to fsdev_dax, the stale vmemmap_shift persists on the
> >    shared pgmap. Explicitly zero it before devm_memremap_pages() so the
> >    vmemmap is built for order-0 folios as fsdev requires.
> > 
> > 3. Clear dev_dax->pgmap on probe failure for dynamic devices. After the
> >    dynamic path sets dev_dax->pgmap, if a later probe step fails, devres
> >    frees the devm_kzalloc'd pgmap but leaves dev_dax->pgmap dangling.
> >    Subsequent probe attempts would hit the "dynamic-dax with pre-populated
> >    page map" check and fail permanently. Use a goto cleanup to NULL
> >    dev_dax->pgmap on error.
> 
> 3 fixes, 3 separate patches?
> 
> DJ

Yes, thanks. Done.

John

<snip>


Reply via email to