* [PATCH] SPARSEMEM incorrectly calculates section number
@ 2006-05-16 20:06 Mike Kravetz
0 siblings, 0 replies; only message in thread
From: Mike Kravetz @ 2006-05-16 20:06 UTC (permalink / raw)
To: Andrew Morton; +Cc: Dave Hansen, Andy Whitcroft, lhms-devel, linux-kernel
A bad calculation/loop in __section_nr() could result in incorrect section
information being put into sysfs memory entries. This primarily impacts
memory add operations as the sysfs information is used while onlining new
memory.
Fix suggested by Dave Hansen.
Note that the bug may not be obvious from the patch. It actually occurs
in the function's return statement:
return (root_nr * SECTIONS_PER_ROOT) + (ms - root);
In the existing code, root_nr has already been multiplied by SECTIONS_PER_ROOT.
Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>
diff -Naupr linux-2.6.17-rc4-mm1/mm/sparse.c linux-2.6.17-rc4-mm1.work/mm/sparse.c
--- linux-2.6.17-rc4-mm1/mm/sparse.c 2006-05-16 18:56:44.000000000 +0000
+++ linux-2.6.17-rc4-mm1.work/mm/sparse.c 2006-05-16 19:10:37.000000000 +0000
@@ -87,11 +87,8 @@ int __section_nr(struct mem_section* ms)
unsigned long root_nr;
struct mem_section* root;
- for (root_nr = 0;
- root_nr < NR_MEM_SECTIONS;
- root_nr += SECTIONS_PER_ROOT) {
- root = __nr_to_section(root_nr);
-
+ for (root_nr = 0; root_nr < NR_SECTION_ROOTS; root_nr++) {
+ root = __nr_to_section(root_nr * SECTIONS_PER_ROOT);
if (!root)
continue;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-05-16 20:13 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-05-16 20:06 [PATCH] SPARSEMEM incorrectly calculates section number Mike Kravetz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®