--- sit.c.orig Fri Sep 5 17:07:55 2003 +++ sit.c Fri Sep 5 17:08:37 2003 @@ -125,14 +125,14 @@ { struct ip_tunnel **tp; + write_lock_bh(&ipip6_lock); for (tp = ipip6_bucket(t); *tp; tp = &(*tp)->next) { if (t == *tp) { - write_lock_bh(&ipip6_lock); *tp = t->next; - write_unlock_bh(&ipip6_lock); break; } } + write_unlock_bh(&ipip6_lock); } static void ipip6_tunnel_link(struct ip_tunnel *t) @@ -141,8 +141,8 @@ write_lock_bh(&ipip6_lock); t->next = *tp; - write_unlock_bh(&ipip6_lock); *tp = t; + write_unlock_bh(&ipip6_lock); } struct ip_tunnel * ipip6_tunnel_locate(struct ip_tunnel_parm *parms, int create)