Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1477643
| From | Dan Williams <dan.j.williams@intel.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 2/5] dax: fix offset to physical address translation |
| Date | 2016-09-06 19:00 +0200 |
| Message-ID | <serT3-4wT-15@gated-at.bofh.it> (permalink) |
| References | <serT3-4wT-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
In pgoff_to_phys() 'pgoff' is already relative to base of the dax
device, so we only need to compare if the current offset is within the
current resource extent. Otherwise, we are double accounting the
resource start offset when translating pgoff to a physical address.
Cc: <stable@vger.kernel.org>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
drivers/dax/dax.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/dax/dax.c b/drivers/dax/dax.c
index 29f600f2c447..4653f84cabe7 100644
--- a/drivers/dax/dax.c
+++ b/drivers/dax/dax.c
@@ -357,16 +357,18 @@ static int check_vma(struct dax_dev *dax_dev, struct vm_area_struct *vma,
static phys_addr_t pgoff_to_phys(struct dax_dev *dax_dev, pgoff_t pgoff,
unsigned long size)
{
+ phys_addr_t phys, offset;
struct resource *res;
- phys_addr_t phys;
int i;
+ offset = pgoff * PAGE_SIZE;
for (i = 0; i < dax_dev->num_resources; i++) {
res = &dax_dev->res[i];
- phys = pgoff * PAGE_SIZE + res->start;
- if (phys >= res->start && phys <= res->end)
+ if (offset < resource_size(res)) {
+ phys = offset + res->start;
break;
- pgoff -= PHYS_PFN(resource_size(res));
+ }
+ offset -= resource_size(res);
}
if (i < dax_dev->num_resources) {
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/5] device-dax and huge-page dax fixes for 4.8-rc6 Dan Williams <dan.j.williams@intel.com> - 2016-09-06 19:00 +0200 [PATCH 2/5] dax: fix offset to physical address translation Dan Williams <dan.j.williams@intel.com> - 2016-09-06 19:00 +0200 [PATCH 1/5] dax: fix mapping size check Dan Williams <dan.j.williams@intel.com> - 2016-09-06 19:00 +0200
csiph-web