All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@01.org, Sean Wang <sean.wang@mediatek.com>
Cc: kbuild-all@01.org, linux-bluetooth@vger.kernel.org,
	Marcel Holtmann <marcel@holtmann.org>
Subject: [bluetooth-next:master 2/3] drivers/bluetooth/btmtksdio.c:471 btmtksdio_rx_packet() error: uninitialized symbol 'old_data'.
Date: Wed, 13 Mar 2019 09:44:49 +0300	[thread overview]
Message-ID: <20190313064449.GC2227@kadam> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
head:   df4db2340cec316ac054e67379f925c1850e2c36
commit: d74eef2834b5dd2153c4a4d11f14a039fcd64236 [2/3] Bluetooth: mediatek: add support for MediaTek MT7663S and MT7668S SDIO devices

smatch warnings:
drivers/bluetooth/btmtksdio.c:471 btmtksdio_rx_packet() error: uninitialized symbol 'old_data'.
drivers/bluetooth/btmtksdio.c:471 btmtksdio_rx_packet() error: uninitialized symbol 'old_len'.

# https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/commit/?id=d74eef2834b5dd2153c4a4d11f14a039fcd64236
git remote add bluetooth-next https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git
git remote update bluetooth-next
git checkout d74eef2834b5dd2153c4a4d11f14a039fcd64236
vim +/old_data +471 drivers/bluetooth/btmtksdio.c

