mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 08:15:07 -04:00
dax/fsdev: fail probe on invalid pgmap offset
Convert the WARN_ON to a fatal error when pgmap_phys > phys. This
condition means the remapped region starts after the device's data
region, which is an impossible state. Previously the probe continued
with data_offset=0, leaving virt_addr silently misaligned. Now probe
returns -EINVAL with a diagnostic message.
Fixes: 759455848d ("dax: Save the kva from memremap")
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Reviewed-by: Pankaj Gupta <pankaj.gupta@amd.com>
Signed-off-by: John Groves <john@groves.net>
Link: https://patch.msgid.link/0100019ecc0999fa-97574544-8b6b-46cf-9f33-423abdbeee7f-000000@email.amazonses.com
Signed-off-by: Alison Schofield <alison.schofield@intel.com>
This commit is contained in:
committed by
Alison Schofield
parent
ff7c73fca7
commit
755effecd6
@@ -342,8 +342,12 @@ static int fsdev_dax_probe(struct dev_dax *dev_dax)
|
||||
u64 phys = dev_dax->ranges[0].range.start;
|
||||
u64 pgmap_phys = pgmap[0].range.start;
|
||||
|
||||
if (!WARN_ON(pgmap_phys > phys))
|
||||
data_offset = phys - pgmap_phys;
|
||||
if (pgmap_phys > phys) {
|
||||
dev_err(dev, "pgmap start %#llx exceeds data start %#llx\n",
|
||||
pgmap_phys, phys);
|
||||
return -EINVAL;
|
||||
}
|
||||
data_offset = phys - pgmap_phys;
|
||||
|
||||
pr_debug("%s: offset detected phys=%llx pgmap_phys=%llx offset=%llx\n",
|
||||
__func__, phys, pgmap_phys, data_offset);
|
||||
|
||||
Reference in New Issue
Block a user