> +extern int mf_dax_mapping_kill_procs(struct address_space *mapping, pgoff_t index, int flags); No nee for the extern, please avoid the overly long line. > @@ -120,6 +121,13 @@ static int hwpoison_filter_dev(struct page *p) > if (PageSlab(p)) > return -EINVAL; > > + if (pfn_valid(page_to_pfn(p))) { > + if (is_device_fsdax_page(p)) > + return 0; > + else > + return -EINVAL; > + } > + This looks odd. For one there is no need for an else after a return. But more importantly page_mapping() as called below pretty much assumes a valid PFN, so something is fishy in this function. > + if (is_zone_device_page(p)) { > + if (is_device_fsdax_page(p)) > + tk->addr = vma->vm_start + > + ((pgoff - vma->vm_pgoff) << PAGE_SHIFT); The arithmetics here scream for a common helper, I suspect there might be other places that could use the same helper. > +int mf_dax_mapping_kill_procs(struct address_space *mapping, pgoff_t index, int flags) Overly long line. Also the naming scheme with the mf_ seems rather unusual. Maybe dax_kill_mapping_procs? Also please add a kerneldoc comment describing the function given that it exported.