d74eef28 Sean Wang 2019-03-08  369  
d74eef28 Sean Wang 2019-03-08  370  static int btmtksdio_rx_packet(struct btmtksdio_dev *bdev, u16 rx_size)
d74eef28 Sean Wang 2019-03-08  371  {
d74eef28 Sean Wang 2019-03-08  372  	const struct h4_recv_pkt *pkts = mtk_recv_pkts;
d74eef28 Sean Wang 2019-03-08  373  	int pkts_count = ARRAY_SIZE(mtk_recv_pkts);
d74eef28 Sean Wang 2019-03-08  374  	struct mtkbtsdio_hdr *sdio_hdr;
d74eef28 Sean Wang 2019-03-08  375  	unsigned char *old_data;
                                                       ^^^^^^^^

d74eef28 Sean Wang 2019-03-08  376  	unsigned int old_len;
d74eef28 Sean Wang 2019-03-08  377  	int err, i, pad_size;
d74eef28 Sean Wang 2019-03-08  378  	struct sk_buff *skb;
d74eef28 Sean Wang 2019-03-08  379  	u16 dlen;
d74eef28 Sean Wang 2019-03-08  380  
d74eef28 Sean Wang 2019-03-08  381  	if (rx_size < sizeof(*sdio_hdr))
d74eef28 Sean Wang 2019-03-08  382  		return -EILSEQ;
d74eef28 Sean Wang 2019-03-08  383  
d74eef28 Sean Wang 2019-03-08  384  	/* A SDIO packet is exactly containing a Bluetooth packet */
d74eef28 Sean Wang 2019-03-08  385  	skb = bt_skb_alloc(rx_size, GFP_KERNEL);
d74eef28 Sean Wang 2019-03-08  386  	if (!skb)
d74eef28 Sean Wang 2019-03-08  387  		return -ENOMEM;
d74eef28 Sean Wang 2019-03-08  388  
d74eef28 Sean Wang 2019-03-08  389  	skb_put(skb, rx_size);
d74eef28 Sean Wang 2019-03-08  390  
d74eef28 Sean Wang 2019-03-08  391  	err = sdio_readsb(bdev->func, skb->data, MTK_REG_CRDR, rx_size);
d74eef28 Sean Wang 2019-03-08  392  	if (err < 0)
d74eef28 Sean Wang 2019-03-08  393  		goto err_kfree_skb;
                                                ^^^^^^^^^^^^^^^^^^

d74eef28 Sean Wang 2019-03-08  394  
d74eef28 Sean Wang 2019-03-08  395  	/* Keep old data for dump the content in case of some error is
d74eef28 Sean Wang 2019-03-08  396  	 * caught in the following packet parsing.
d74eef28 Sean Wang 2019-03-08  397  	 */
d74eef28 Sean Wang 2019-03-08  398  	old_data = skb->data;
d74eef28 Sean Wang 2019-03-08  399  	old_len = skb->len;
                                        ^^^^^^^^^^^^^^^^^^

d74eef28 Sean Wang 2019-03-08  400  
d74eef28 Sean Wang 2019-03-08  401  	bdev->hdev->stat.byte_rx += rx_size;
d74eef28 Sean Wang 2019-03-08  402  
d74eef28 Sean Wang 2019-03-08  403  	sdio_hdr = (void *)skb->data;
d74eef28 Sean Wang 2019-03-08  404  
d74eef28 Sean Wang 2019-03-08  405  	/* We assume the default error as -EILSEQ simply to make the error path
d74eef28 Sean Wang 2019-03-08  406  	 * be cleaner.
d74eef28 Sean Wang 2019-03-08  407  	 */
d74eef28 Sean Wang 2019-03-08  408  	err = -EILSEQ;
d74eef28 Sean Wang 2019-03-08  409  
d74eef28 Sean Wang 2019-03-08  410  	if (rx_size != le16_to_cpu(sdio_hdr->len)) {
d74eef28 Sean Wang 2019-03-08  411  		bt_dev_err(bdev->hdev, "Rx size in sdio header is mismatched ");
d74eef28 Sean Wang 2019-03-08  412  		goto err_kfree_skb;
d74eef28 Sean Wang 2019-03-08  413  	}
d74eef28 Sean Wang 2019-03-08  414  
d74eef28 Sean Wang 2019-03-08  415  	hci_skb_pkt_type(skb) = sdio_hdr->bt_type;
d74eef28 Sean Wang 2019-03-08  416  
d74eef28 Sean Wang 2019-03-08  417  	/* Remove MediaTek SDIO header */
d74eef28 Sean Wang 2019-03-08  418  	skb_pull(skb, sizeof(*sdio_hdr));
d74eef28 Sean Wang 2019-03-08  419  
d74eef28 Sean Wang 2019-03-08  420  	/* We have to dig into the packet to get payload size and then know how
d74eef28 Sean Wang 2019-03-08  421  	 * many padding bytes at the tail, these padding bytes should be removed
d74eef28 Sean Wang 2019-03-08  422  	 * before the packet is indicated to the core layer.
d74eef28 Sean Wang 2019-03-08  423  	 */
d74eef28 Sean Wang 2019-03-08  424  	for (i = 0; i < pkts_count; i++) {
d74eef28 Sean Wang 2019-03-08  425  		if (sdio_hdr->bt_type == (&pkts[i])->type)
d74eef28 Sean Wang 2019-03-08  426  			break;
d74eef28 Sean Wang 2019-03-08  427  	}
d74eef28 Sean Wang 2019-03-08  428  
d74eef28 Sean Wang 2019-03-08  429  	if (i >= pkts_count) {
d74eef28 Sean Wang 2019-03-08  430  		bt_dev_err(bdev->hdev, "Invalid bt type 0x%02x",
d74eef28 Sean Wang 2019-03-08  431  			   sdio_hdr->bt_type);
d74eef28 Sean Wang 2019-03-08  432  		goto err_kfree_skb;
d74eef28 Sean Wang 2019-03-08  433  	}
d74eef28 Sean Wang 2019-03-08  434  
d74eef28 Sean Wang 2019-03-08  435  	/* Remaining bytes cannot hold a header*/
d74eef28 Sean Wang 2019-03-08  436  	if (skb->len < (&pkts[i])->hlen) {
d74eef28 Sean Wang 2019-03-08  437  		bt_dev_err(bdev->hdev, "The size of bt header is mismatched");
d74eef28 Sean Wang 2019-03-08  438  		goto err_kfree_skb;
d74eef28 Sean Wang 2019-03-08  439  	}
d74eef28 Sean Wang 2019-03-08  440  
d74eef28 Sean Wang 2019-03-08  441  	switch ((&pkts[i])->lsize) {
d74eef28 Sean Wang 2019-03-08  442  		case 1:
d74eef28 Sean Wang 2019-03-08  443  			dlen = skb->data[(&pkts[i])->loff];
d74eef28 Sean Wang 2019-03-08  444  			break;
d74eef28 Sean Wang 2019-03-08  445  		case 2:
d74eef28 Sean Wang 2019-03-08  446  			dlen = get_unaligned_le16(skb->data +
d74eef28 Sean Wang 2019-03-08  447  						  (&pkts[i])->loff);
d74eef28 Sean Wang 2019-03-08  448  			break;
d74eef28 Sean Wang 2019-03-08  449  		default:
d74eef28 Sean Wang 2019-03-08  450  			goto err_kfree_skb;
d74eef28 Sean Wang 2019-03-08  451  	}
d74eef28 Sean Wang 2019-03-08  452  
d74eef28 Sean Wang 2019-03-08  453  	pad_size = skb->len - (&pkts[i])->hlen -  dlen;
d74eef28 Sean Wang 2019-03-08  454  
d74eef28 Sean Wang 2019-03-08  455  	/* Remaining bytes cannot hold a payload */
d74eef28 Sean Wang 2019-03-08  456  	if (pad_size < 0) {
d74eef28 Sean Wang 2019-03-08  457  		bt_dev_err(bdev->hdev, "The size of bt payload is mismatched");
d74eef28 Sean Wang 2019-03-08  458  		goto err_kfree_skb;
d74eef28 Sean Wang 2019-03-08  459  	}
d74eef28 Sean Wang 2019-03-08  460  
d74eef28 Sean Wang 2019-03-08  461  	/* Remove padding bytes */
d74eef28 Sean Wang 2019-03-08  462  	skb_trim(skb, skb->len - pad_size);
d74eef28 Sean Wang 2019-03-08  463  
d74eef28 Sean Wang 2019-03-08  464  	/* Complete frame */
d74eef28 Sean Wang 2019-03-08  465  	(&pkts[i])->recv(bdev->hdev, skb);
d74eef28 Sean Wang 2019-03-08  466  
d74eef28 Sean Wang 2019-03-08  467  	return 0;
d74eef28 Sean Wang 2019-03-08  468  
d74eef28 Sean Wang 2019-03-08  469  err_kfree_skb:
d74eef28 Sean Wang 2019-03-08  470  	print_hex_dump(KERN_ERR, "err sdio rx: ", DUMP_PREFIX_NONE, 4, 1,
d74eef28 Sean Wang 2019-03-08 @471  		       old_data, old_len, true);
d74eef28 Sean Wang 2019-03-08  472  	kfree_skb(skb);
d74eef28 Sean Wang 2019-03-08  473  
d74eef28 Sean Wang 2019-03-08  474  	return err;
d74eef28 Sean Wang 2019-03-08  475  }
d74eef28 Sean Wang 2019-03-08  476  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

                 reply	other threads:[~2019-03-13  6:45 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190313064449.GC2227@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=kbuild-all@01.org \
    --cc=kbuild@01.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=marcel@holtmann.org \
    --cc=sean.wang@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.