static void ipip_tunnel_link(struct ip_tunnel *t) { struct ip_tunnel **tp = ipip_bucket(t); t->next = *tp; wmb(); *tp = t; }
static void ipip_tunnel_link(struct ip_tunnel *t) { struct ip_tunnel **tp = ipip_bucket(t); t->next = *tp; write_lock_bh(&ipip_lock); *tp = t; write_unlock_bh(&ipip_lock); }
static void ipip_tunnel_unlink(struct ip_tunnel *t) { struct ip_tunnel **tp; for (tp = ipip_bucket(t); *tp; tp = &(*tp)->next) { if (t == *tp) { *tp = t->next; synchronize_bh(); break; } } }
static void ipip_tunnel_unlink(struct ip_tunnel *t) { struct ip_tunnel **tp; for (tp = ipip_bucket(t); *tp; tp = &(*tp)->next) { if (t == *tp) { write_lock_bh(&ipip_lock); *tp = t->next; write_unlock_bh(&ipip_lock); break; } } }