Index: linux-2.6.16-rc6/mm/mempolicy.c =================================================================== --- linux-2.6.16-rc6.orig/mm/mempolicy.c 2006-03-11 14:12:55.000000000 -0800 +++ linux-2.6.16-rc6/mm/mempolicy.c 2006-03-13 18:51:49.000000000 -0800 @@ -744,13 +744,16 @@ long do_mbind(unsigned long start, unsig int err; LIST_HEAD(pagelist); + printk("mbind 1\n"); if ((flags & ~(unsigned long)(MPOL_MF_STRICT | MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) || mode > MPOL_MAX) return -EINVAL; + printk("mbind 2\n"); if ((flags & MPOL_MF_MOVE_ALL) && !capable(CAP_SYS_RESOURCE)) return -EPERM; + printk("mbind 3\n"); if (start & ~PAGE_MASK) return -EINVAL; @@ -760,14 +763,20 @@ long do_mbind(unsigned long start, unsig len = (len + PAGE_SIZE - 1) & PAGE_MASK; end = start + len; + printk("mbind 4\n"); + if (end < start) return -EINVAL; if (end == start) return 0; + printk("mbind 5 mode=%ld nmask=%lx onlinemap=%lx\n", mode, + *((unsigned long *)(nmask)), + *((unsigned long *)(&node_online_map))); if (mpol_check_policy(mode, nmask)) return -EINVAL; + printk("mbind 6\n"); new = mpol_new(mode, nmask); if (IS_ERR(new)) return PTR_ERR(new); @@ -884,6 +893,9 @@ asmlinkage long sys_mbind(unsigned long err = get_nodes(&nodes, nmask, maxnode); if (err) return err; + printk("sysmbind mode=%ld nmask=%lx nodes=%lx\n", mode, + *((unsigned long *)(nmask)), + *((unsigned long *)(&nodes))); return do_mbind(start, len, mode, &nodes, flags); }