diff options
author | Venkatesh Pallipadi <venki@google.com> | 2010-06-10 20:45:01 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2010-06-11 17:12:22 -0400 |
commit | 6a4f3b523779b67e7d560ed42652f8a59f2f9782 (patch) | |
tree | fc2fa0a0b76187261cf89c174f58bb1d10f68d14 | |
parent | 055c47272b8f5679d08ccc57efea3cb4aaeb5fc6 (diff) |
x86, pat: Proper init of memtype subtree_max_end
subtree_max_end that was recently added to struct memtype was not getting
properly initialized resulting in
WARNING: kmemcheck: Caught 64-bit read from uninitialized memory
in memtype_rb_augment_cb()
reported here
https://bugzilla.kernel.org/show_bug.cgi?id=16092
This change fixes the problem.
Reported-by: Christian Casteyde <casteyde.christian@free.fr>
Tested-by: Christian Casteyde <casteyde.christian@free.fr>
Signed-off-by: Venkatesh Pallipadi <venki@google.com>
LKML-Reference: <1276217101-11515-1-git-send-email-venki@google.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
-rw-r--r-- | arch/x86/mm/pat.c | 2 | ||||
-rw-r--r-- | arch/x86/mm/pat_rbtree.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index acc15b23b743..64121a18b8cb 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
@@ -302,7 +302,7 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
302 | return -EINVAL; | 302 | return -EINVAL; |
303 | } | 303 | } |
304 | 304 | ||
305 | new = kmalloc(sizeof(struct memtype), GFP_KERNEL); | 305 | new = kzalloc(sizeof(struct memtype), GFP_KERNEL); |
306 | if (!new) | 306 | if (!new) |
307 | return -ENOMEM; | 307 | return -ENOMEM; |
308 | 308 | ||
diff --git a/arch/x86/mm/pat_rbtree.c b/arch/x86/mm/pat_rbtree.c index f537087bb740..f20eeec85a86 100644 --- a/arch/x86/mm/pat_rbtree.c +++ b/arch/x86/mm/pat_rbtree.c | |||
@@ -226,6 +226,7 @@ int rbt_memtype_check_insert(struct memtype *new, unsigned long *ret_type) | |||
226 | if (ret_type) | 226 | if (ret_type) |
227 | new->type = *ret_type; | 227 | new->type = *ret_type; |
228 | 228 | ||
229 | new->subtree_max_end = new->end; | ||
229 | memtype_rb_insert(&memtype_rbroot, new); | 230 | memtype_rb_insert(&memtype_rbroot, new); |
230 | } | 231 | } |
231 | return err; | 232 | return err; |