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.