Re: 2.6.17-rc5-mm1

From: Christoph Lameter
Date: Mon Jun 05 2006 - 16:42:57 EST


Sigh the patch that I sent earlier will make swapon fail when adding more
entries if 32 entries have been defined before even if some of these are
later freed. Plus maybe we better leave the probing intact for arches that
support less than 32 swap devices and also return -EPERM like before. I
guess we need this one instead:


Do proper boundary checking in sys_swapon().

sys_swapon currently does not limit the number of swap devices. It may as
a result overwrite memory following the swap_info array and get into
entanglements with page migration since it may usethe swap types reserved
for page migration.

Fix this by limiting the number of swap devices in swapon to
MAX_SWAPFILES

Signed-off-by: Christoph Lameter <clameter@xxxxxxx>

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;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/