All of lore.kernel.org
 help / color / mirror / Atom feed
* [wireless-drivers-next:master 8/21] drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c:596 qtnf_pcie_skb_send() warn: variable dereferenced before check 'skb' (see line 560)
@ 2019-11-21  8:04 ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2019-11-21  8:04 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 12023 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
head:   924ea58dadea23cc28b60d02b9c0896b7b168a6f
commit: 904628d3130b5aef0c9b06efa80e5a96f203e000 [8/21] qtnfmac: add interface ID to each packet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c:596 qtnf_pcie_skb_send() warn: variable dereferenced before check 'skb' (see line 560)

# https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git/commit/?id=904628d3130b5aef0c9b06efa80e5a96f203e000
git remote add wireless-drivers-next https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
git remote update wireless-drivers-next
git checkout 904628d3130b5aef0c9b06efa80e5a96f203e000
vim +/skb +596 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c

904628d3130b5a drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2019-11-18  535  static int qtnf_pcie_skb_send(struct qtnf_bus *bus, struct sk_buff *skb)
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  536  {
addc7540708f52 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  537  	struct qtnf_pcie_pearl_state *ps = get_bus_priv(bus);
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  538  	struct qtnf_pcie_bus_priv *priv = &ps->base;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  539  	dma_addr_t txbd_paddr, skb_paddr;
d0b95bfa11786e drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  540  	struct qtnf_pearl_tx_bd *txbd;
20da2ec06bfad2 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-09-18  541  	unsigned long flags;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  542  	int len, i;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  543  	u32 info;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  544  	int ret = 0;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  545  
21077d09b4a67e drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  546  	spin_lock_irqsave(&priv->tx_lock, flags);
20da2ec06bfad2 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-09-18  547  
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  548  	if (!qtnf_tx_queue_ready(ps)) {
c35c0d54a77d0f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-10-30  549  		if (skb->dev) {
                                                                                                                            ^^^^^^^^
c35c0d54a77d0f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-10-30  550  			netif_tx_stop_all_queues(skb->dev);
c35c0d54a77d0f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-10-30  551  			priv->tx_stopped = 1;
c35c0d54a77d0f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-10-30  552  		}
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  553  
21077d09b4a67e drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  554  		spin_unlock_irqrestore(&priv->tx_lock, flags);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  555  		return NETDEV_TX_BUSY;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  556  	}
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  557  
3cbc3a0f19ac73 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-15  558  	i = priv->tx_bd_w_index;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  559  	priv->tx_skb[i] = skb;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11 @560  	len = skb->len;
                                                                                                                      ^^^^^^^^

Dereferenced without checking.

98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  561  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  562  	skb_paddr = pci_map_single(priv->pdev, skb->data,
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  563  				   skb->len, PCI_DMA_TODEVICE);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  564  	if (pci_dma_mapping_error(priv->pdev, skb_paddr)) {
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  565  		pr_err("skb DMA mapping error: %pad\n", &skb_paddr);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  566  		ret = -ENOMEM;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  567  		goto tx_done;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  568  	}
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  569  
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  570  	txbd = &ps->tx_bd_vbase[i];
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  571  	txbd->addr = cpu_to_le32(QTN_HOST_LO32(skb_paddr));
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  572  	txbd->addr_h = cpu_to_le32(QTN_HOST_HI32(skb_paddr));
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  573  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  574  	info = (len & QTN_PCIE_TX_DESC_LEN_MASK) << QTN_PCIE_TX_DESC_LEN_SHIFT;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  575  	txbd->info = cpu_to_le32(info);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  576  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  577  	/* sync up all descriptor updates before passing them to EP */
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  578  	dma_wmb();
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  579  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  580  	/* write new TX descriptor to PCIE_RX_FIFO on EP */
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  581  	txbd_paddr = ps->tx_bd_pbase + i * sizeof(struct qtnf_pearl_tx_bd);
f31039d4aea97d drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-29  582  
f31039d4aea97d drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-29  583  #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  584  	writel(QTN_HOST_HI32(txbd_paddr),
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  585  	       PCIE_HDP_HOST_WR_DESC0_H(ps->pcie_reg_base));
f31039d4aea97d drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-29  586  #endif
f31039d4aea97d drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-29  587  	writel(QTN_HOST_LO32(txbd_paddr),
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  588  	       PCIE_HDP_HOST_WR_DESC0(ps->pcie_reg_base));
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  589  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  590  	if (++i >= priv->tx_bd_num)
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  591  		i = 0;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  592  
3cbc3a0f19ac73 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-15  593  	priv->tx_bd_w_index = i;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  594  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  595  tx_done:
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11 @596  	if (ret && skb) {
                                                                                                                           ^^^
Checked too late.

98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  597  		pr_err_ratelimited("drop skb\n");
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  598  		if (skb->dev)
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  599  			skb->dev->stats.tx_dropped++;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  600  		dev_kfree_skb_any(skb);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  601  	}
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  602  
0593da274d4d7f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-15  603  	priv->tx_done_count++;
21077d09b4a67e drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  604  	spin_unlock_irqrestore(&priv->tx_lock, flags);
20da2ec06bfad2 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-09-18  605  
789763b683eb77 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  606  	qtnf_pearl_data_tx_reclaim(ps);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  607  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  608  	return NETDEV_TX_OK;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  609  }
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  610  

