summaryrefslogtreecommitdiffstats
path: root/arch/x86/mm/pat.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-06-08 19:40:08 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-06-08 19:40:08 +0100
commit76962be8491b18ae7ff4fd6a4accd398bdb402a2 (patch)
tree976958bf8e4989a69901bfbb25dd6463728c6cb5 /arch/x86/mm/pat.c
parent5e27fb78df95e027723af2c90ecc9b4527ae59e9 (diff)
parentd30e5d897c3da7c2d17c8112331b66ed953eec78 (diff)
downloadlinux-stable-76962be8491b18ae7ff4fd6a4accd398bdb402a2.tar.gz
linux-stable-76962be8491b18ae7ff4fd6a4accd398bdb402a2.tar.bz2
linux-stable-76962be8491b18ae7ff4fd6a4accd398bdb402a2.zip
Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6
Diffstat (limited to 'arch/x86/mm/pat.c')
-rw-r--r--arch/x86/mm/pat.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index bbe5502ee1cb..acc15b23b743 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -336,6 +336,7 @@ int free_memtype(u64 start, u64 end)
{
int err = -EINVAL;
int is_range_ram;
+ struct memtype *entry;
if (!pat_enabled)
return 0;
@@ -355,17 +356,20 @@ int free_memtype(u64 start, u64 end)
}
spin_lock(&memtype_lock);
- err = rbt_memtype_erase(start, end);
+ entry = rbt_memtype_erase(start, end);
spin_unlock(&memtype_lock);
- if (err) {
+ if (!entry) {
printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n",
current->comm, current->pid, start, end);
+ return -EINVAL;
}
+ kfree(entry);
+
dprintk("free_memtype request 0x%Lx-0x%Lx\n", start, end);
- return err;
+ return 0;
}