linux-bluetooth.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).