Hi Kees, I'm working to modernize the tasklet api but I don't understand the reply to the patch 12/16 [1] of the patch series of Romain Perier [2]. If this patch is combined with the first one, and the function prototypes are not changed accordingly and these functions don't use the from_tasklet() helper, all the users that use the DECLARE_TASKLET macro don't pass the correct argument to the .data field. #define DECLARE_TASKLET(name, func, data) \ -struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data } +struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), (TASKLET_FUNC_TYPE)func, (TASKLET_DATA_TYPE)&name } The data argument is lost. If this patch is splitted in two, the first part will build correctly since there are casts protecting the arguments, but it will not run correctly until we apply the second part. Is it correct? Or am I wrong? The only imperative to apply a patch in a series is that it compiles correctly? And I suppose that the next ones fix this situation. At this moment I'm very confused. A bit of light about this will help me a lot. And sorry if this is a trivial question. [1] https://lore.kernel.org/kernel-hardening/201909301538.CEA6C827@keescook/ [2] https://lore.kernel.org/kernel-hardening/20190929163028.9665-1-romain.perier@xxxxxxxxx/ Thanks in advance, Oscar Carter