From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ozlabs.org (ozlabs.org [103.22.144.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 752C91A00D3 for ; Thu, 10 Jul 2014 08:49:29 +1000 (EST) Date: Thu, 10 Jul 2014 08:49:11 +1000 From: Stephen Rothwell To: Madhusudanan Kandasamy Subject: Re: [PATCH] powerpc: Fail remap_4k_pfn() if PFN doesn't fit inside PTE Message-ID: <20140710084911.22cb58d4@canb.auug.org.au> In-Reply-To: <53BD68FF.7000307@linux.vnet.ibm.com> References: <53BD68FF.7000307@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; boundary="Sig_/h1fVS2dE973m3B64ZcYvb=W"; protocol="application/pgp-signature" Cc: Paul Mackerras , linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --Sig_/h1fVS2dE973m3B64ZcYvb=W Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi Madhusudanan, On Wed, 09 Jul 2014 21:38:31 +0530 Madhusudanan Kandasamy wrote: > > diff --git a/arch/powerpc/include/asm/pte-hash64-64k.h b/arch/powerpc/inc= lude/asm/pte-hash64-64k.h > index d836d94..10af7f1 100644 > --- a/arch/powerpc/include/asm/pte-hash64-64k.h > +++ b/arch/powerpc/include/asm/pte-hash64-64k.h > @@ -74,8 +74,15 @@ > #define pte_pagesize_index(mm, addr, pte) \ > (((pte) & _PAGE_COMBO)? MMU_PAGE_4K: MMU_PAGE_64K) >=20 > +static inline int bad_4k_pfn(void) > +{ > + WARN_ON(1); > + return -EINVAL; > +} > + > #define remap_4k_pfn(vma, addr, pfn, prot) \ > - remap_pfn_range((vma), (addr), (pfn), PAGE_SIZE, \ > - __pgprot(pgprot_val((prot)) | _PAGE_4K_PFN)) > + ((pfn >=3D (1UL << (64 - PTE_RPN_SHIFT))) ? bad_4k_pfn() : \ > + remap_pfn_range((vma), (addr), (pfn), PAGE_SIZE, \ > + __pgprot(pgprot_val((prot)) | _PAGE_4K_PFN))) >=20 > #endif /* __ASSEMBLY__ */ WARN_ON() returns the value it is passed, so no helper is needed: #define remap_4k_pfn(vma, addr, pfn, prot) \ - remap_pfn_range((vma), (addr), (pfn), PAGE_SIZE, \ - __pgprot(pgprot_val((prot)) | _PAGE_4K_PFN)) + WARN_ON(((pfn >=3D (1UL << (64 - PTE_RPN_SHIFT)))) ? -EINVAL : \ + remap_pfn_range((vma), (addr), (pfn), PAGE_SIZE, \ + __pgprot(pgprot_val((prot)) | _PAGE_4K_PFN))) --=20 Cheers, Stephen Rothwell sfr@canb.auug.org.au --Sig_/h1fVS2dE973m3B64ZcYvb=W Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJTvcb3AAoJEMDTa8Ir7ZwVlaIQAJBoBqF3IYhUMKxcoWhAmFXO huw/jlZF4sAFPjGintk8dk9PRoGXSwbQ/jcBJtdrFI3WDjkd4DVuClQ+bcw7nK3Z yJ5iam3EI5VT7e6wfymEtXSpKu4pBYT/nQVeWVzzgVM6hGo+i2np06xTQKbzWOpD paYvNzdiEkUqpaQUmH8d+YMKphYn0Fspye5jSQFyOeevKWx2y7y0ntOY2Ay3DE1u PSuYwpusaOKTKu6pRtnsnQWuRqigix37SDJquZ0ws9DO3A2DNVMPzW7qP2CMvCGX wmt2JoCLKngj2j0IyKcTRbIqAgh7tPBPhNiBvsBc96QdGH0AzmjJHj2FAovC1fZ8 BWxgC6/QDt5TghG1+UVik/FdIP0xymUuwnagkA2kTEanOwVfk3EwSgHWQf4tBSl1 5vagNJCY/pKiK1VQhCEmPGV3YLmyYwkKBNh5pDYi5cFTBpPOgCptEkzKU2aujp5B D3r1f29+GsUcJViMKuHQ7a9hb2LKZpmzL+Pm0tdLI2QBIOzMraArWcvL/zcx7apH jbWmbcfqtF5YjkKrgau6EiQoTVF+S1xGukLWpcTuMrb2K+3BOyLkfFDvfTS5s7PI RLR6JrDQ2gzqWN0rMQtbHq0ux6NVDz9IE4uYA/gkmviPdNQCTTzqsNHK1nYMCqSe +JlbkihkpA9gV8y7ypBR =z5JH -----END PGP SIGNATURE----- --Sig_/h1fVS2dE973m3B64ZcYvb=W--