From 86afd5a0e78eb9b84b158b33d85f711c5f748fd1 Mon Sep 17 00:00:00 2001 From: Ricardo Martinez Date: Wed, 18 May 2022 12:55:29 -0700 Subject: [PATCH] net: wwan: t7xx: Fix smatch errors t7xx_request_irq() error: uninitialized symbol 'ret'. t7xx_core_hk_handler() error: potentially dereferencing uninitialized 'event'. If the condition to enter the loop that waits for the handshake event is false on the first iteration then the uninitialized 'event' will be dereferenced, fix this by initializing 'event' to NULL. t7xx_port_proxy_recv_skb() warn: variable dereferenced before check 'skb'. No need to check skb at t7xx_port_proxy_recv_skb() since we know it is always called with a valid skb by t7xx_cldma_gpd_rx_from_q(). Reported-by: Dan Carpenter Signed-off-by: Ricardo Martinez Link: https://lore.kernel.org/r/20220518195529.126246-1-ricardo.martinez@linux.intel.com Signed-off-by: Jakub Kicinski --- drivers/net/wwan/t7xx/t7xx_modem_ops.c | 4 ++-- drivers/net/wwan/t7xx/t7xx_pci.c | 2 +- drivers/net/wwan/t7xx/t7xx_port_proxy.c | 3 --- 3 files changed, 3 insertions(+), 6 deletions(-) --- a/drivers/net/wwan/t7xx/t7xx_modem_ops.c +++ b/drivers/net/wwan/t7xx/t7xx_modem_ops.c @@ -458,9 +458,9 @@ static void t7xx_core_hk_handler(struct enum t7xx_fsm_event_state event_id, enum t7xx_fsm_event_state err_detect) { + struct t7xx_fsm_event *event = NULL, *event_next; struct t7xx_sys_info *core_info = &md->core_md; struct device *dev = &md->t7xx_dev->pdev->dev; - struct t7xx_fsm_event *event, *event_next; unsigned long flags; int ret; @@ -493,7 +493,7 @@ static void t7xx_core_hk_handler(struct goto err_free_event; } - if (ctl->exp_flg) + if (!event || ctl->exp_flg) goto err_free_event; ret = t7xx_parse_host_rt_data(ctl, core_info, dev, event->data, event->length); --- a/drivers/net/wwan/t7xx/t7xx_pci.c +++ b/drivers/net/wwan/t7xx/t7xx_pci.c @@ -568,7 +568,7 @@ static const struct dev_pm_ops t7xx_pci_ static int t7xx_request_irq(struct pci_dev *pdev) { struct t7xx_pci_dev *t7xx_dev; - int ret, i; + int ret = 0, i; t7xx_dev = pci_get_drvdata(pdev); --- a/drivers/net/wwan/t7xx/t7xx_port_proxy.c +++ b/drivers/net/wwan/t7xx/t7xx_port_proxy.c @@ -350,9 +350,6 @@ static int t7xx_port_proxy_recv_skb(stru u16 seq_num, channel; int ret; - if (!skb) - return -EINVAL; - channel = FIELD_GET(CCCI_H_CHN_FLD, le32_to_cpu(ccci_h->status)); if (t7xx_fsm_get_md_state(ctl) == MD_STATE_INVALID) { dev_err_ratelimited(dev, "Packet drop on channel 0x%x, modem not ready\n", channel);