Hello Ralf, Running kernel 3.0.3 with rose patches. Looking at the following code it seems that first spin_unlock is misplaced just before memcpy(). I tried to move spin_unlock just after the call to memcpy without change. The DEADLOCK is still there. static void rose_get_neigh_callsign(ax25_address *rose_call, struct rose_neigh *neigh) { 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)); return; } When examining the inconsistent lock state report I may understand the reason. The sequence is : rose_route_frame() rose_link_rx_start() rose_send_frame() rose_get_neigh_callsign() However, rose_route_frame() is locking rose_route_list and rose_route_neigh_list with spin_lock_bh and if lci==0 there is a call in the function to rose_link_rx_restart before unlocking the lists. If (neigh->restarted) rose_send_frame() is called and in turn will call rose_get_neigh_callsign() that tries to spin_lock rose_callsign_lock and here comes the conflicting situation. Thus I modified rose_route_frame() in order to spin_unlock both lists before calling rose_link_rx_start(). Here are my patches. However, another inconsistent lock state remains as you will see in the following attached file. 73 de Bernard Le 08/08/2011 17:33, f6bvp a écrit : > Hello Ralf, > > Booting 3.0.1 kernel with ROSE patches in SMP mode gives systematically > the following Inconsistent Lock State. > See attached file. > > Bernard > >