:::::: The code at line 596 was first introduced by commit
:::::: 98f44cb0655cbef0850ba7ff4c8213fb1bf9b6a2 qtnfmac: introduce new FullMAC driver for Quantenna chipsets

:::::: TO: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
:::::: CC: Kalle Valo <kvalo@codeaurora.org>

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [wireless-drivers-next:master 8/21] drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c:596 qtnf_pcie_skb_send() warn: variable dereferenced before check 'skb' (see line 560)
@ 2019-11-21  8:04 ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2019-11-21  8:04 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 12023 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
head:   924ea58dadea23cc28b60d02b9c0896b7b168a6f
commit: 904628d3130b5aef0c9b06efa80e5a96f203e000 [8/21] qtnfmac: add interface ID to each packet

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c:596 qtnf_pcie_skb_send() warn: variable dereferenced before check 'skb' (see line 560)

# https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git/commit/?id=904628d3130b5aef0c9b06efa80e5a96f203e000
git remote add wireless-drivers-next https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
git remote update wireless-drivers-next
git checkout 904628d3130b5aef0c9b06efa80e5a96f203e000
vim +/skb +596 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c

904628d3130b5a drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2019-11-18  535  static int qtnf_pcie_skb_send(struct qtnf_bus *bus, struct sk_buff *skb)
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  536  {
addc7540708f52 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  537  	struct qtnf_pcie_pearl_state *ps = get_bus_priv(bus);
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  538  	struct qtnf_pcie_bus_priv *priv = &ps->base;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  539  	dma_addr_t txbd_paddr, skb_paddr;
d0b95bfa11786e drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  540  	struct qtnf_pearl_tx_bd *txbd;
20da2ec06bfad2 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-09-18  541  	unsigned long flags;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  542  	int len, i;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  543  	u32 info;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  544  	int ret = 0;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  545  
21077d09b4a67e drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  546  	spin_lock_irqsave(&priv->tx_lock, flags);
20da2ec06bfad2 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-09-18  547  
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  548  	if (!qtnf_tx_queue_ready(ps)) {
c35c0d54a77d0f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-10-30  549  		if (skb->dev) {
                                                                                                                            ^^^^^^^^
c35c0d54a77d0f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-10-30  550  			netif_tx_stop_all_queues(skb->dev);
c35c0d54a77d0f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-10-30  551  			priv->tx_stopped = 1;
c35c0d54a77d0f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-10-30  552  		}
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  553  
21077d09b4a67e drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  554  		spin_unlock_irqrestore(&priv->tx_lock, flags);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  555  		return NETDEV_TX_BUSY;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  556  	}
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  557  
3cbc3a0f19ac73 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-15  558  	i = priv->tx_bd_w_index;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  559  	priv->tx_skb[i] = skb;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11 @560  	len = skb->len;
                                                                                                                      ^^^^^^^^

Dereferenced without checking.

98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  561  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  562  	skb_paddr = pci_map_single(priv->pdev, skb->data,
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  563  				   skb->len, PCI_DMA_TODEVICE);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  564  	if (pci_dma_mapping_error(priv->pdev, skb_paddr)) {
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  565  		pr_err("skb DMA mapping error: %pad\n", &skb_paddr);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  566  		ret = -ENOMEM;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  567  		goto tx_done;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  568  	}
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  569  
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  570  	txbd = &ps->tx_bd_vbase[i];
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  571  	txbd->addr = cpu_to_le32(QTN_HOST_LO32(skb_paddr));
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  572  	txbd->addr_h = cpu_to_le32(QTN_HOST_HI32(skb_paddr));
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  573  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  574  	info = (len & QTN_PCIE_TX_DESC_LEN_MASK) << QTN_PCIE_TX_DESC_LEN_SHIFT;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  575  	txbd->info = cpu_to_le32(info);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  576  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  577  	/* sync up all descriptor updates before passing them to EP */
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  578  	dma_wmb();
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  579  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  580  	/* write new TX descriptor to PCIE_RX_FIFO on EP */
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  581  	txbd_paddr = ps->tx_bd_pbase + i * sizeof(struct qtnf_pearl_tx_bd);
f31039d4aea97d drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-29  582  
f31039d4aea97d drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-29  583  #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  584  	writel(QTN_HOST_HI32(txbd_paddr),
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  585  	       PCIE_HDP_HOST_WR_DESC0_H(ps->pcie_reg_base));
f31039d4aea97d drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-29  586  #endif
f31039d4aea97d drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-29  587  	writel(QTN_HOST_LO32(txbd_paddr),
c9ff6c9157c2e6 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  588  	       PCIE_HDP_HOST_WR_DESC0(ps->pcie_reg_base));
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  589  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  590  	if (++i >= priv->tx_bd_num)
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  591  		i = 0;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  592  
3cbc3a0f19ac73 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-15  593  	priv->tx_bd_w_index = i;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  594  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  595  tx_done:
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11 @596  	if (ret && skb) {
                                                                                                                           ^^^
Checked too late.

98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  597  		pr_err_ratelimited("drop skb\n");
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  598  		if (skb->dev)
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  599  			skb->dev->stats.tx_dropped++;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  600  		dev_kfree_skb_any(skb);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  601  	}
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  602  
0593da274d4d7f drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-08-15  603  	priv->tx_done_count++;
21077d09b4a67e drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  604  	spin_unlock_irqrestore(&priv->tx_lock, flags);
20da2ec06bfad2 drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Sergey Matyukevich 2017-09-18  605  
789763b683eb77 drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c Igor Mitsyanko     2018-09-24  606  	qtnf_pearl_data_tx_reclaim(ps);
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  607  
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  608  	return NETDEV_TX_OK;
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  609  }
98f44cb0655cbe drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c      Igor Mitsyanko     2017-05-11  610  

