From 99190650780391317a8a28b3da7dfe19200f3c57 Mon Sep 17 00:00:00 2001 From: hselasky Date: Thu, 9 Mar 2017 18:37:17 +0000 Subject: [PATCH] Fix implementation of the DECLARE_WORK() macro in the LinuxKPI to fully initialize the declared work structure and not only the function callback pointer. MFC after: 1 week Sponsored by: Mellanox Technologies --- sys/compat/linuxkpi/common/include/linux/workqueue.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/workqueue.h b/sys/compat/linuxkpi/common/include/linux/workqueue.h index d2fa90b53441..6fab4845311f 100644 --- a/sys/compat/linuxkpi/common/include/linux/workqueue.h +++ b/sys/compat/linuxkpi/common/include/linux/workqueue.h @@ -72,8 +72,13 @@ struct work_struct { atomic_t state; }; -#define DECLARE_WORK(name, fn) \ - struct work_struct name = { .func = (fn) } +#define DECLARE_WORK(name, fn) \ + struct work_struct name; \ + static void name##_init(void *arg) \ + { \ + INIT_WORK(&name, fn); \ + } \ + SYSINIT(name, SI_SUB_LOCK, SI_ORDER_SECOND, name##_init, NULL) struct delayed_work { struct work_struct work;