ipw2x00: Fix -Wcast-function-type
authorPhong Tran <tranmanphong@gmail.com>
Tue, 26 Nov 2019 17:55:27 +0000 (00:55 +0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 28 Feb 2020 14:42:25 +0000 (15:42 +0100)
[ Upstream commit ebd77feb27e91bb5fe35a7818b7c13ea7435fb98 ]

correct usage prototype of callback in tasklet_init().
Report by https://github.com/KSPP/linux/issues/20

Signed-off-by: Phong Tran <tranmanphong@gmail.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/ipw2x00/ipw2100.c
drivers/net/wireless/intel/ipw2x00/ipw2200.c

index bfa542c..86c84b1 100644 (file)
@@ -3220,8 +3220,9 @@ static void ipw2100_tx_send_data(struct ipw2100_priv *priv)
        }
 }
 
-static void ipw2100_irq_tasklet(struct ipw2100_priv *priv)
+static void ipw2100_irq_tasklet(unsigned long data)
 {
+       struct ipw2100_priv *priv = (struct ipw2100_priv *)data;
        struct net_device *dev = priv->net_dev;
        unsigned long flags;
        u32 inta, tmp;
@@ -6029,7 +6030,7 @@ static void ipw2100_rf_kill(struct work_struct *work)
        spin_unlock_irqrestore(&priv->low_lock, flags);
 }
 
-static void ipw2100_irq_tasklet(struct ipw2100_priv *priv);
+static void ipw2100_irq_tasklet(unsigned long data);
 
 static const struct net_device_ops ipw2100_netdev_ops = {
        .ndo_open               = ipw2100_open,
@@ -6158,7 +6159,7 @@ static struct net_device *ipw2100_alloc_device(struct pci_dev *pci_dev,
        INIT_DELAYED_WORK(&priv->rf_kill, ipw2100_rf_kill);
        INIT_DELAYED_WORK(&priv->scan_event, ipw2100_scan_event);
 
-       tasklet_init(&priv->irq_tasklet, (void (*)(unsigned long))
+       tasklet_init(&priv->irq_tasklet,
                     ipw2100_irq_tasklet, (unsigned long)priv);
 
        /* NOTE:  We do not start the deferred work for status checks yet */
index bfd6861..48edb2b 100644 (file)
@@ -1968,8 +1968,9 @@ static void notify_wx_assoc_event(struct ipw_priv *priv)
        wireless_send_event(priv->net_dev, SIOCGIWAP, &wrqu, NULL);
 }
 
-static void ipw_irq_tasklet(struct ipw_priv *priv)
+static void ipw_irq_tasklet(unsigned long data)
 {
+       struct ipw_priv *priv = (struct ipw_priv *)data;
        u32 inta, inta_mask, handled = 0;
        unsigned long flags;
        int rc = 0;
@@ -10705,7 +10706,7 @@ static int ipw_setup_deferred_work(struct ipw_priv *priv)
        INIT_WORK(&priv->qos_activate, ipw_bg_qos_activate);
 #endif                         /* CONFIG_IPW2200_QOS */
 
-       tasklet_init(&priv->irq_tasklet, (void (*)(unsigned long))
+       tasklet_init(&priv->irq_tasklet,
                     ipw_irq_tasklet, (unsigned long)priv);
 
        return ret;