:::::: The code at line 596 was first introduced by commit
:::::: 98f44cb0655cbef0850ba7ff4c8213fb1bf9b6a2 qtnfmac: introduce new FullMAC driver for Quantenna chipsets

:::::: TO: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
:::::: CC: Kalle Valo <kvalo@codeaurora.org>

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [wireless-drivers-next:master 8/21] drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c:596 qtnf_pcie_skb_send() warn: variable dereferenced before check 'skb' (see line 560)
       [not found] <a8c4bec3-4108-d460-3766-eb5548d5f878@quantenna.com>
@ 2019-11-21 18:54   ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2019-11-21 18:54 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 423 bytes --]

On Thu, Nov 21, 2019 at 04:06:10PM +0000, Igor Mitsyanko wrote:
> Thanks Dan!
> 
> @Sergey I think we do not need !skb check at all in this function, 
> agree? I assume if we remove "if (ret && skb)" it will make smatch happy?
> 

Yes.  Smatch only cares about consistent checking.  Or it will accept
inconsistent NULL checks so long as it is convinced that the pointer
can't be NULL.

regards,
dan carpenter
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [wireless-drivers-next:master 8/21] drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c:596 qtnf_pcie_skb_send() warn: variable dereferenced before check 'skb' (see line 560)
@ 2019-11-21 18:54   ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2019-11-21 18:54 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 423 bytes --]

On Thu, Nov 21, 2019 at 04:06:10PM +0000, Igor Mitsyanko wrote:
> Thanks Dan!
> 
> @Sergey I think we do not need !skb check at all in this function, 
> agree? I assume if we remove "if (ret && skb)" it will make smatch happy?
> 

Yes.  Smatch only cares about consistent checking.  Or it will accept
inconsistent NULL checks so long as it is convinced that the pointer
can't be NULL.

regards,
dan carpenter
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-11-21 18:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-21  8:04 [wireless-drivers-next:master 8/21] drivers/net/wireless/quantenna/qtnfmac/pcie/pearl_pcie.c:596 qtnf_pcie_skb_send() warn: variable dereferenced before check 'skb' (see line 560) Dan Carpenter
2019-11-21  8:04 ` Dan Carpenter
     [not found] <a8c4bec3-4108-d460-3766-eb5548d5f878@quantenna.com>
2019-11-21 18:54 ` Dan Carpenter
2019-11-21 18:54   ` Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.