This patch fixes 2 bugs with the bindings : - a kernel panic caused by the kmalloc(GFP_KERNEL) inside a write_lock_bh() - the inability to remove bindings when several entries lead to the same hash, because instead of being linked, the last one replaces the list head. This is for ipset from patch-o-matic. --Willy --- linux-2.4.32-patched/net/ipv4/netfilter/ip_set.c.orig 2006-02-20 16:30:20.000000000 +0100 +++ linux-2.4.32-patched/net/ipv4/netfilter/ip_set.c 2006-02-20 16:33:51.000000000 +0100 @@ -159,7 +159,7 @@ set_hash = LIST_FIND(&ip_set_hash[key], ip_hash_cmp, struct ip_set_hash *, id, ip); if (!set_hash) { - set_hash = kmalloc(sizeof(struct ip_set_hash), GFP_KERNEL); + set_hash = kmalloc(sizeof(struct ip_set_hash), GFP_ATOMIC); if (!set_hash) { ret = -ENOMEM; goto unlock; @@ -167,7 +167,7 @@ INIT_LIST_HEAD(&set_hash->list); set_hash->id = id; set_hash->ip = ip; - list_add(&ip_set_hash[key], &set_hash->list); + list_add(&set_hash->list, &ip_set_hash[key]); } else { IP_SET_ASSERT(ip_set_list[set_hash->binding]); DP("overwrite binding: %s",