--- a/net/rose/rose_link.c 2011-07-20 21:51:35.397778246 +0200 +++ a/net/rose/rose_link.new.c 2011-08-19 14:40:33.223383885 +0200 @@ -99,8 +99,8 @@ static void rose_get_neigh_callsign(ax25 { spin_lock(&rose_callsign_lock); if (ax25cmp(&rose_callsign, &null_ax25_address) == 0) { - spin_unlock(&rose_callsign_lock); memcpy(rose_call, neigh->dev->dev_addr, sizeof(rose_call)); + spin_unlock(&rose_callsign_lock); return; } --- a/net/rose/rose_route.c 2011-07-20 22:00:57.104846408 +0200 +++ a/net/rose/rose_route.new.c 2011-08-19 15:01:07.498780039 +0200 @@ -910,8 +910,10 @@ int rose_route_frame(struct sk_buff *skb * frame. */ if (lci == 0) { + spin_unlock_bh(&rose_neigh_list_lock); + spin_unlock_bh(&rose_route_list_lock); rose_link_rx_restart(skb, rose_neigh, frametype); - goto out; + return res; } /*