On Tue, 5 Jun 2018 01:30:15 +0300, Igor Russkikh wrote: > @@ -158,6 +158,8 @@ static void aq_nic_service_timer_cb(struct timer_list *t) > int ctimer = AQ_CFG_SERVICE_TIMER_INTERVAL; > int err = 0; > > + mutex_lock(&self->aq_mutex); > + > if (aq_utils_obj_test(&self->flags, AQ_NIC_FLAGS_IS_NOT_READY)) > goto err_exit; > > @@ -175,6 +177,7 @@ static void aq_nic_service_timer_cb(struct timer_list *t) > ctimer = max(ctimer / 2, 1); > > err_exit: > + mutex_unlock(&self->aq_mutex); > mod_timer(&self->service_timer, jiffies + ctimer); > } >
This looks like a timer callback from the prototype, I don't think you can take mutexes in timer callbacks.