Hello Prasad, 在 2025/3/27 20:40, Prasad Pandit wrote: >> @@ -360,13 +360,13 @@ e1000e_intrmgr_fire_all_timers(E1000ECore *core) >> int i; >> >> if (core->itr.running) { >> - timer_del(core->itr.timer); >> + timer_free(core->itr.timer); >> e1000e_intrmgr_on_throttling_timer(&core->itr); >> } >> >> for (i = 0; i < E1000E_MSIX_VEC_NUM; i++) { >> if (core->eitr[i].running) { >> - timer_del(core->eitr[i].timer); >> + timer_free(core->eitr[i].timer); >> e1000e_intrmgr_on_msix_throttling_timer(&core->eitr[i]); >> } >> } >> @@ -3452,7 +3452,7 @@ static void e1000e_reset(E1000ECore *core, bool sw) >> { >> int i; >> >> - timer_del(core->autoneg_timer); >> + timer_free(core->autoneg_timer); >> >> e1000e_intrmgr_reset(core); > > * I doubt if this is correct; Because timer_del() API explicitly says > -> /* stop a timer, but do not dealloc it */ > > * Secondly: autoneg_timer/mit_timer/flush_queue_timer objects are > freed in 'pci_e1000_uninit()/e1000e_pci_uninit()' functions via > timer_free() calls. So the memory leak could be because the respective > *_pci__uninit() function is not called?
Yes, you are right. I mistakenly assumed that there's no way to reenable a `_del()`ed timer. Thank you sincerely for pointing out this. I'll check the usage carefully in other occurences. Best regard, Zheng