diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-17 23:58:11 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-17 23:58:11 -0400 |
commit | ca043a66ae48c74fa628ec92178f7a54f5b9a106 (patch) | |
tree | 37e9019bb99ed0f59debc426456e71befd4b7a9c /arch/x86/mm/pat.c | |
parent | 1218259b2d09c79ed1113d3a6dbb9a1d6391f5cb (diff) | |
parent | 3bb045f1e2e51124200ef043256df4c7ad86bebd (diff) |
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86, pat: don't use rb-tree based lookup in reserve_memtype()
x86: Increase MIN_GAP to include randomized stack
Diffstat (limited to 'arch/x86/mm/pat.c')
-rw-r--r-- | arch/x86/mm/pat.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index d7ebc3a10f2f..7257cf3decf9 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
@@ -424,17 +424,9 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type, | |||
424 | 424 | ||
425 | spin_lock(&memtype_lock); | 425 | spin_lock(&memtype_lock); |
426 | 426 | ||
427 | entry = memtype_rb_search(&memtype_rbroot, new->start); | ||
428 | if (likely(entry != NULL)) { | ||
429 | /* To work correctly with list_for_each_entry_continue */ | ||
430 | entry = list_entry(entry->nd.prev, struct memtype, nd); | ||
431 | } else { | ||
432 | entry = list_entry(&memtype_list, struct memtype, nd); | ||
433 | } | ||
434 | |||
435 | /* Search for existing mapping that overlaps the current range */ | 427 | /* Search for existing mapping that overlaps the current range */ |
436 | where = NULL; | 428 | where = NULL; |
437 | list_for_each_entry_continue(entry, &memtype_list, nd) { | 429 | list_for_each_entry(entry, &memtype_list, nd) { |
438 | if (end <= entry->start) { | 430 | if (end <= entry->start) { |
439 | where = entry->nd.prev; | 431 | where = entry->nd.prev; |
440 | break; | 432 | break; |
@@ -532,7 +524,7 @@ int free_memtype(u64 start, u64 end) | |||
532 | * in sorted start address | 524 | * in sorted start address |
533 | */ | 525 | */ |
534 | saved_entry = entry; | 526 | saved_entry = entry; |
535 | list_for_each_entry(entry, &memtype_list, nd) { | 527 | list_for_each_entry_from(entry, &memtype_list, nd) { |
536 | if (entry->start == start && entry->end == end) { | 528 | if (entry->start == start && entry->end == end) { |
537 | rb_erase(&entry->rb, &memtype_rbroot); | 529 | rb_erase(&entry->rb, &memtype_rbroot); |
538 | list_del(&entry->nd); | 530 | list_del(&entry->nd); |