All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Shi <alex.shi@linux.alibaba.com>
To: Yang Shi <yang.shi@linux.alibaba.com>,
	Michael Wang <yun.wang@linux.alibaba.com>,
	Xunlei Pang <xlpang@linux.alibaba.com>
Cc: Dexuan Cui <decui@microsoft.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	gregkh@linuxfoundation.org, linux-mm@kvack.org, olaf@aepfle.de,
	apw@canonical.com, jasowang@redhat.com, dave.hansen@intel.com,
	riel@redhat.com, stable@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	Alex Shi <alex.shi@linux.alibaba.com>
Subject: [PATCH 008/216] x86, pageattr: Prevent overflow in slow_virt_to_phys() for X86_PAE
Date: Wed, 28 Nov 2018 19:29:20 +0800	[thread overview]
Message-ID: <1543404768-89470-8-git-send-email-alex.shi@linux.alibaba.com> (raw)
In-Reply-To: <1543404768-89470-1-git-send-email-alex.shi@linux.alibaba.com>

From: Dexuan Cui <decui@microsoft.com>

commit d1cd1210834649ce1ca6bafe5ac25d2f40331343 upstream.

pte_pfn() returns a PFN of long (32 bits in 32-PAE), so "long <<
PAGE_SHIFT" will overflow for PFNs above 4GB.

Due to this issue, some Linux 32-PAE distros, running as guests on Hyper-V,
with 5GB memory assigned, can't load the netvsc driver successfully and
hence the synthetic network device can't work (we can use the kernel parameter
mem=3000M to work around the issue).

Cast pte_pfn() to phys_addr_t before shifting.

Fixes: "commit d76565344512: x86, mm: Create slow_virt_to_phys()"
Signed-off-by: Dexuan Cui <decui@microsoft.com>
Cc: K. Y. Srinivasan <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: gregkh@linuxfoundation.org
Cc: linux-mm@kvack.org
Cc: olaf@aepfle.de
Cc: apw@canonical.com
Cc: jasowang@redhat.com
Cc: dave.hansen@intel.com
Cc: riel@redhat.com
Cc: stable@vger.kernel.org
Link: http://lkml.kernel.org/r/1414580017-27444-1-git-send-email-decui@microsoft.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Alex Shi <alex.shi@linux.alibaba.com>
---
 7u/arch/x86/mm/pageattr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/7u/arch/x86/mm/pageattr.c b/7u/arch/x86/mm/pageattr.c
index 4ed2b2d..81b82f4 100644
--- a/7u/arch/x86/mm/pageattr.c
+++ b/7u/arch/x86/mm/pageattr.c
@@ -405,7 +405,7 @@ phys_addr_t slow_virt_to_phys(void *__virt_addr)
 	psize = page_level_size(level);
 	pmask = page_level_mask(level);
 	offset = virt_addr & ~pmask;
-	phys_addr = pte_pfn(*pte) << PAGE_SHIFT;
+	phys_addr = (phys_addr_t)pte_pfn(*pte) << PAGE_SHIFT;
 	return (phys_addr | offset);
 }
 EXPORT_SYMBOL_GPL(slow_virt_to_phys);
-- 
1.8.3.1

       reply	other threads:[~2018-11-28 11:29 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1543404768-89470-1-git-send-email-alex.shi@linux.alibaba.com>
2018-11-28 11:29 ` Alex Shi [this message]
2018-11-28 12:14   ` [PATCH 008/216] x86, pageattr: Prevent overflow in slow_virt_to_phys() for X86_PAE Alex Shi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1543404768-89470-8-git-send-email-alex.shi@linux.alibaba.com \
    --to=alex.shi@linux.alibaba.com \
    --cc=apw@canonical.com \
    --cc=dave.hansen@intel.com \
    --cc=decui@microsoft.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=haiyangz@microsoft.com \
    --cc=jasowang@redhat.com \
    --cc=kys@microsoft.com \
    --cc=linux-mm@kvack.org \
    --cc=olaf@aepfle.de \
    --cc=riel@redhat.com \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=xlpang@linux.alibaba.com \
    --cc=yang.shi@linux.alibaba.com \
    --cc=yun.wang@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.