* [bluetooth-next:master 2/3] drivers/bluetooth/btmtksdio.c:471 btmtksdio_rx_packet() error: uninitialized symbol 'old_data'.
@ 2019-03-13 6:44 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2019-03-13 6:44 UTC (permalink / raw)
To: kbuild, Sean Wang; +Cc: kbuild-all, linux-bluetooth, Marcel Holtmann
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-03-13 6:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-03-13 6:44 [bluetooth-next:master 2/3] drivers/bluetooth/btmtksdio.c:471 btmtksdio_rx_packet() error: uninitialized symbol 'old_data' Dan Carpenter
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).