Message ID | 1417782895-13657-2-git-send-email-mark.rutland@arm.com |
---|---|
State | New |
Headers | show |
On 5 December 2014 at 12:34, Mark Rutland <mark.rutland@arm.com> wrote: > When building with 48-bit VAs, it's possible to get the following > warning when building the arm64 page table dumping code: > > arch/arm64/mm/dump.c: In function ‘walk_pgd’: > arch/arm64/mm/dump.c:266:2: warning: right shift count >= width of type > pgd_t *pgd = pgd_offset(mm, 0); > ^ > > As pgd_offset is a macro and the second argument is not cast to any > particular type, the zero will be given integer type by the compiler. > As pgd_offset passes the pargument to pgd_index, we then try to shift > the 32-bit integer by at least 39 bits (for 4k pages). > > Elsewhere the pgd_offset is passed a second argument of unsigned long > type, so let's do the same here by passing '0UL' rather than '0'. > Hi Mark, Thanks, I must not have spotted that warning earlier. Acked-by: Steve Capper <steve.capper@linaro.org>
On Fri, Dec 05, 2014 at 01:39:56PM +0000, Steve Capper wrote: > On 5 December 2014 at 12:34, Mark Rutland <mark.rutland@arm.com> wrote: > > When building with 48-bit VAs, it's possible to get the following > > warning when building the arm64 page table dumping code: > > > > arch/arm64/mm/dump.c: In function ‘walk_pgd’: > > arch/arm64/mm/dump.c:266:2: warning: right shift count >= width of type > > pgd_t *pgd = pgd_offset(mm, 0); > > ^ > > > > As pgd_offset is a macro and the second argument is not cast to any > > particular type, the zero will be given integer type by the compiler. > > As pgd_offset passes the pargument to pgd_index, we then try to shift > > the 32-bit integer by at least 39 bits (for 4k pages). > > > > Elsewhere the pgd_offset is passed a second argument of unsigned long > > type, so let's do the same here by passing '0UL' rather than '0'. > > > > Hi Mark, > Thanks, I must not have spotted that warning earlier. Me neither, I'd tested on this configuration but somehow missed the build warning. > Acked-by: Steve Capper <steve.capper@linaro.org> Cheers! Mark.
diff --git a/arch/arm64/mm/dump.c b/arch/arm64/mm/dump.c index bf69601..a546776 100644 --- a/arch/arm64/mm/dump.c +++ b/arch/arm64/mm/dump.c @@ -272,7 +272,7 @@ static void walk_pud(struct pg_state *st, pgd_t *pgd, unsigned long start) static void walk_pgd(struct pg_state *st, struct mm_struct *mm, unsigned long start) { - pgd_t *pgd = pgd_offset(mm, 0); + pgd_t *pgd = pgd_offset(mm, 0UL); unsigned i; unsigned long addr;
When building with 48-bit VAs, it's possible to get the following warning when building the arm64 page table dumping code: arch/arm64/mm/dump.c: In function ‘walk_pgd’: arch/arm64/mm/dump.c:266:2: warning: right shift count >= width of type pgd_t *pgd = pgd_offset(mm, 0); ^ As pgd_offset is a macro and the second argument is not cast to any particular type, the zero will be given integer type by the compiler. As pgd_offset passes the pargument to pgd_index, we then try to shift the 32-bit integer by at least 39 bits (for 4k pages). Elsewhere the pgd_offset is passed a second argument of unsigned long type, so let's do the same here by passing '0UL' rather than '0'. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Kees Cook <keescook@chromium.org> Cc: Laura Abbott <lauraa@codeaurora.org> Cc: Steve Capper <steve.capper@arm.com> Cc: Will Deacon <will.deacon@arm.com> --- arch/arm64/mm/dump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)