libnvdimm: fix phys_addr for nvdimm_clear_poison
authorToshi Kani <toshi.kani@hpe.com>
Tue, 25 Apr 2017 21:16:51 +0000 (15:16 -0600)
committerDan Williams <dan.j.williams@intel.com>
Thu, 27 Apr 2017 20:51:18 +0000 (13:51 -0700)
nvdimm_clear_poison() expects a physical address, not an offset.
Fix nsio_rw_bytes() to call nvdimm_clear_poison() with a physical
address.

Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
Cc: Dave Jiang <dave.jiang@intel.com>
Cc: Vishal Verma <vishal.l.verma@intel.com>
Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/claim.c

index b3323c0697f6239ebbfe757137cde8352fe3c480..2c19bc7fc056771e40718b185f43613fe0484621 100644 (file)
@@ -246,7 +246,8 @@ static int nsio_rw_bytes(struct nd_namespace_common *ndns,
                if (IS_ALIGNED(offset, 512) && IS_ALIGNED(size, 512)) {
                        long cleared;
 
-                       cleared = nvdimm_clear_poison(&ndns->dev, offset, size);
+                       cleared = nvdimm_clear_poison(&ndns->dev,
+                                       nsio->res.start + offset, size);
                        if (cleared < size)
                                rc = -EIO;
                        if (cleared > 0 && cleared / 512) {