@@ -830,7 +830,8 @@ static void nsim_dev_trap_report_work(struct work_struct *work)
830
830
nsim_dev = nsim_trap_data -> nsim_dev ;
831
831
832
832
if (!devl_trylock (priv_to_devlink (nsim_dev ))) {
833
- schedule_delayed_work (& nsim_dev -> trap_data -> trap_report_dw , 1 );
833
+ queue_delayed_work (system_unbound_wq ,
834
+ & nsim_dev -> trap_data -> trap_report_dw , 1 );
834
835
return ;
835
836
}
836
837
@@ -842,11 +843,12 @@ static void nsim_dev_trap_report_work(struct work_struct *work)
842
843
continue ;
843
844
844
845
nsim_dev_trap_report (nsim_dev_port );
846
+ cond_resched ();
845
847
}
846
848
devl_unlock (priv_to_devlink (nsim_dev ));
847
-
848
- schedule_delayed_work ( & nsim_dev -> trap_data -> trap_report_dw ,
849
- msecs_to_jiffies (NSIM_TRAP_REPORT_INTERVAL_MS ));
849
+ queue_delayed_work ( system_unbound_wq ,
850
+ & nsim_dev -> trap_data -> trap_report_dw ,
851
+ msecs_to_jiffies (NSIM_TRAP_REPORT_INTERVAL_MS ));
850
852
}
851
853
852
854
static int nsim_dev_traps_init (struct devlink * devlink )
@@ -901,8 +903,9 @@ static int nsim_dev_traps_init(struct devlink *devlink)
901
903
902
904
INIT_DELAYED_WORK (& nsim_dev -> trap_data -> trap_report_dw ,
903
905
nsim_dev_trap_report_work );
904
- schedule_delayed_work (& nsim_dev -> trap_data -> trap_report_dw ,
905
- msecs_to_jiffies (NSIM_TRAP_REPORT_INTERVAL_MS ));
906
+ queue_delayed_work (system_unbound_wq ,
907
+ & nsim_dev -> trap_data -> trap_report_dw ,
908
+ msecs_to_jiffies (NSIM_TRAP_REPORT_INTERVAL_MS ));
906
909
907
910
return 0 ;
908
911
0 commit comments