* [PATCH] x86/head64: use pointer type in sizeof
@ 2016-02-09 13:44 Alexander Kuleshov
2016-02-09 13:53 ` Ingo Molnar
2016-02-09 16:09 ` [tip:x86/boot] x86/boot: Use proper array element type in memset( ) size calculation tip-bot for Alexander Kuleshov
0 siblings, 2 replies; 3+ messages in thread
From: Alexander Kuleshov @ 2016-02-09 13:44 UTC (permalink / raw)
To: Ingo Molnar, Thomas Gleixner, H . Peter Anvin
Cc: Andrey Ryabinin, Andy Lutomirski, Andy Shevchenko,
Alexander Popov, linux-kernel, Alexander Kuleshov
We changed loops with memset in the 5e9ebbd87a99 commit (x86/boot:
Micro-optimize reset_early_page_tables()). The base for size of
memset was size of pud_p/pmd_p, but the they are actually
represented as pointers, although they have the same sizes.
Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
---
based on x86/tip/boot
arch/x86/kernel/head64.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 35843ca..7793a17 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -75,7 +75,7 @@ again:
}
pud_p = (pudval_t *)early_dynamic_pgts[next_early_pgt++];
- memset(pud_p, 0, sizeof(pud_p) * PTRS_PER_PUD);
+ memset(pud_p, 0, sizeof(*pud_p) * PTRS_PER_PUD);
*pgd_p = (pgdval_t)pud_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE;
}
pud_p += pud_index(address);
@@ -90,7 +90,7 @@ again:
}
pmd_p = (pmdval_t *)early_dynamic_pgts[next_early_pgt++];
- memset(pmd_p, 0, sizeof(pmd_p) * PTRS_PER_PMD);
+ memset(pmd_p, 0, sizeof(*pmd_p) * PTRS_PER_PMD);
*pud_p = (pudval_t)pmd_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE;
}
pmd = (physaddr & PMD_MASK) + early_pmd_flags;
--
2.7.0.25.gfc10eb5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] x86/head64: use pointer type in sizeof
2016-02-09 13:44 [PATCH] x86/head64: use pointer type in sizeof Alexander Kuleshov
@ 2016-02-09 13:53 ` Ingo Molnar
2016-02-09 16:09 ` [tip:x86/boot] x86/boot: Use proper array element type in memset( ) size calculation tip-bot for Alexander Kuleshov
1 sibling, 0 replies; 3+ messages in thread
From: Ingo Molnar @ 2016-02-09 13:53 UTC (permalink / raw)
To: Alexander Kuleshov
Cc: Ingo Molnar, Thomas Gleixner, H . Peter Anvin, Andrey Ryabinin,
Andy Lutomirski, Andy Shevchenko, Alexander Popov, linux-kernel
* Alexander Kuleshov <kuleshovmail@gmail.com> wrote:
> We changed loops with memset in the 5e9ebbd87a99 commit (x86/boot:
> Micro-optimize reset_early_page_tables()). The base for size of
> memset was size of pud_p/pmd_p, but the they are actually
> represented as pointers, although they have the same sizes.
That's rather confused. Also the title is confused:
x86/head64: use pointer type in sizeof
what the fix does it to _not_ use a pointer type.
I fixed the title and the changelog, but you really need to be more careful...
Thanks,
Ingo
^ permalink raw reply [flat|nested] 3+ messages in thread
* [tip:x86/boot] x86/boot: Use proper array element type in memset( ) size calculation
2016-02-09 13:44 [PATCH] x86/head64: use pointer type in sizeof Alexander Kuleshov
2016-02-09 13:53 ` Ingo Molnar
@ 2016-02-09 16:09 ` tip-bot for Alexander Kuleshov
1 sibling, 0 replies; 3+ messages in thread
From: tip-bot for Alexander Kuleshov @ 2016-02-09 16:09 UTC (permalink / raw)
To: linux-tip-commits
Cc: andriy.shevchenko, hpa, mingo, alpopov, luto, linux-kernel,
peterz, ryabinin.a.a, kuleshovmail, torvalds, tglx
Commit-ID: a91bbe017552b80e12d712c85549b933a62c6ed4
Gitweb: http://git.kernel.org/tip/a91bbe017552b80e12d712c85549b933a62c6ed4
Author: Alexander Kuleshov <kuleshovmail@gmail.com>
AuthorDate: Tue, 9 Feb 2016 19:44:54 +0600
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 9 Feb 2016 14:55:48 +0100
x86/boot: Use proper array element type in memset() size calculation
I changed open coded zeroing loops to explicit memset()s in the
following commit:
5e9ebbd87a99 ("x86/boot: Micro-optimize reset_early_page_tables()")
The base for the size argument of memset was sizeof(pud_p/pmd_p), which
are pointers - but the initialized array has pud_t/pmd_t elements.
Luckily the two types had the same size, so this did not result in any
runtime misbehavior.
Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
Cc: Alexander Popov <alpopov@ptsecurity.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1455025494-4063-1-git-send-email-kuleshovmail@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/kernel/head64.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 35843ca..7793a17 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -75,7 +75,7 @@ again:
}
pud_p = (pudval_t *)early_dynamic_pgts[next_early_pgt++];
- memset(pud_p, 0, sizeof(pud_p) * PTRS_PER_PUD);
+ memset(pud_p, 0, sizeof(*pud_p) * PTRS_PER_PUD);
*pgd_p = (pgdval_t)pud_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE;
}
pud_p += pud_index(address);
@@ -90,7 +90,7 @@ again:
}
pmd_p = (pmdval_t *)early_dynamic_pgts[next_early_pgt++];
- memset(pmd_p, 0, sizeof(pmd_p) * PTRS_PER_PMD);
+ memset(pmd_p, 0, sizeof(*pmd_p) * PTRS_PER_PMD);
*pud_p = (pudval_t)pmd_p - __START_KERNEL_map + phys_base + _KERNPG_TABLE;
}
pmd = (physaddr & PMD_MASK) + early_pmd_flags;
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-02-09 16:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-09 13:44 [PATCH] x86/head64: use pointer type in sizeof Alexander Kuleshov
2016-02-09 13:53 ` Ingo Molnar
2016-02-09 16:09 ` [tip:x86/boot] x86/boot: Use proper array element type in memset( ) size calculation tip-bot for Alexander Kuleshov
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.