Index: linux-2.6.17-rc5-mm2/mm/swapfile.c =================================================================== --- linux-2.6.17-rc5-mm2.orig/mm/swapfile.c 2006-06-01 10:03:07.127259731 -0700 +++ linux-2.6.17-rc5-mm2/mm/swapfile.c 2006-06-05 13:40:45.887291175 -0700 @@ -1408,8 +1408,13 @@ asmlinkage long sys_swapon(const char __ spin_unlock(&swap_lock); goto out; } - if (type >= nr_swapfiles) + if (type >= nr_swapfiles) { + if (nr_swapfiles >= MAX_SWAPFILES) { + spin_unlock(&swap_lock); + goto out; + } nr_swapfiles = type+1; + } INIT_LIST_HEAD(&p->extent_list); p->flags = SWP_USED; p->swap_file = NULL;