didn't look into the issue, but this thing > > tasklet_init() == Init and Enable scheduling [..] > > @@ -559,7 +559,7 @@ void tasklet_init(struct tasklet_struct > > { > > t->next = NULL; > > t->state = 0; > > - atomic_set(&t->count, 0); > > + atomic_set(&t->count, 1); ^^^^^^^^ > > t->func = func; > > t->data = data; > > } seems to be in conflict with #define DECLARE_TASKLET(name, func, data) \ struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data } ^^^^^^^ #define DECLARE_TASKLET_DISABLED(name, func, data) \ struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data } ^^^^^^^ as well as with the tasklet_{disable, enable} helpers static inline void tasklet_disable_nosync(struct tasklet_struct *t) { atomic_inc(&t->count); smp_mb__after_atomic(); } static inline void tasklet_disable(struct tasklet_struct *t) { tasklet_disable_nosync(t); tasklet_unlock_wait(t); smp_mb(); } static inline void tasklet_enable(struct tasklet_struct *t) { smp_mb__before_atomic(); atomic_dec(&t->count); } -ss -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html