spin_lock and scheduler confusion