On Wed, Nov 27, 2019 at 12:55:29AM +0700, Phong Tran wrote: > correct usage prototype of callback in tasklet_init(). > Report by https://github.com/KSPP/linux/issues/20 > > Signed-off-by: Phong Tran <tranmanphong@xxxxxxxxx> Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx> -Kees > --- > drivers/net/wireless/realtek/rtlwifi/pci.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/wireless/realtek/rtlwifi/pci.c b/drivers/net/wireless/realtek/rtlwifi/pci.c > index f88d26535978..25335bd2873b 100644 > --- a/drivers/net/wireless/realtek/rtlwifi/pci.c > +++ b/drivers/net/wireless/realtek/rtlwifi/pci.c > @@ -1061,13 +1061,15 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id) > return ret; > } > > -static void _rtl_pci_irq_tasklet(struct ieee80211_hw *hw) > +static void _rtl_pci_irq_tasklet(unsigned long data) > { > + struct ieee80211_hw *hw = (struct ieee80211_hw *)data; > _rtl_pci_tx_chk_waitq(hw); > } > > -static void _rtl_pci_prepare_bcn_tasklet(struct ieee80211_hw *hw) > +static void _rtl_pci_prepare_bcn_tasklet(unsigned long data) > { > + struct ieee80211_hw *hw = (struct ieee80211_hw *)data; > struct rtl_priv *rtlpriv = rtl_priv(hw); > struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); > struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); > @@ -1193,10 +1195,10 @@ static void _rtl_pci_init_struct(struct ieee80211_hw *hw, > > /*task */ > tasklet_init(&rtlpriv->works.irq_tasklet, > - (void (*)(unsigned long))_rtl_pci_irq_tasklet, > + _rtl_pci_irq_tasklet, > (unsigned long)hw); > tasklet_init(&rtlpriv->works.irq_prepare_bcn_tasklet, > - (void (*)(unsigned long))_rtl_pci_prepare_bcn_tasklet, > + _rtl_pci_prepare_bcn_tasklet, > (unsigned long)hw); > INIT_WORK(&rtlpriv->works.lps_change_work, > rtl_lps_change_work_callback); > -- > 2.20.1 > -- Kees Cook