A new local variable is introduced for accessing p2m entry with lock protection.

 

Cc: Stefano Stabellini <sstabellini@kernel.org>

Signed-off-by: Hillf Danton <hdanton@sina.com>

---

 

--- a/arch/arm/xen/p2m.c 2019-04-30 12:32:05.363768200 +0800

+++ b/arch/arm/xen/p2m.c    2019-04-30 12:58:19.854334100 +0800

@@ -70,8 +70,9 @@ unsigned long __pfn_to_mfn(unsigned long

             entry = rb_entry(n, struct xen_p2m_entry, rbnode_phys);

             if (entry->pfn <= pfn &&

                           entry->pfn + entry->nr_pages > pfn) {

+                  unsigned long mfn = entry->mfn + (pfn - entry->pfn);

                    read_unlock_irqrestore(&p2m_lock, irqflags);

-                  return entry->mfn + (pfn - entry->pfn);

+                  return mfn;

             }

             if (pfn < entry->pfn)

                    n = n->rb_left;

--