du -a . | grep ... panic iunlock can be caused by two things: if(l->key == 0) print("iunlock: not locked: pc %luX\n", getcallerpc(&l)); if(!l->isilock) print("iunlock of lock: pc %lux, held by %lux\n", getcallerpc(&l), l->pc); i.e. iunlocking something not locked at all, or iunlocking something that was locked. lock = spin lock ilock = disable interrupts and spin lock the real interest is the pc printed out, because it tells you where the iunlock() was called from. You can consult the kernel image to find out where this is.