OSDN Git Service

net: atm: pppoatm: use tasklet_init to initialize wakeup tasklet
authorEmil Renner Berthing <kernel@esmil.dk>
Wed, 27 Jan 2021 17:32:55 +0000 (18:32 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 30 Jan 2021 02:24:05 +0000 (18:24 -0800)
Previously a temporary tasklet structure was initialized on the stack
using DECLARE_TASKLET_OLD() and then copied over and modified. Nothing
else in the kernel seems to use this pattern, so let's just call
tasklet_init() like everyone else.

Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
Link: https://lore.kernel.org/r/20210127173256.13954-1-kernel@esmil.dk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/atm/pppoatm.c

index 579b66d..5f06af0 100644 (file)
@@ -389,11 +389,7 @@ static int pppoatm_assign_vcc(struct atm_vcc *atmvcc, void __user *arg)
        struct atm_backend_ppp be;
        struct pppoatm_vcc *pvcc;
        int err;
-       /*
-        * Each PPPoATM instance has its own tasklet - this is just a
-        * prototypical one used to initialize them
-        */
-       static const DECLARE_TASKLET_OLD(tasklet_proto, pppoatm_wakeup_sender);
+
        if (copy_from_user(&be, arg, sizeof be))
                return -EFAULT;
        if (be.encaps != PPPOATM_ENCAPS_AUTODETECT &&
@@ -415,8 +411,8 @@ static int pppoatm_assign_vcc(struct atm_vcc *atmvcc, void __user *arg)
        pvcc->chan.ops = &pppoatm_ops;
        pvcc->chan.mtu = atmvcc->qos.txtp.max_sdu - PPP_HDRLEN -
            (be.encaps == e_vc ? 0 : LLC_LEN);
-       pvcc->wakeup_tasklet = tasklet_proto;
-       pvcc->wakeup_tasklet.data = (unsigned long) &pvcc->chan;
+       tasklet_init(&pvcc->wakeup_tasklet, pppoatm_wakeup_sender,
+                    (unsigned long)&pvcc->chan);
        err = ppp_register_channel(&pvcc->chan);
        if (err != 0) {
                kfree(pvcc);