From: Cyril Chemparathy <cyril@ti.com> To: <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org> Cc: <arnd@arndb.de>, <catalin.marinas@arm.com>, <grant.likely@secretlab.ca>, <nico@linaro.org>, <linux@arm.linux.org.uk>, <will.deacon@arm.com>, Cyril Chemparathy <cyril@ti.com>, Vitaly Andrianov <vitalya@ti.com> Subject: [PATCH v3 06/17] ARM: LPAE: use signed arithmetic for mask definitions Date: Tue, 11 Sep 2012 13:39:04 -0400 [thread overview] Message-ID: <1347385155-11643-7-git-send-email-cyril@ti.com> (raw) In-Reply-To: <1347385155-11643-1-git-send-email-cyril@ti.com> This patch applies to PAGE_MASK, PMD_MASK, and PGDIR_MASK, where forcing unsigned long math truncates the mask at the 32-bits. This clearly does bad things on PAE systems. This patch fixes this problem by defining these masks as signed quantities. We then rely on sign extension to do the right thing. Signed-off-by: Cyril Chemparathy <cyril@ti.com> Signed-off-by: Vitaly Andrianov <vitalya@ti.com> Reviewed-by: Nicolas Pitre <nico@linaro.org> --- arch/arm/include/asm/page.h | 2 +- arch/arm/include/asm/pgtable-3level.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h index ecf9019..1e0fe08 100644 --- a/arch/arm/include/asm/page.h +++ b/arch/arm/include/asm/page.h @@ -13,7 +13,7 @@ /* PAGE_SHIFT determines the page size */ #define PAGE_SHIFT 12 #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) -#define PAGE_MASK (~(PAGE_SIZE-1)) +#define PAGE_MASK (~((1 << PAGE_SHIFT) - 1)) #ifndef __ASSEMBLY__ diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h index b249035..ae39d11 100644 --- a/arch/arm/include/asm/pgtable-3level.h +++ b/arch/arm/include/asm/pgtable-3level.h @@ -48,16 +48,16 @@ #define PMD_SHIFT 21 #define PMD_SIZE (1UL << PMD_SHIFT) -#define PMD_MASK (~(PMD_SIZE-1)) +#define PMD_MASK (~((1 << PMD_SHIFT) - 1)) #define PGDIR_SIZE (1UL << PGDIR_SHIFT) -#define PGDIR_MASK (~(PGDIR_SIZE-1)) +#define PGDIR_MASK (~((1 << PGDIR_SHIFT) - 1)) /* * section address mask and size definitions. */ #define SECTION_SHIFT 21 #define SECTION_SIZE (1UL << SECTION_SHIFT) -#define SECTION_MASK (~(SECTION_SIZE-1)) +#define SECTION_MASK (~((1 << SECTION_SHIFT) - 1)) #define USER_PTRS_PER_PGD (PAGE_OFFSET / PGDIR_SIZE) -- 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: cyril@ti.com (Cyril Chemparathy) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 06/17] ARM: LPAE: use signed arithmetic for mask definitions Date: Tue, 11 Sep 2012 13:39:04 -0400 [thread overview] Message-ID: <1347385155-11643-7-git-send-email-cyril@ti.com> (raw) In-Reply-To: <1347385155-11643-1-git-send-email-cyril@ti.com> This patch applies to PAGE_MASK, PMD_MASK, and PGDIR_MASK, where forcing unsigned long math truncates the mask at the 32-bits. This clearly does bad things on PAE systems. This patch fixes this problem by defining these masks as signed quantities. We then rely on sign extension to do the right thing. Signed-off-by: Cyril Chemparathy <cyril@ti.com> Signed-off-by: Vitaly Andrianov <vitalya@ti.com> Reviewed-by: Nicolas Pitre <nico@linaro.org> --- arch/arm/include/asm/page.h | 2 +- arch/arm/include/asm/pgtable-3level.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h index ecf9019..1e0fe08 100644 --- a/arch/arm/include/asm/page.h +++ b/arch/arm/include/asm/page.h @@ -13,7 +13,7 @@ /* PAGE_SHIFT determines the page size */ #define PAGE_SHIFT 12 #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) -#define PAGE_MASK (~(PAGE_SIZE-1)) +#define PAGE_MASK (~((1 << PAGE_SHIFT) - 1)) #ifndef __ASSEMBLY__ diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h index b249035..ae39d11 100644 --- a/arch/arm/include/asm/pgtable-3level.h +++ b/arch/arm/include/asm/pgtable-3level.h @@ -48,16 +48,16 @@ #define PMD_SHIFT 21 #define PMD_SIZE (1UL << PMD_SHIFT) -#define PMD_MASK (~(PMD_SIZE-1)) +#define PMD_MASK (~((1 << PMD_SHIFT) - 1)) #define PGDIR_SIZE (1UL << PGDIR_SHIFT) -#define PGDIR_MASK (~(PGDIR_SIZE-1)) +#define PGDIR_MASK (~((1 << PGDIR_SHIFT) - 1)) /* * section address mask and size definitions. */ #define SECTION_SHIFT 21 #define SECTION_SIZE (1UL << SECTION_SHIFT) -#define SECTION_MASK (~(SECTION_SIZE-1)) +#define SECTION_MASK (~((1 << SECTION_SHIFT) - 1)) #define USER_PTRS_PER_PGD (PAGE_OFFSET / PGDIR_SIZE) -- 1.7.9.5
next prev parent reply other threads:[~2012-09-11 17:44 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-09-11 17:38 [PATCH v3 00/17] LPAE fixes and extensions for Keystone Cyril Chemparathy 2012-09-11 17:38 ` Cyril Chemparathy 2012-09-11 17:38 ` [PATCH v3 01/17] ARM: add mechanism for late code patching Cyril Chemparathy 2012-09-11 17:38 ` Cyril Chemparathy 2012-09-21 18:09 ` Nicolas Pitre 2012-09-21 18:09 ` Nicolas Pitre 2012-09-21 22:30 ` Cyril Chemparathy 2012-09-21 22:30 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 02/17] ARM: add self test for runtime patch mechanism Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-21 17:40 ` Nicolas Pitre 2012-09-21 17:40 ` Nicolas Pitre 2012-09-21 22:25 ` Cyril Chemparathy 2012-09-21 22:25 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 03/17] ARM: use late patch framework for phys-virt patching Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-21 18:15 ` Nicolas Pitre 2012-09-21 18:15 ` Nicolas Pitre 2012-09-11 17:39 ` [PATCH v3 04/17] ARM: LPAE: use phys_addr_t on virt <--> phys conversion Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 05/17] ARM: LPAE: support 64-bit virt_to_phys patching Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy [this message] 2012-09-11 17:39 ` [PATCH v3 06/17] ARM: LPAE: use signed arithmetic for mask definitions Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 07/17] ARM: LPAE: use phys_addr_t in alloc_init_pud() Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 08/17] ARM: LPAE: use phys_addr_t in free_memmap() Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 09/17] ARM: LPAE: use phys_addr_t for initrd location and size Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-21 18:30 ` Nicolas Pitre 2012-09-21 18:30 ` Nicolas Pitre 2012-09-11 17:39 ` [PATCH v3 10/17] ARM: LPAE: use phys_addr_t in switch_mm() Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-21 18:33 ` Nicolas Pitre 2012-09-21 18:33 ` Nicolas Pitre 2012-09-21 18:41 ` Russell King - ARM Linux 2012-09-21 18:41 ` Russell King - ARM Linux 2012-09-21 18:53 ` Nicolas Pitre 2012-09-21 18:53 ` Nicolas Pitre 2012-09-11 17:39 ` [PATCH v3 11/17] ARM: LPAE: use 64-bit accessors for TTBR registers Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 12/17] ARM: LPAE: define ARCH_LOW_ADDRESS_LIMIT for bootmem Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 13/17] ARM: LPAE: factor out T1SZ and TTBR1 computations Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 14/17] ARM: LPAE: accomodate >32-bit addresses for page table base Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 15/17] ARM: mm: use physical addresses in highmem sanity checks Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 16/17] ARM: mm: cleanup checks for membank overlap with vmalloc area Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-11 17:39 ` [PATCH v3 17/17] ARM: mm: clean up membank size limit checks Cyril Chemparathy 2012-09-11 17:39 ` Cyril Chemparathy 2012-09-21 18:42 ` Nicolas Pitre 2012-09-21 18:42 ` Nicolas Pitre 2012-09-21 22:49 ` Cyril Chemparathy 2012-09-21 22:49 ` Cyril Chemparathy
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=1347385155-11643-7-git-send-email-cyril@ti.com \ --to=cyril@ti.com \ --cc=arnd@arndb.de \ --cc=catalin.marinas@arm.com \ --cc=grant.likely@secretlab.ca \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=nico@linaro.org \ --cc=vitalya@ti.com \ --cc=will.deacon@arm.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: linkBe 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.