• Emil Renner Berthing's avatar
    rtlwifi: use tasklet_setup to initialize rx_work_tasklet · ca04217a
    Emil Renner Berthing authored
    In commit d3ccc14d most of the tasklets in this driver was
    updated to the new API. However for the rx_work_tasklet only the
    type of the callback was changed from
      void _rtl_rx_work(unsigned long data)
    to
      void _rtl_rx_work(struct tasklet_struct *t).
    
    The initialization of rx_work_tasklet was still open-coded and the
    function pointer just cast into the old type, and hence nothing sets
    rx_work_tasklet.use_callback = true and the callback was still called as
    
      t->func(t->data);
    
    with uninitialized/zero t->data.
    
    Commit 6b8c7574
    
     changed the casting of _rtl_rx_work a bit and
    initialized t->data to a pointer to the tasklet cast to an unsigned
    long.
    
    This way calling t->func(t->data) might actually work through all the
    casting, but it still doesn't update the code to use the new tasklet
    API.
    
    Let's use the new tasklet_setup to initialize rx_work_tasklet properly
    and set rx_work_tasklet.use_callback = true so that the callback is
    called as
    
      t->callback(t);
    
    without all the casting.
    Signed-off-by: default avatarEmil Renner Berthing <kernel@esmil.dk>
    Acked-by: default avatarWillem de Bruijn <willemb@google.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20210126171550.3066-1-kernel@esmil.dk
    ca04217a
usb.c 29.1 KB