Hi, If the check for "count >= SWAP_MAP_MAX" in __get_swap_page is true, we will end up trying to unlock a not-yet-locked spinlock. Here goes a patch to change this. --- linux/mm/swapfile.c.orig Thu Jan 4 04:10:08 2001 +++ linux/mm/swapfile.c Thu Jan 4 04:10:12 2001 @@ -90,8 +90,12 @@ int type, wrapped = 0; entry.val = 0; /* Out of memory */ - if (count >= SWAP_MAP_MAX) - goto bad_count; + if (count >= SWAP_MAP_MAX) { + printk(KERN_ERR "get_swap_page: bad count %hd from %p\n", + count, __builtin_return_address(0)); + return entry; + } + swap_list_lock(); type = swap_list.next; if (type < 0) @@ -130,11 +134,6 @@ out: swap_list_unlock(); return entry; - -bad_count: - printk(KERN_ERR "get_swap_page: bad count %hd from %p\n", - count, __builtin_return_address(0)); - goto out; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/