A new local variable is introduced for accessing p2m entry with lock protection. Cc: Stefano Stabellini Signed-off-by: Hillf Danton --- --- 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; --