drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c:721 dpaa2_eth_build_sg_fd_single_buf() warn: overwrite may leak 'sgt_buf'
by kernel test robot
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Ioana Ciornei <ioana.ciornei(a)nxp.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: acd3d28594536e9096c1ea76c5867d8a68babef6
commit: 5d8dccf8bad96bdc5bd5594344ff67539cf3a733 dpaa2-eth: add a dpaa2_eth_ prefix to all functions in dpaa2-eth.c
date: 8 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 8 months ago
config: arm-randconfig-m031-20210428 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c:721 dpaa2_eth_build_sg_fd_single_buf() warn: overwrite may leak 'sgt_buf'
vim +/sgt_buf +721 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
6e2387e8f19ed5 drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c Ioana Radulescu 2017-04-28 689
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 690 /* Create a SG frame descriptor based on a linear skb.
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 691 *
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 692 * This function is used on the Tx path when the skb headroom is not large
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 693 * enough for the HW requirements, thus instead of realloc-ing the skb we
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 694 * create a SG frame descriptor with only one entry.
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 695 */
5d8dccf8bad96b drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-08-31 696 static int dpaa2_eth_build_sg_fd_single_buf(struct dpaa2_eth_priv *priv,
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 697 struct sk_buff *skb,
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 698 struct dpaa2_fd *fd)
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 699 {
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 700 struct device *dev = priv->net_dev->dev.parent;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 701 struct dpaa2_eth_sgt_cache *sgt_cache;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 702 struct dpaa2_sg_entry *sgt;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 703 struct dpaa2_eth_swa *swa;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 704 dma_addr_t addr, sgt_addr;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 705 void *sgt_buf = NULL;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 706 int sgt_buf_size;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 707 int err;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 708
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 709 /* Prepare the HW SGT structure */
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 710 sgt_cache = this_cpu_ptr(priv->sgt_cache);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 711 sgt_buf_size = priv->tx_data_offset + sizeof(struct dpaa2_sg_entry);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 712
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 713 if (sgt_cache->count == 0)
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 714 sgt_buf = kzalloc(sgt_buf_size + DPAA2_ETH_TX_BUF_ALIGN,
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 715 GFP_ATOMIC);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 716 else
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 717 sgt_buf = sgt_cache->buf[--sgt_cache->count];
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 718 if (unlikely(!sgt_buf))
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 719 return -ENOMEM;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 720
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 @721 sgt_buf = PTR_ALIGN(sgt_buf, DPAA2_ETH_TX_BUF_ALIGN);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 722 sgt = (struct dpaa2_sg_entry *)(sgt_buf + priv->tx_data_offset);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 723
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 724 addr = dma_map_single(dev, skb->data, skb->len, DMA_BIDIRECTIONAL);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 725 if (unlikely(dma_mapping_error(dev, addr))) {
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 726 err = -ENOMEM;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 727 goto data_map_failed;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 728 }
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 729
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 730 /* Fill in the HW SGT structure */
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 731 dpaa2_sg_set_addr(sgt, addr);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 732 dpaa2_sg_set_len(sgt, skb->len);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 733 dpaa2_sg_set_final(sgt, true);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 734
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 735 /* Store the skb backpointer in the SGT buffer */
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 736 swa = (struct dpaa2_eth_swa *)sgt_buf;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 737 swa->type = DPAA2_ETH_SWA_SINGLE;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 738 swa->single.skb = skb;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 739 swa->sg.sgt_size = sgt_buf_size;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 740
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 741 /* Separately map the SGT buffer */
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 742 sgt_addr = dma_map_single(dev, sgt_buf, sgt_buf_size, DMA_BIDIRECTIONAL);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 743 if (unlikely(dma_mapping_error(dev, sgt_addr))) {
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 744 err = -ENOMEM;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 745 goto sgt_map_failed;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 746 }
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 747
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 748 dpaa2_fd_set_offset(fd, priv->tx_data_offset);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 749 dpaa2_fd_set_format(fd, dpaa2_fd_sg);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 750 dpaa2_fd_set_addr(fd, sgt_addr);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 751 dpaa2_fd_set_len(fd, skb->len);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 752 dpaa2_fd_set_ctrl(fd, FD_CTRL_PTA);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 753
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 754 if (priv->tx_tstamp && skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)
5d8dccf8bad96b drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-08-31 755 dpaa2_eth_enable_tx_tstamp(fd, sgt_buf);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 756
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 757 return 0;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 758
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 759 sgt_map_failed:
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 760 dma_unmap_single(dev, addr, skb->len, DMA_BIDIRECTIONAL);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 761 data_map_failed:
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 762 if (sgt_cache->count >= DPAA2_ETH_SGT_CACHE_SIZE)
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 763 kfree(sgt_buf);
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 764 else
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 765 sgt_cache->buf[sgt_cache->count++] = sgt_buf;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 766
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 767 return err;
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 768 }
d70446ee1f406e drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c Ioana Ciornei 2020-06-29 769
:::::: The code at line 721 was first introduced by commit
:::::: d70446ee1f406ef4c6dd299a8482dc98ef07ed0e dpaa2-eth: send a scatter-gather FD instead of realloc-ing
:::::: TO: Ioana Ciornei <ioana.ciornei(a)nxp.com>
:::::: CC: David S. Miller <davem(a)davemloft.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[linux-next:master 7132/11526] drivers/bluetooth/btusb.c:3775 btusb_mtk_setup() error: uninitialized symbol 'fw_version'.
by Dan Carpenter
[ Why is linux-mm CC'd on these patches??? - dan ]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 6553715b6db5ff5d4898895dad1b2926cfe406cf
commit: fc342c4dc408754f50f19dc832152fbb4b73f1e6 [7132/11526] Bluetooth: btusb: Add protocol support for MediaTek MT7921U USB devices
config: parisc-randconfig-m031-20210216 (attached as .config)
compiler: hppa-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
New smatch warnings:
drivers/bluetooth/btusb.c:3775 btusb_mtk_setup() error: uninitialized symbol 'fw_version'.
Old smatch warnings:
drivers/bluetooth/btusb.c:2201 btusb_setup_intel() warn: inconsistent indenting
vim +/fw_version +3775 drivers/bluetooth/btusb.c
a1c49c434e15050 Sean Wang 2019-06-02 3729 static int btusb_mtk_setup(struct hci_dev *hdev)
a1c49c434e15050 Sean Wang 2019-06-02 3730 {
a1c49c434e15050 Sean Wang 2019-06-02 3731 struct btusb_data *data = hci_get_drvdata(hdev);
a1c49c434e15050 Sean Wang 2019-06-02 3732 struct btmtk_hci_wmt_params wmt_params;
a1c49c434e15050 Sean Wang 2019-06-02 3733 ktime_t calltime, delta, rettime;
a1c49c434e15050 Sean Wang 2019-06-02 3734 struct btmtk_tci_sleep tci_sleep;
a1c49c434e15050 Sean Wang 2019-06-02 3735 unsigned long long duration;
a1c49c434e15050 Sean Wang 2019-06-02 3736 struct sk_buff *skb;
a1c49c434e15050 Sean Wang 2019-06-02 3737 const char *fwname;
a1c49c434e15050 Sean Wang 2019-06-02 3738 int err, status;
a1c49c434e15050 Sean Wang 2019-06-02 3739 u32 dev_id;
fc342c4dc408754 Mark Chen 2021-02-02 3740 char fw_bin_name[64];
fc342c4dc408754 Mark Chen 2021-02-02 3741 u32 fw_version;
a1c49c434e15050 Sean Wang 2019-06-02 3742 u8 param;
a1c49c434e15050 Sean Wang 2019-06-02 3743
a1c49c434e15050 Sean Wang 2019-06-02 3744 calltime = ktime_get();
a1c49c434e15050 Sean Wang 2019-06-02 3745
48c13301e6baba5 Mark Chen 2021-02-02 3746 err = btusb_mtk_id_get(data, 0x80000008, &dev_id);
a1c49c434e15050 Sean Wang 2019-06-02 3747 if (err < 0) {
a1c49c434e15050 Sean Wang 2019-06-02 3748 bt_dev_err(hdev, "Failed to get device id (%d)", err);
a1c49c434e15050 Sean Wang 2019-06-02 3749 return err;
a1c49c434e15050 Sean Wang 2019-06-02 3750 }
a1c49c434e15050 Sean Wang 2019-06-02 3751
fc342c4dc408754 Mark Chen 2021-02-02 3752 if (!dev_id) {
fc342c4dc408754 Mark Chen 2021-02-02 3753 err = btusb_mtk_id_get(data, 0x70010200, &dev_id);
fc342c4dc408754 Mark Chen 2021-02-02 3754 if (err < 0) {
fc342c4dc408754 Mark Chen 2021-02-02 3755 bt_dev_err(hdev, "Failed to get device id (%d)", err);
fc342c4dc408754 Mark Chen 2021-02-02 3756 return err;
fc342c4dc408754 Mark Chen 2021-02-02 3757 }
fc342c4dc408754 Mark Chen 2021-02-02 3758 err = btusb_mtk_id_get(data, 0x80021004, &fw_version);
fc342c4dc408754 Mark Chen 2021-02-02 3759 if (err < 0) {
fc342c4dc408754 Mark Chen 2021-02-02 3760 bt_dev_err(hdev, "Failed to get fw version (%d)", err);
fc342c4dc408754 Mark Chen 2021-02-02 3761 return err;
fc342c4dc408754 Mark Chen 2021-02-02 3762 }
fc342c4dc408754 Mark Chen 2021-02-02 3763 }
"fw_version" not initialized on else path.
fc342c4dc408754 Mark Chen 2021-02-02 3764
a1c49c434e15050 Sean Wang 2019-06-02 3765 switch (dev_id) {
9ce67c3235be71e Sean Wang 2019-06-02 3766 case 0x7663:
9ce67c3235be71e Sean Wang 2019-06-02 3767 fwname = FIRMWARE_MT7663;
9ce67c3235be71e Sean Wang 2019-06-02 3768 break;
a1c49c434e15050 Sean Wang 2019-06-02 3769 case 0x7668:
a1c49c434e15050 Sean Wang 2019-06-02 3770 fwname = FIRMWARE_MT7668;
a1c49c434e15050 Sean Wang 2019-06-02 3771 break;
fc342c4dc408754 Mark Chen 2021-02-02 3772 case 0x7961:
fc342c4dc408754 Mark Chen 2021-02-02 3773 snprintf(fw_bin_name, sizeof(fw_bin_name),
fc342c4dc408754 Mark Chen 2021-02-02 3774 "mediatek/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",
fc342c4dc408754 Mark Chen 2021-02-02 @3775 dev_id & 0xffff, (fw_version & 0xff) + 1);
^^^^^^^^^^
fc342c4dc408754 Mark Chen 2021-02-02 3776 err = btusb_mtk_setup_firmware_79xx(hdev, fw_bin_name);
fc342c4dc408754 Mark Chen 2021-02-02 3777
fc342c4dc408754 Mark Chen 2021-02-02 3778 /* Enable Bluetooth protocol */
fc342c4dc408754 Mark Chen 2021-02-02 3779 param = 1;
fc342c4dc408754 Mark Chen 2021-02-02 3780 wmt_params.op = BTMTK_WMT_FUNC_CTRL;
fc342c4dc408754 Mark Chen 2021-02-02 3781 wmt_params.flag = 0;
fc342c4dc408754 Mark Chen 2021-02-02 3782 wmt_params.dlen = sizeof(param);
fc342c4dc408754 Mark Chen 2021-02-02 3783 wmt_params.data = ¶m;
fc342c4dc408754 Mark Chen 2021-02-02 3784 wmt_params.status = NULL;
fc342c4dc408754 Mark Chen 2021-02-02 3785
fc342c4dc408754 Mark Chen 2021-02-02 3786 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
fc342c4dc408754 Mark Chen 2021-02-02 3787 if (err < 0) {
fc342c4dc408754 Mark Chen 2021-02-02 3788 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org
1 year, 1 month
drivers/virtio/virtio_mem.c:723 virtio_mem_memory_notifier_cb() warn: inconsistent returns '&vm->hotplug_mutex'.
by kernel test robot
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: David Hildenbrand <david(a)redhat.com>
CC: Andrew Morton <akpm(a)linux-foundation.org>
CC: Linux Memory Management List <linux-mm(a)kvack.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: efd8929b9eec1cde120abb36d76dd00ff6711023
commit: 27f852795a0684781750b95141c6d88be102ca5b virtio-mem: don't special-case ZONE_MOVABLE
date: 7 months ago
:::::: branch date: 2 hours ago
:::::: commit date: 7 months ago
config: x86_64-randconfig-m001-20210501 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
drivers/virtio/virtio_mem.c:723 virtio_mem_memory_notifier_cb() warn: inconsistent returns '&vm->hotplug_mutex'.
vim +723 drivers/virtio/virtio_mem.c
8e5c921ca0cd9a David Hildenbrand 2020-05-07 636
5f1f79bbc9e26f David Hildenbrand 2020-05-07 637 /*
5f1f79bbc9e26f David Hildenbrand 2020-05-07 638 * This callback will either be called synchronously from add_memory() or
5f1f79bbc9e26f David Hildenbrand 2020-05-07 639 * asynchronously (e.g., triggered via user space). We have to be careful
5f1f79bbc9e26f David Hildenbrand 2020-05-07 640 * with locking when calling add_memory().
5f1f79bbc9e26f David Hildenbrand 2020-05-07 641 */
5f1f79bbc9e26f David Hildenbrand 2020-05-07 642 static int virtio_mem_memory_notifier_cb(struct notifier_block *nb,
5f1f79bbc9e26f David Hildenbrand 2020-05-07 643 unsigned long action, void *arg)
5f1f79bbc9e26f David Hildenbrand 2020-05-07 644 {
5f1f79bbc9e26f David Hildenbrand 2020-05-07 645 struct virtio_mem *vm = container_of(nb, struct virtio_mem,
5f1f79bbc9e26f David Hildenbrand 2020-05-07 646 memory_notifier);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 647 struct memory_notify *mhp = arg;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 648 const unsigned long start = PFN_PHYS(mhp->start_pfn);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 649 const unsigned long size = PFN_PHYS(mhp->nr_pages);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 650 const unsigned long mb_id = virtio_mem_phys_to_mb_id(start);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 651 int rc = NOTIFY_OK;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 652
5f1f79bbc9e26f David Hildenbrand 2020-05-07 653 if (!virtio_mem_overlaps_range(vm, start, size))
5f1f79bbc9e26f David Hildenbrand 2020-05-07 654 return NOTIFY_DONE;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 655
5f1f79bbc9e26f David Hildenbrand 2020-05-07 656 /*
5f1f79bbc9e26f David Hildenbrand 2020-05-07 657 * Memory is onlined/offlined in memory block granularity. We cannot
5f1f79bbc9e26f David Hildenbrand 2020-05-07 658 * cross virtio-mem device boundaries and memory block boundaries. Bail
5f1f79bbc9e26f David Hildenbrand 2020-05-07 659 * out if this ever changes.
5f1f79bbc9e26f David Hildenbrand 2020-05-07 660 */
5f1f79bbc9e26f David Hildenbrand 2020-05-07 661 if (WARN_ON_ONCE(size != memory_block_size_bytes() ||
5f1f79bbc9e26f David Hildenbrand 2020-05-07 662 !IS_ALIGNED(start, memory_block_size_bytes())))
5f1f79bbc9e26f David Hildenbrand 2020-05-07 663 return NOTIFY_BAD;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 664
5f1f79bbc9e26f David Hildenbrand 2020-05-07 665 /*
5f1f79bbc9e26f David Hildenbrand 2020-05-07 666 * Avoid circular locking lockdep warnings. We lock the mutex
5f1f79bbc9e26f David Hildenbrand 2020-05-07 667 * e.g., in MEM_GOING_ONLINE and unlock it in MEM_ONLINE. The
5f1f79bbc9e26f David Hildenbrand 2020-05-07 668 * blocking_notifier_call_chain() has it's own lock, which gets unlocked
5f1f79bbc9e26f David Hildenbrand 2020-05-07 669 * between both notifier calls and will bail out. False positive.
5f1f79bbc9e26f David Hildenbrand 2020-05-07 670 */
5f1f79bbc9e26f David Hildenbrand 2020-05-07 671 lockdep_off();
5f1f79bbc9e26f David Hildenbrand 2020-05-07 672
5f1f79bbc9e26f David Hildenbrand 2020-05-07 673 switch (action) {
5f1f79bbc9e26f David Hildenbrand 2020-05-07 674 case MEM_GOING_OFFLINE:
5f1f79bbc9e26f David Hildenbrand 2020-05-07 675 mutex_lock(&vm->hotplug_mutex);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 676 if (vm->removing) {
5f1f79bbc9e26f David Hildenbrand 2020-05-07 677 rc = notifier_from_errno(-EBUSY);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 678 mutex_unlock(&vm->hotplug_mutex);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 679 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 680 }
5f1f79bbc9e26f David Hildenbrand 2020-05-07 681 vm->hotplug_active = true;
8e5c921ca0cd9a David Hildenbrand 2020-05-07 682 virtio_mem_notify_going_offline(vm, mb_id);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 683 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 684 case MEM_GOING_ONLINE:
5f1f79bbc9e26f David Hildenbrand 2020-05-07 685 mutex_lock(&vm->hotplug_mutex);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 686 if (vm->removing) {
5f1f79bbc9e26f David Hildenbrand 2020-05-07 687 rc = notifier_from_errno(-EBUSY);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 688 mutex_unlock(&vm->hotplug_mutex);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 689 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 690 }
5f1f79bbc9e26f David Hildenbrand 2020-05-07 691 vm->hotplug_active = true;
27f852795a0684 David Hildenbrand 2020-10-13 692 rc = virtio_mem_notify_going_online(vm, mb_id);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 693 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 694 case MEM_OFFLINE:
5f1f79bbc9e26f David Hildenbrand 2020-05-07 695 virtio_mem_notify_offline(vm, mb_id);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 696 vm->hotplug_active = false;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 697 mutex_unlock(&vm->hotplug_mutex);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 698 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 699 case MEM_ONLINE:
27f852795a0684 David Hildenbrand 2020-10-13 700 virtio_mem_notify_online(vm, mb_id);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 701 vm->hotplug_active = false;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 702 mutex_unlock(&vm->hotplug_mutex);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 703 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 704 case MEM_CANCEL_OFFLINE:
8e5c921ca0cd9a David Hildenbrand 2020-05-07 705 if (!vm->hotplug_active)
8e5c921ca0cd9a David Hildenbrand 2020-05-07 706 break;
8e5c921ca0cd9a David Hildenbrand 2020-05-07 707 virtio_mem_notify_cancel_offline(vm, mb_id);
8e5c921ca0cd9a David Hildenbrand 2020-05-07 708 vm->hotplug_active = false;
8e5c921ca0cd9a David Hildenbrand 2020-05-07 709 mutex_unlock(&vm->hotplug_mutex);
8e5c921ca0cd9a David Hildenbrand 2020-05-07 710 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 711 case MEM_CANCEL_ONLINE:
5f1f79bbc9e26f David Hildenbrand 2020-05-07 712 if (!vm->hotplug_active)
5f1f79bbc9e26f David Hildenbrand 2020-05-07 713 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 714 vm->hotplug_active = false;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 715 mutex_unlock(&vm->hotplug_mutex);
5f1f79bbc9e26f David Hildenbrand 2020-05-07 716 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 717 default:
5f1f79bbc9e26f David Hildenbrand 2020-05-07 718 break;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 719 }
5f1f79bbc9e26f David Hildenbrand 2020-05-07 720
5f1f79bbc9e26f David Hildenbrand 2020-05-07 721 lockdep_on();
5f1f79bbc9e26f David Hildenbrand 2020-05-07 722
5f1f79bbc9e26f David Hildenbrand 2020-05-07 @723 return rc;
5f1f79bbc9e26f David Hildenbrand 2020-05-07 724 }
5f1f79bbc9e26f David Hildenbrand 2020-05-07 725
:::::: The code at line 723 was first introduced by commit
:::::: 5f1f79bbc9e26fa9412fa9522f957bb8f030c442 virtio-mem: Paravirtualized memory hotplug
:::::: TO: David Hildenbrand <david(a)redhat.com>
:::::: CC: Michael S. Tsirkin <mst(a)redhat.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [RFC net-next] openvswitch: Introduce per-cpu upcall dispatch
by kernel test robot
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210430153325.28322-1-mark.d.gray(a)redhat.com>
References: <20210430153325.28322-1-mark.d.gray(a)redhat.com>
TO: Mark Gray <mark.d.gray(a)redhat.com>
Hi Mark,
[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Mark-Gray/openvswitch-Introduce-...
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 4a52dd8fefb45626dace70a63c0738dbd83b7edb
:::::: branch date: 4 hours ago
:::::: commit date: 4 hours ago
config: i386-randconfig-m021-20210430 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
net/openvswitch/datapath.c:1612 ovs_dp_set_upcall_portids() warn: variable dereferenced before check 'dp' (see line 1608)
net/openvswitch/datapath.c:1613 ovs_dp_set_upcall_portids() warn: possible memory leak of 'dp_portids'
vim +/dp +1612 net/openvswitch/datapath.c
95a7233c452a58 Paul Blakey 2019-09-04 1599
96349cd061e4c2 Mark Gray 2021-04-30 1600 static int ovs_dp_set_upcall_portids(struct datapath *dp,
96349cd061e4c2 Mark Gray 2021-04-30 1601 const struct nlattr *ids)
96349cd061e4c2 Mark Gray 2021-04-30 1602 {
96349cd061e4c2 Mark Gray 2021-04-30 1603 struct dp_portids *old, *dp_portids;
96349cd061e4c2 Mark Gray 2021-04-30 1604
96349cd061e4c2 Mark Gray 2021-04-30 1605 if (!nla_len(ids) || nla_len(ids) % sizeof(u32))
96349cd061e4c2 Mark Gray 2021-04-30 1606 return -EINVAL;
96349cd061e4c2 Mark Gray 2021-04-30 1607
96349cd061e4c2 Mark Gray 2021-04-30 @1608 old = ovsl_dereference(dp->upcall_portids);
96349cd061e4c2 Mark Gray 2021-04-30 1609
96349cd061e4c2 Mark Gray 2021-04-30 1610 dp_portids = kmalloc(sizeof(*dp_portids) + nla_len(ids),
96349cd061e4c2 Mark Gray 2021-04-30 1611 GFP_KERNEL);
96349cd061e4c2 Mark Gray 2021-04-30 @1612 if (!dp)
96349cd061e4c2 Mark Gray 2021-04-30 @1613 return -ENOMEM;
96349cd061e4c2 Mark Gray 2021-04-30 1614
96349cd061e4c2 Mark Gray 2021-04-30 1615 dp_portids->n_ids = nla_len(ids) / sizeof(u32);
96349cd061e4c2 Mark Gray 2021-04-30 1616 nla_memcpy(dp_portids->ids, ids, nla_len(ids));
96349cd061e4c2 Mark Gray 2021-04-30 1617
96349cd061e4c2 Mark Gray 2021-04-30 1618 rcu_assign_pointer(dp->upcall_portids, dp_portids);
96349cd061e4c2 Mark Gray 2021-04-30 1619
96349cd061e4c2 Mark Gray 2021-04-30 1620 if (old)
96349cd061e4c2 Mark Gray 2021-04-30 1621 kfree_rcu(old, rcu);
96349cd061e4c2 Mark Gray 2021-04-30 1622 return 0;
96349cd061e4c2 Mark Gray 2021-04-30 1623 }
96349cd061e4c2 Mark Gray 2021-04-30 1624
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [PATCH v11 3/4] lib: zstd: Upgrade to latest upstream zstd version 1.4.10
by kernel test robot
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210430013157.747152-4-nickrterrell(a)gmail.com>
References: <20210430013157.747152-4-nickrterrell(a)gmail.com>
TO: Nick Terrell <nickrterrell(a)gmail.com>
TO: Herbert Xu <herbert(a)gondor.apana.org.au>
CC: linux-crypto(a)vger.kernel.org
CC: linux-btrfs(a)vger.kernel.org
CC: squashfs-devel(a)lists.sourceforge.net
CC: linux-f2fs-devel(a)lists.sourceforge.net
CC: linux-kernel(a)vger.kernel.org
CC: Kernel Team <Kernel-team(a)fb.com>
CC: Nick Terrell <nickrterrell(a)gmail.com>
CC: Chris Mason <chris.mason(a)fusionio.com>
CC: Petr Malat <oss(a)malat.biz>
Hi Nick,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on f2fs/dev-test]
[also build test WARNING on cryptodev/master crypto/master kdave/for-next kees/for-next/pstore linus/master v5.12 next-20210430]
[cannot apply to squashfs/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Nick-Terrell/lib-zstd-Add-kernel...
base: https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev-test
:::::: branch date: 17 hours ago
:::::: commit date: 17 hours ago
config: x86_64-randconfig-m001-20210430 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
New smatch warnings:
arch/x86/boot/compressed/../../../../lib/zstd/decompress/huf_decompress.c:397 HUF_decompress4X1_usingDTable_internal_body() warn: maybe use && instead of &
arch/x86/boot/compressed/../../../../lib/zstd/decompress/huf_decompress.c:397 HUF_decompress4X1_usingDTable_internal_body() warn: maybe use && instead of &
arch/x86/boot/compressed/../../../../lib/zstd/decompress/huf_decompress.c:850 HUF_decompress4X2_usingDTable_internal_body() warn: maybe use && instead of &
arch/x86/boot/compressed/../../../../lib/zstd/decompress/huf_decompress.c:850 HUF_decompress4X2_usingDTable_internal_body() warn: maybe use && instead of &
arch/x86/boot/compressed/../../../../lib/zstd/decompress/zstd_decompress.c:177 ZSTD_createDDictHashSet() warn: variable dereferenced before check 'ret' (see line 174)
arch/x86/boot/compressed/../../../../lib/zstd/decompress/zstd_decompress_block.c:1390 ZSTD_decompressSequences() warn: inconsistent indenting
arch/x86/boot/compressed/../../../../lib/zstd/decompress/zstd_decompress_block.c:1414 ZSTD_decompressSequencesLong() warn: inconsistent indenting
Old smatch warnings:
arch/x86/boot/compressed/misc.c:289 parse_elf() warn: ignoring unreachable code.
vim +397 arch/x86/boot/compressed/../../../../lib/zstd/decompress/huf_decompress.c
4daa93e285c9c4 Nick Terrell 2021-04-29 348
4daa93e285c9c4 Nick Terrell 2021-04-29 349 FORCE_INLINE_TEMPLATE size_t
4daa93e285c9c4 Nick Terrell 2021-04-29 350 HUF_decompress4X1_usingDTable_internal_body(
4daa93e285c9c4 Nick Terrell 2021-04-29 351 void* dst, size_t dstSize,
4daa93e285c9c4 Nick Terrell 2021-04-29 352 const void* cSrc, size_t cSrcSize,
4daa93e285c9c4 Nick Terrell 2021-04-29 353 const HUF_DTable* DTable)
4daa93e285c9c4 Nick Terrell 2021-04-29 354 {
4daa93e285c9c4 Nick Terrell 2021-04-29 355 /* Check */
4daa93e285c9c4 Nick Terrell 2021-04-29 356 if (cSrcSize < 10) return ERROR(corruption_detected); /* strict minimum : jump table + 1 byte per stream */
4daa93e285c9c4 Nick Terrell 2021-04-29 357
4daa93e285c9c4 Nick Terrell 2021-04-29 358 { const BYTE* const istart = (const BYTE*) cSrc;
4daa93e285c9c4 Nick Terrell 2021-04-29 359 BYTE* const ostart = (BYTE*) dst;
4daa93e285c9c4 Nick Terrell 2021-04-29 360 BYTE* const oend = ostart + dstSize;
4daa93e285c9c4 Nick Terrell 2021-04-29 361 BYTE* const olimit = oend - 3;
4daa93e285c9c4 Nick Terrell 2021-04-29 362 const void* const dtPtr = DTable + 1;
4daa93e285c9c4 Nick Terrell 2021-04-29 363 const HUF_DEltX1* const dt = (const HUF_DEltX1*)dtPtr;
4daa93e285c9c4 Nick Terrell 2021-04-29 364
4daa93e285c9c4 Nick Terrell 2021-04-29 365 /* Init */
4daa93e285c9c4 Nick Terrell 2021-04-29 366 BIT_DStream_t bitD1;
4daa93e285c9c4 Nick Terrell 2021-04-29 367 BIT_DStream_t bitD2;
4daa93e285c9c4 Nick Terrell 2021-04-29 368 BIT_DStream_t bitD3;
4daa93e285c9c4 Nick Terrell 2021-04-29 369 BIT_DStream_t bitD4;
4daa93e285c9c4 Nick Terrell 2021-04-29 370 size_t const length1 = MEM_readLE16(istart);
4daa93e285c9c4 Nick Terrell 2021-04-29 371 size_t const length2 = MEM_readLE16(istart+2);
4daa93e285c9c4 Nick Terrell 2021-04-29 372 size_t const length3 = MEM_readLE16(istart+4);
4daa93e285c9c4 Nick Terrell 2021-04-29 373 size_t const length4 = cSrcSize - (length1 + length2 + length3 + 6);
4daa93e285c9c4 Nick Terrell 2021-04-29 374 const BYTE* const istart1 = istart + 6; /* jumpTable */
4daa93e285c9c4 Nick Terrell 2021-04-29 375 const BYTE* const istart2 = istart1 + length1;
4daa93e285c9c4 Nick Terrell 2021-04-29 376 const BYTE* const istart3 = istart2 + length2;
4daa93e285c9c4 Nick Terrell 2021-04-29 377 const BYTE* const istart4 = istart3 + length3;
4daa93e285c9c4 Nick Terrell 2021-04-29 378 const size_t segmentSize = (dstSize+3) / 4;
4daa93e285c9c4 Nick Terrell 2021-04-29 379 BYTE* const opStart2 = ostart + segmentSize;
4daa93e285c9c4 Nick Terrell 2021-04-29 380 BYTE* const opStart3 = opStart2 + segmentSize;
4daa93e285c9c4 Nick Terrell 2021-04-29 381 BYTE* const opStart4 = opStart3 + segmentSize;
4daa93e285c9c4 Nick Terrell 2021-04-29 382 BYTE* op1 = ostart;
4daa93e285c9c4 Nick Terrell 2021-04-29 383 BYTE* op2 = opStart2;
4daa93e285c9c4 Nick Terrell 2021-04-29 384 BYTE* op3 = opStart3;
4daa93e285c9c4 Nick Terrell 2021-04-29 385 BYTE* op4 = opStart4;
4daa93e285c9c4 Nick Terrell 2021-04-29 386 DTableDesc const dtd = HUF_getDTableDesc(DTable);
4daa93e285c9c4 Nick Terrell 2021-04-29 387 U32 const dtLog = dtd.tableLog;
4daa93e285c9c4 Nick Terrell 2021-04-29 388 U32 endSignal = 1;
4daa93e285c9c4 Nick Terrell 2021-04-29 389
4daa93e285c9c4 Nick Terrell 2021-04-29 390 if (length4 > cSrcSize) return ERROR(corruption_detected); /* overflow */
4daa93e285c9c4 Nick Terrell 2021-04-29 391 CHECK_F( BIT_initDStream(&bitD1, istart1, length1) );
4daa93e285c9c4 Nick Terrell 2021-04-29 392 CHECK_F( BIT_initDStream(&bitD2, istart2, length2) );
4daa93e285c9c4 Nick Terrell 2021-04-29 393 CHECK_F( BIT_initDStream(&bitD3, istart3, length3) );
4daa93e285c9c4 Nick Terrell 2021-04-29 394 CHECK_F( BIT_initDStream(&bitD4, istart4, length4) );
4daa93e285c9c4 Nick Terrell 2021-04-29 395
4daa93e285c9c4 Nick Terrell 2021-04-29 396 /* up to 16 symbols per loop (4 symbols per stream) in 64-bit mode */
4daa93e285c9c4 Nick Terrell 2021-04-29 @397 for ( ; (endSignal) & (op4 < olimit) ; ) {
4daa93e285c9c4 Nick Terrell 2021-04-29 398 HUF_DECODE_SYMBOLX1_2(op1, &bitD1);
4daa93e285c9c4 Nick Terrell 2021-04-29 399 HUF_DECODE_SYMBOLX1_2(op2, &bitD2);
4daa93e285c9c4 Nick Terrell 2021-04-29 400 HUF_DECODE_SYMBOLX1_2(op3, &bitD3);
4daa93e285c9c4 Nick Terrell 2021-04-29 401 HUF_DECODE_SYMBOLX1_2(op4, &bitD4);
4daa93e285c9c4 Nick Terrell 2021-04-29 402 HUF_DECODE_SYMBOLX1_1(op1, &bitD1);
4daa93e285c9c4 Nick Terrell 2021-04-29 403 HUF_DECODE_SYMBOLX1_1(op2, &bitD2);
4daa93e285c9c4 Nick Terrell 2021-04-29 404 HUF_DECODE_SYMBOLX1_1(op3, &bitD3);
4daa93e285c9c4 Nick Terrell 2021-04-29 405 HUF_DECODE_SYMBOLX1_1(op4, &bitD4);
4daa93e285c9c4 Nick Terrell 2021-04-29 406 HUF_DECODE_SYMBOLX1_2(op1, &bitD1);
4daa93e285c9c4 Nick Terrell 2021-04-29 407 HUF_DECODE_SYMBOLX1_2(op2, &bitD2);
4daa93e285c9c4 Nick Terrell 2021-04-29 408 HUF_DECODE_SYMBOLX1_2(op3, &bitD3);
4daa93e285c9c4 Nick Terrell 2021-04-29 409 HUF_DECODE_SYMBOLX1_2(op4, &bitD4);
4daa93e285c9c4 Nick Terrell 2021-04-29 410 HUF_DECODE_SYMBOLX1_0(op1, &bitD1);
4daa93e285c9c4 Nick Terrell 2021-04-29 411 HUF_DECODE_SYMBOLX1_0(op2, &bitD2);
4daa93e285c9c4 Nick Terrell 2021-04-29 412 HUF_DECODE_SYMBOLX1_0(op3, &bitD3);
4daa93e285c9c4 Nick Terrell 2021-04-29 413 HUF_DECODE_SYMBOLX1_0(op4, &bitD4);
4daa93e285c9c4 Nick Terrell 2021-04-29 414 endSignal &= BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished;
4daa93e285c9c4 Nick Terrell 2021-04-29 415 endSignal &= BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished;
4daa93e285c9c4 Nick Terrell 2021-04-29 416 endSignal &= BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished;
4daa93e285c9c4 Nick Terrell 2021-04-29 417 endSignal &= BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished;
4daa93e285c9c4 Nick Terrell 2021-04-29 418 }
4daa93e285c9c4 Nick Terrell 2021-04-29 419
4daa93e285c9c4 Nick Terrell 2021-04-29 420 /* check corruption */
4daa93e285c9c4 Nick Terrell 2021-04-29 421 /* note : should not be necessary : op# advance in lock step, and we control op4.
4daa93e285c9c4 Nick Terrell 2021-04-29 422 * but curiously, binary generated by gcc 7.2 & 7.3 with -mbmi2 runs faster when >=1 test is present */
4daa93e285c9c4 Nick Terrell 2021-04-29 423 if (op1 > opStart2) return ERROR(corruption_detected);
4daa93e285c9c4 Nick Terrell 2021-04-29 424 if (op2 > opStart3) return ERROR(corruption_detected);
4daa93e285c9c4 Nick Terrell 2021-04-29 425 if (op3 > opStart4) return ERROR(corruption_detected);
4daa93e285c9c4 Nick Terrell 2021-04-29 426 /* note : op4 supposed already verified within main loop */
4daa93e285c9c4 Nick Terrell 2021-04-29 427
4daa93e285c9c4 Nick Terrell 2021-04-29 428 /* finish bitStreams one by one */
4daa93e285c9c4 Nick Terrell 2021-04-29 429 HUF_decodeStreamX1(op1, &bitD1, opStart2, dt, dtLog);
4daa93e285c9c4 Nick Terrell 2021-04-29 430 HUF_decodeStreamX1(op2, &bitD2, opStart3, dt, dtLog);
4daa93e285c9c4 Nick Terrell 2021-04-29 431 HUF_decodeStreamX1(op3, &bitD3, opStart4, dt, dtLog);
4daa93e285c9c4 Nick Terrell 2021-04-29 432 HUF_decodeStreamX1(op4, &bitD4, oend, dt, dtLog);
4daa93e285c9c4 Nick Terrell 2021-04-29 433
4daa93e285c9c4 Nick Terrell 2021-04-29 434 /* check */
4daa93e285c9c4 Nick Terrell 2021-04-29 435 { U32 const endCheck = BIT_endOfDStream(&bitD1) & BIT_endOfDStream(&bitD2) & BIT_endOfDStream(&bitD3) & BIT_endOfDStream(&bitD4);
4daa93e285c9c4 Nick Terrell 2021-04-29 436 if (!endCheck) return ERROR(corruption_detected); }
4daa93e285c9c4 Nick Terrell 2021-04-29 437
4daa93e285c9c4 Nick Terrell 2021-04-29 438 /* decoded size */
4daa93e285c9c4 Nick Terrell 2021-04-29 439 return dstSize;
4daa93e285c9c4 Nick Terrell 2021-04-29 440 }
4daa93e285c9c4 Nick Terrell 2021-04-29 441 }
4daa93e285c9c4 Nick Terrell 2021-04-29 442
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[jpirko-mlxsw:linecards 51/93] net/core/devlink.c:8883 devlink_linecard_create() warn: inconsistent returns '&devlink->lock'.
by kernel test robot
CC: kbuild-all(a)lists.01.org
TO: Jiri Pirko <jiri(a)nvidia.com>
tree: https://github.com/jpirko/linux_mlxsw linecards
head: d696b418d8d5d49d02670cdf1837baf02a0ca8fc
commit: 5799ed74d194d73729a5628f5463e3226d1cf4dc [51/93] devlink: add support to create line card and expose to user
:::::: branch date: 2 hours ago
:::::: commit date: 3 days ago
config: x86_64-randconfig-m001-20210430 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
New smatch warnings:
net/core/devlink.c:8883 devlink_linecard_create() warn: inconsistent returns '&devlink->lock'.
Old smatch warnings:
net/core/devlink.c:6110 devlink_fmsg_prepare_skb() error: uninitialized symbol 'err'.
vim +8883 net/core/devlink.c
af3836df9a59e7 Jiri Pirko 2019-03-28 8852
5799ed74d194d7 Jiri Pirko 2020-12-28 8853 /**
5799ed74d194d7 Jiri Pirko 2020-12-28 8854 * devlink_linecard_create - Create devlink linecard
5799ed74d194d7 Jiri Pirko 2020-12-28 8855 *
5799ed74d194d7 Jiri Pirko 2020-12-28 8856 * @devlink: devlink
5799ed74d194d7 Jiri Pirko 2020-12-28 8857 * @devlink_linecard: devlink linecard
5799ed74d194d7 Jiri Pirko 2020-12-28 8858 * @linecard_index: driver-specific numerical identifier of the linecard
5799ed74d194d7 Jiri Pirko 2020-12-28 8859 *
5799ed74d194d7 Jiri Pirko 2020-12-28 8860 * Create devlink linecard instance with provided linecard index.
5799ed74d194d7 Jiri Pirko 2020-12-28 8861 * Caller can use any indexing, even hw-related one.
5799ed74d194d7 Jiri Pirko 2020-12-28 8862 */
5799ed74d194d7 Jiri Pirko 2020-12-28 8863 struct devlink_linecard *devlink_linecard_create(struct devlink *devlink,
5799ed74d194d7 Jiri Pirko 2020-12-28 8864 unsigned int linecard_index)
5799ed74d194d7 Jiri Pirko 2020-12-28 8865 {
5799ed74d194d7 Jiri Pirko 2020-12-28 8866 struct devlink_linecard *linecard;
5799ed74d194d7 Jiri Pirko 2020-12-28 8867
5799ed74d194d7 Jiri Pirko 2020-12-28 8868 mutex_lock(&devlink->lock);
5799ed74d194d7 Jiri Pirko 2020-12-28 8869 if (devlink_linecard_index_exists(devlink, linecard_index)) {
5799ed74d194d7 Jiri Pirko 2020-12-28 8870 mutex_unlock(&devlink->lock);
5799ed74d194d7 Jiri Pirko 2020-12-28 8871 return ERR_PTR(-EEXIST);
5799ed74d194d7 Jiri Pirko 2020-12-28 8872 }
5799ed74d194d7 Jiri Pirko 2020-12-28 8873
5799ed74d194d7 Jiri Pirko 2020-12-28 8874 linecard = kzalloc(sizeof(*linecard), GFP_KERNEL);
5799ed74d194d7 Jiri Pirko 2020-12-28 8875 if (!linecard)
5799ed74d194d7 Jiri Pirko 2020-12-28 8876 return ERR_PTR(-ENOMEM);
5799ed74d194d7 Jiri Pirko 2020-12-28 8877
5799ed74d194d7 Jiri Pirko 2020-12-28 8878 linecard->devlink = devlink;
5799ed74d194d7 Jiri Pirko 2020-12-28 8879 linecard->index = linecard_index;
5799ed74d194d7 Jiri Pirko 2020-12-28 8880 list_add_tail(&linecard->list, &devlink->linecard_list);
5799ed74d194d7 Jiri Pirko 2020-12-28 8881 devlink_linecard_notify(linecard, DEVLINK_CMD_LINECARD_NEW);
5799ed74d194d7 Jiri Pirko 2020-12-28 8882 mutex_unlock(&devlink->lock);
5799ed74d194d7 Jiri Pirko 2020-12-28 @8883 return linecard;
5799ed74d194d7 Jiri Pirko 2020-12-28 8884 }
5799ed74d194d7 Jiri Pirko 2020-12-28 8885 EXPORT_SYMBOL_GPL(devlink_linecard_create);
5799ed74d194d7 Jiri Pirko 2020-12-28 8886
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[android-common:android-4.19 7/14] kernel/dma/mapping.c:298 dma_common_contiguous_remap() error: kvmalloc() only makes sense with GFP_KERNEL
by kernel test robot
CC: kbuild-all(a)lists.01.org
TO: cros-kernel-buildreports(a)googlegroups.com
tree: https://android.googlesource.com/kernel/common android-4.19
head: a2038b4794fe99dd786877b89c98b84d78650f69
commit: dfc0e46bcf54404b2614e007efc6848c3727a537 [7/14] ANDROID: GKI: common: dma-mapping: make dma_common_contiguous_remap more robust
:::::: branch date: 12 months ago
:::::: commit date: 12 months ago
config: i386-randconfig-m021-20210430 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
kernel/dma/mapping.c:298 dma_common_contiguous_remap() error: kvmalloc() only makes sense with GFP_KERNEL
vim +298 kernel/dma/mapping.c
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 284
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 285 /*
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 286 * remaps an allocated contiguous region into another vm_area.
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 287 * Cannot be used in non-sleeping contexts
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 288 */
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 289
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 290 void *dma_common_contiguous_remap(struct page *page, size_t size,
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 291 unsigned long vm_flags,
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 292 pgprot_t prot, const void *caller)
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 293 {
dfc0e46bcf5440 kernel/dma/mapping.c Liam Mark 2015-08-11 294 unsigned long i;
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 295 struct page **pages;
1a3389ffc538a3 drivers/base/dma-mapping.c Catalin Marinas 2017-05-25 296 struct vm_struct *area;
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 297
dfc0e46bcf5440 kernel/dma/mapping.c Liam Mark 2015-08-11 @298 pages = kvmalloc(sizeof(struct page *) << get_order(size), GFP_KERNEL);
dfc0e46bcf5440 kernel/dma/mapping.c Liam Mark 2015-08-11 299
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 300 if (!pages)
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 301 return NULL;
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 302
0dd89119614ba7 drivers/base/dma-mapping.c Geliang Tang 2017-03-24 303 for (i = 0; i < (size >> PAGE_SHIFT); i++)
0dd89119614ba7 drivers/base/dma-mapping.c Geliang Tang 2017-03-24 304 pages[i] = nth_page(page, i);
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 305
1a3389ffc538a3 drivers/base/dma-mapping.c Catalin Marinas 2017-05-25 306 area = __dma_common_pages_remap(pages, size, vm_flags, prot, caller);
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 307
dfc0e46bcf5440 kernel/dma/mapping.c Liam Mark 2015-08-11 308 kvfree(pages);
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 309
1a3389ffc538a3 drivers/base/dma-mapping.c Catalin Marinas 2017-05-25 310 if (!area)
1a3389ffc538a3 drivers/base/dma-mapping.c Catalin Marinas 2017-05-25 311 return NULL;
1a3389ffc538a3 drivers/base/dma-mapping.c Catalin Marinas 2017-05-25 312 return area->addr;
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 313 }
513510ddba9650 drivers/base/dma-mapping.c Laura Abbott 2014-10-09 314
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[android-common:android12-5.10 19/21] arch/arm64/include/asm/cpufeature.h:723:35: sparse: sparse: context imbalance in '__pte_map_lock_speculative' - different lock contexts for basic block
by kernel test robot
CC: kbuild-all(a)lists.01.org
TO: cros-kernel-buildreports(a)googlegroups.com
tree: https://android.googlesource.com/kernel/common android12-5.10
head: ea97f3929567b2b7db49a6ded3bf6c4b2733a686
commit: 35eacb5c87b9b5e9683e25a24282cde1a2d4a1d5 [19/21] ANDROID: mm: allow vmas with vm_ops to be speculatively handled
:::::: branch date: 6 days ago
:::::: commit date: 6 days ago
config: arm64-randconfig-s031-20210429 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
git remote add android-common https://android.googlesource.com/kernel/common
git fetch --no-tags android-common android12-5.10
git checkout 35eacb5c87b9b5e9683e25a24282cde1a2d4a1d5
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
mm/memory.c:3542:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted vm_fault_t [usertype] ret @@ got int @@
mm/memory.c:3542:13: sparse: expected restricted vm_fault_t [usertype] ret
mm/memory.c:3542:13: sparse: got int
mm/memory.c:5726:22: sparse: sparse: cast removes address space '__user' of expression
mm/memory.c:981:17: sparse: sparse: context imbalance in 'copy_pte_range' - different lock contexts for basic block
mm/memory.c:1663:16: sparse: sparse: context imbalance in '__get_locked_pte' - different lock contexts for basic block
mm/memory.c:1712:9: sparse: sparse: context imbalance in 'insert_page' - different lock contexts for basic block
mm/memory.c:2215:17: sparse: sparse: context imbalance in 'remap_pte_range' - different lock contexts for basic block
mm/memory.c:2460:17: sparse: sparse: context imbalance in 'apply_to_pte_range' - unexpected unlock
mm/memory.c: note: in included file (through arch/arm64/include/asm/ptrace.h, arch/arm64/include/asm/irqflags.h, include/linux/irqflags.h, ...):
arch/arm64/include/asm/cpufeature.h:723:35: sparse: sparse: context imbalance in 'pte_spinlock' - different lock contexts for basic block
>> arch/arm64/include/asm/cpufeature.h:723:35: sparse: sparse: context imbalance in '__pte_map_lock_speculative' - different lock contexts for basic block
mm/memory.c:2704:13: sparse: sparse: context imbalance in 'pte_map_lock' - different lock contexts for basic block
mm/memory.c:2715:6: sparse: sparse: context imbalance in 'pte_map_lock_addr' - different lock contexts for basic block
mm/memory.c:3217:9: sparse: sparse: context imbalance in 'wp_page_copy' - unexpected unlock
mm/memory.c: note: in included file:
include/linux/mm.h:1022:9: sparse: sparse: context imbalance in 'finish_mkwrite_fault' - unexpected unlock
mm/memory.c:3290:17: sparse: sparse: context imbalance in 'wp_pfn_shared' - unexpected unlock
mm/memory.c:3353:19: sparse: sparse: context imbalance in 'do_wp_page' - different lock contexts for basic block
mm/memory.c:3772:9: sparse: sparse: context imbalance in 'do_swap_page' - unexpected unlock
mm/memory.c:3901:9: sparse: sparse: context imbalance in 'do_anonymous_page' - unexpected unlock
mm/memory.c:4137:23: sparse: sparse: context imbalance in 'finish_fault' - unexpected unlock
mm/memory.c:4431:17: sparse: sparse: context imbalance in 'do_numa_page' - unexpected unlock
mm/memory.c:4690:9: sparse: sparse: context imbalance in 'handle_pte_fault' - unexpected unlock
mm/memory.c:5234:5: sparse: sparse: context imbalance in 'follow_invalidate_pte' - different lock contexts for basic block
mm/memory.c:5355:9: sparse: sparse: context imbalance in 'follow_pfn' - unexpected unlock
vim +/__pte_map_lock_speculative +723 arch/arm64/include/asm/cpufeature.h
eb1e4aab81fbe4 Will Deacon 2020-11-18 719
7733306bd593c7 Alexandru Elisei 2020-06-18 720 static __always_inline bool system_uses_irq_prio_masking(void)
b90d2b22afdc7c Julien Thierry 2019-01-31 721 {
b90d2b22afdc7c Julien Thierry 2019-01-31 722 return IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) &&
b90d2b22afdc7c Julien Thierry 2019-01-31 @723 cpus_have_const_cap(ARM64_HAS_IRQ_PRIO_MASKING);
b90d2b22afdc7c Julien Thierry 2019-01-31 724 }
b90d2b22afdc7c Julien Thierry 2019-01-31 725
:::::: The code at line 723 was first introduced by commit
:::::: b90d2b22afdc7ce150a9ee7a8d82378bcfc395a5 arm64: cpufeature: Add cpufeature for IRQ priority masking
:::::: TO: Julien Thierry <julien.thierry(a)arm.com>
:::::: CC: Catalin Marinas <catalin.marinas(a)arm.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[android-common:android-3.18 396/1091] drivers/scsi/qla2xxx/tcm_qla2xxx.c:947:1: warning: %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'. [invalidPrintfArgType_uint]
by kernel test robot
CC: kbuild-all(a)lists.01.org
TO: cros-kernel-buildreports(a)googlegroups.com
tree: https://android.googlesource.com/kernel/common android-3.18
head: c7075682a9dd6d2807238e2af6c041e86d31bd20
commit: 8214bf079208b146e63cd0a3ce0ed335a87ce7b3 [396/1091] scripts/dtc: Export YYLOC global declaration
:::::: branch date: 7 days ago
:::::: commit date: 2 months ago
compiler: aarch64-linux-gcc (GCC) 5.5.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
vim +947 drivers/scsi/qla2xxx/tcm_qla2xxx.c
75f8c1f693eefac Nicholas Bellinger 2012-05-15 939
75f8c1f693eefac Nicholas Bellinger 2012-05-15 940 #define QLA_TPG_ATTR(_name, _mode) \
75f8c1f693eefac Nicholas Bellinger 2012-05-15 941 TF_TPG_ATTRIB_ATTR(tcm_qla2xxx, _name, _mode);
75f8c1f693eefac Nicholas Bellinger 2012-05-15 942
75f8c1f693eefac Nicholas Bellinger 2012-05-15 943 /*
75f8c1f693eefac Nicholas Bellinger 2012-05-15 944 * Define tcm_qla2xxx_tpg_attrib_s_generate_node_acls
75f8c1f693eefac Nicholas Bellinger 2012-05-15 945 */
75f8c1f693eefac Nicholas Bellinger 2012-05-15 946 DEF_QLA_TPG_ATTR_BOOL(generate_node_acls);
75f8c1f693eefac Nicholas Bellinger 2012-05-15 @947 DEF_QLA_TPG_ATTRIB(generate_node_acls);
75f8c1f693eefac Nicholas Bellinger 2012-05-15 948 QLA_TPG_ATTR(generate_node_acls, S_IRUGO | S_IWUSR);
75f8c1f693eefac Nicholas Bellinger 2012-05-15 949
:::::: The code at line 947 was first introduced by commit
:::::: 75f8c1f693eefacc17a65614eb4ed1ee0f84fda6 [SCSI] tcm_qla2xxx: Add >= 24xx series fabric module for target-core
:::::: TO: Nicholas Bellinger <nab(a)linux-iscsi.org>
:::::: CC: James Bottomley <JBottomley(a)Parallels.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [RFC PATCH] fix xfrm MTU regression
by kernel test robot
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210429170254.5grfgsz2hgy2qjhk(a)dwarf.suse.cz>
References: <20210429170254.5grfgsz2hgy2qjhk(a)dwarf.suse.cz>
TO: Jiri Bohac <jbohac(a)suse.cz>
Hi Jiri,
[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on linus/master]
[also build test WARNING on v5.12 next-20210429]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Jiri-Bohac/fix-xfrm-MTU-regressi...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git d72cd4ad4174cfd2257c426ad51e4f53bcfde9c9
:::::: branch date: 6 hours ago
:::::: commit date: 6 hours ago
config: i386-randconfig-m021-20210429 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
New smatch warnings:
net/ipv6/ip6_output.c:1501 __ip6_append_data() error: uninitialized symbol 'headersize'.
Old smatch warnings:
net/ipv6/ip6_output.c:292 ip6_xmit() error: we previously assumed 'np' could be null (see line 286)
vim +/headersize +1501 net/ipv6/ip6_output.c
366e41d9774d70 Vlad Yasevich 2015-01-31 1419
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1420 static int __ip6_append_data(struct sock *sk,
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1421 struct flowi6 *fl6,
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1422 struct sk_buff_head *queue,
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1423 struct inet_cork *cork,
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1424 struct inet6_cork *v6_cork,
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1425 struct page_frag *pfrag,
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1426 int getfrag(void *from, char *to, int offset,
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1427 int len, int odd, struct sk_buff *skb),
366e41d9774d70 Vlad Yasevich 2015-01-31 1428 void *from, int length, int transhdrlen,
5fdaa88dfefa87 Willem de Bruijn 2018-07-06 1429 unsigned int flags, struct ipcm6_cookie *ipc6)
366e41d9774d70 Vlad Yasevich 2015-01-31 1430 {
366e41d9774d70 Vlad Yasevich 2015-01-31 1431 struct sk_buff *skb, *skb_prev = NULL;
10b8a3de603df7 Paolo Abeni 2018-03-23 1432 unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu, pmtu;
b5947e5d1e710c Willem de Bruijn 2018-11-30 1433 struct ubuf_info *uarg = NULL;
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1434 int exthdrlen = 0;
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1435 int dst_exthdrlen = 0;
366e41d9774d70 Vlad Yasevich 2015-01-31 1436 int hh_len;
366e41d9774d70 Vlad Yasevich 2015-01-31 1437 int copy;
366e41d9774d70 Vlad Yasevich 2015-01-31 1438 int err;
366e41d9774d70 Vlad Yasevich 2015-01-31 1439 int offset = 0;
366e41d9774d70 Vlad Yasevich 2015-01-31 1440 u32 tskey = 0;
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1441 struct rt6_info *rt = (struct rt6_info *)cork->dst;
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1442 struct ipv6_txoptions *opt = v6_cork->opt;
32dce968dd987a Vlad Yasevich 2015-01-31 1443 int csummode = CHECKSUM_NONE;
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1444 unsigned int maxnonfragsize, headersize;
1f4c6eb2402968 Eric Dumazet 2018-03-31 1445 unsigned int wmem_alloc_delta = 0;
100f6d8e09905c Willem de Bruijn 2019-05-30 1446 bool paged, extra_uref = false;
366e41d9774d70 Vlad Yasevich 2015-01-31 1447
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1448 skb = skb_peek_tail(queue);
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1449 if (!skb) {
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1450 exthdrlen = opt ? opt->opt_flen : 0;
7efdba5bd9a2f3 Romain KUNTZ 2013-01-16 1451 dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1452 }
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1453
15e36f5b8e982d Willem de Bruijn 2018-04-26 1454 paged = !!cork->gso_size;
bec1f6f697362c Willem de Bruijn 2018-04-26 1455 mtu = cork->gso_size ? IP6_MAX_MTU : cork->fragsize;
e367c2d03dba4c lucien 2014-03-17 1456 orig_mtu = mtu;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1457
678ca42d688534 Willem de Bruijn 2018-07-06 1458 if (cork->tx_flags & SKBTX_ANY_SW_TSTAMP &&
678ca42d688534 Willem de Bruijn 2018-07-06 1459 sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)
678ca42d688534 Willem de Bruijn 2018-07-06 1460 tskey = sk->sk_tskey++;
678ca42d688534 Willem de Bruijn 2018-07-06 1461
d8d1f30b95a635 Changli Gao 2010-06-10 1462 hh_len = LL_RESERVED_SPACE(rt->dst.dev);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1463
a1b051405bc162 Masahide NAKAMURA 2007-12-20 1464 fragheaderlen = sizeof(struct ipv6hdr) + rt->rt6i_nfheader_len +
b4ce92775c2e7f Herbert Xu 2007-11-13 1465 (opt ? opt->opt_nflen : 0);
f556543e005a1e Jiri Bohac 2021-04-29 1466
f556543e005a1e Jiri Bohac 2021-04-29 1467 if (mtu < fragheaderlen ||
f556543e005a1e Jiri Bohac 2021-04-29 1468 ((mtu - fragheaderlen) & ~7) + fragheaderlen < sizeof(struct frag_hdr))
f556543e005a1e Jiri Bohac 2021-04-29 1469 goto emsgsize;
f556543e005a1e Jiri Bohac 2021-04-29 1470
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1471 maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen -
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1472 sizeof(struct frag_hdr);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1473
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1474 headersize = sizeof(struct ipv6hdr) +
3a1cebe7e05027 Hannes Frederic Sowa 2014-05-11 1475 (opt ? opt->opt_flen + opt->opt_nflen : 0) +
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1476 (dst_allfrag(&rt->dst) ?
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1477 sizeof(struct frag_hdr) : 0) +
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1478 rt->rt6i_nfheader_len;
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1479
10b8a3de603df7 Paolo Abeni 2018-03-23 1480 /* as per RFC 7112 section 5, the entire IPv6 Header Chain must fit
10b8a3de603df7 Paolo Abeni 2018-03-23 1481 * the first fragment
10b8a3de603df7 Paolo Abeni 2018-03-23 1482 */
10b8a3de603df7 Paolo Abeni 2018-03-23 1483 if (headersize + transhdrlen > mtu)
10b8a3de603df7 Paolo Abeni 2018-03-23 1484 goto emsgsize;
10b8a3de603df7 Paolo Abeni 2018-03-23 1485
26879da58711aa Wei Wang 2016-05-02 1486 if (cork->length + length > mtu - headersize && ipc6->dontfrag &&
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1487 (sk->sk_protocol == IPPROTO_UDP ||
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1488 sk->sk_protocol == IPPROTO_RAW)) {
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1489 ipv6_local_rxpmtu(sk, fl6, mtu - headersize +
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1490 sizeof(struct ipv6hdr));
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1491 goto emsgsize;
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1492 }
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1493
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1494 if (ip6_sk_ignore_df(sk))
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1495 maxnonfragsize = sizeof(struct ipv6hdr) + IPV6_MAXPLEN;
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1496 else
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1497 maxnonfragsize = mtu;
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1498
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1499 if (cork->length + length > maxnonfragsize - headersize) {
4df98e76cde7c6 Hannes Frederic Sowa 2013-12-16 1500 emsgsize:
10b8a3de603df7 Paolo Abeni 2018-03-23 @1501 pmtu = max_t(int, mtu - headersize + sizeof(struct ipv6hdr), 0);
10b8a3de603df7 Paolo Abeni 2018-03-23 1502 ipv6_local_error(sk, EMSGSIZE, fl6, pmtu);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1503 return -EMSGSIZE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1504 }
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1505
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1506 /* CHECKSUM_PARTIAL only with no extension headers and when
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1507 * we are not going to fragment
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1508 */
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1509 if (transhdrlen && sk->sk_protocol == IPPROTO_UDP &&
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1510 headersize == sizeof(struct ipv6hdr) &&
2b89ed65a6f201 Vlad Yasevich 2017-01-29 1511 length <= mtu - headersize &&
bec1f6f697362c Willem de Bruijn 2018-04-26 1512 (!(flags & MSG_MORE) || cork->gso_size) &&
c8cd0989bd151f Tom Herbert 2015-12-14 1513 rt->dst.dev->features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM))
682b1a9d3f9686 Hannes Frederic Sowa 2015-10-27 1514 csummode = CHECKSUM_PARTIAL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1515
b5947e5d1e710c Willem de Bruijn 2018-11-30 1516 if (flags & MSG_ZEROCOPY && length && sock_flag(sk, SOCK_ZEROCOPY)) {
8c793822c5803e Jonathan Lemon 2021-01-06 1517 uarg = msg_zerocopy_realloc(sk, length, skb_zcopy(skb));
b5947e5d1e710c Willem de Bruijn 2018-11-30 1518 if (!uarg)
b5947e5d1e710c Willem de Bruijn 2018-11-30 1519 return -ENOBUFS;
522924b583082f Willem de Bruijn 2019-06-07 1520 extra_uref = !skb_zcopy(skb); /* only ref on new uarg */
b5947e5d1e710c Willem de Bruijn 2018-11-30 1521 if (rt->dst.dev->features & NETIF_F_SG &&
b5947e5d1e710c Willem de Bruijn 2018-11-30 1522 csummode == CHECKSUM_PARTIAL) {
b5947e5d1e710c Willem de Bruijn 2018-11-30 1523 paged = true;
b5947e5d1e710c Willem de Bruijn 2018-11-30 1524 } else {
b5947e5d1e710c Willem de Bruijn 2018-11-30 1525 uarg->zerocopy = 0;
52900d22288e7d Willem de Bruijn 2018-11-30 1526 skb_zcopy_set(skb, uarg, &extra_uref);
b5947e5d1e710c Willem de Bruijn 2018-11-30 1527 }
b5947e5d1e710c Willem de Bruijn 2018-11-30 1528 }
b5947e5d1e710c Willem de Bruijn 2018-11-30 1529
^1da177e4c3f41 Linus Torvalds 2005-04-16 1530 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 1531 * Let's try using as much space as possible.
^1da177e4c3f41 Linus Torvalds 2005-04-16 1532 * Use MTU if total length of the message fits into the MTU.
^1da177e4c3f41 Linus Torvalds 2005-04-16 1533 * Otherwise, we need to reserve fragment header and
^1da177e4c3f41 Linus Torvalds 2005-04-16 1534 * fragment alignment (= 8-15 octects, in total).
^1da177e4c3f41 Linus Torvalds 2005-04-16 1535 *
634a63e73f0594 Randy Dunlap 2020-09-17 1536 * Note that we may need to "move" the data from the tail
^1da177e4c3f41 Linus Torvalds 2005-04-16 1537 * of the buffer to the new fragment when we split
^1da177e4c3f41 Linus Torvalds 2005-04-16 1538 * the message.
^1da177e4c3f41 Linus Torvalds 2005-04-16 1539 *
^1da177e4c3f41 Linus Torvalds 2005-04-16 1540 * FIXME: It may be fragmented into multiple chunks
^1da177e4c3f41 Linus Torvalds 2005-04-16 1541 * at once if non-fragmentable extension headers
^1da177e4c3f41 Linus Torvalds 2005-04-16 1542 * are too large.
^1da177e4c3f41 Linus Torvalds 2005-04-16 1543 * --yoshfuji
^1da177e4c3f41 Linus Torvalds 2005-04-16 1544 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1545
2811ebac2521ce Hannes Frederic Sowa 2013-09-21 1546 cork->length += length;
2811ebac2521ce Hannes Frederic Sowa 2013-09-21 1547 if (!skb)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1548 goto alloc_new_skb;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1549
^1da177e4c3f41 Linus Torvalds 2005-04-16 1550 while (length > 0) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1551 /* Check if the remaining data fits into current packet. */
bdc712b4c2baf9 David S. Miller 2011-05-06 1552 copy = (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - skb->len;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1553 if (copy < length)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1554 copy = maxfraglen - skb->len;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1555
^1da177e4c3f41 Linus Torvalds 2005-04-16 1556 if (copy <= 0) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1557 char *data;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1558 unsigned int datalen;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1559 unsigned int fraglen;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1560 unsigned int fraggap;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1561 unsigned int alloclen;
aba36930a35e7f Willem de Bruijn 2018-11-24 1562 unsigned int pagedlen;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1563 alloc_new_skb:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1564 /* There's no room in the current skb */
0c1833797a5a6e Gao feng 2012-05-26 1565 if (skb)
0c1833797a5a6e Gao feng 2012-05-26 1566 fraggap = skb->len - maxfraglen;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1567 else
^1da177e4c3f41 Linus Torvalds 2005-04-16 1568 fraggap = 0;
0c1833797a5a6e Gao feng 2012-05-26 1569 /* update mtu and maxfraglen if necessary */
63159f29be1df7 Ian Morris 2015-03-29 1570 if (!skb || !skb_prev)
0c1833797a5a6e Gao feng 2012-05-26 1571 ip6_append_data_mtu(&mtu, &maxfraglen,
75a493e60ac4bb Hannes Frederic Sowa 2013-07-02 1572 fragheaderlen, skb, rt,
e367c2d03dba4c lucien 2014-03-17 1573 orig_mtu);
0c1833797a5a6e Gao feng 2012-05-26 1574
0c1833797a5a6e Gao feng 2012-05-26 1575 skb_prev = skb;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1576
^1da177e4c3f41 Linus Torvalds 2005-04-16 1577 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 1578 * If remaining data exceeds the mtu,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1579 * we know we need more fragment(s).
^1da177e4c3f41 Linus Torvalds 2005-04-16 1580 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1581 datalen = length + fraggap;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1582
0c1833797a5a6e Gao feng 2012-05-26 1583 if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen)
0c1833797a5a6e Gao feng 2012-05-26 1584 datalen = maxfraglen - fragheaderlen - rt->dst.trailer_len;
15e36f5b8e982d Willem de Bruijn 2018-04-26 1585 fraglen = datalen + fragheaderlen;
aba36930a35e7f Willem de Bruijn 2018-11-24 1586 pagedlen = 0;
15e36f5b8e982d Willem de Bruijn 2018-04-26 1587
^1da177e4c3f41 Linus Torvalds 2005-04-16 1588 if ((flags & MSG_MORE) &&
d8d1f30b95a635 Changli Gao 2010-06-10 1589 !(rt->dst.dev->features&NETIF_F_SG))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1590 alloclen = mtu;
15e36f5b8e982d Willem de Bruijn 2018-04-26 1591 else if (!paged)
15e36f5b8e982d Willem de Bruijn 2018-04-26 1592 alloclen = fraglen;
15e36f5b8e982d Willem de Bruijn 2018-04-26 1593 else {
15e36f5b8e982d Willem de Bruijn 2018-04-26 1594 alloclen = min_t(int, fraglen, MAX_HEADER);
15e36f5b8e982d Willem de Bruijn 2018-04-26 1595 pagedlen = fraglen - alloclen;
15e36f5b8e982d Willem de Bruijn 2018-04-26 1596 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1597
299b0767642a65 Steffen Klassert 2011-10-11 1598 alloclen += dst_exthdrlen;
299b0767642a65 Steffen Klassert 2011-10-11 1599
0c1833797a5a6e Gao feng 2012-05-26 1600 if (datalen != length + fraggap) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1601 /*
0c1833797a5a6e Gao feng 2012-05-26 1602 * this is not the last fragment, the trailer
0c1833797a5a6e Gao feng 2012-05-26 1603 * space is regarded as data space.
^1da177e4c3f41 Linus Torvalds 2005-04-16 1604 */
0c1833797a5a6e Gao feng 2012-05-26 1605 datalen += rt->dst.trailer_len;
0c1833797a5a6e Gao feng 2012-05-26 1606 }
0c1833797a5a6e Gao feng 2012-05-26 1607
d8d1f30b95a635 Changli Gao 2010-06-10 1608 alloclen += rt->dst.trailer_len;
0c1833797a5a6e Gao feng 2012-05-26 1609 fraglen = datalen + fragheaderlen;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1610
^1da177e4c3f41 Linus Torvalds 2005-04-16 1611 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 1612 * We just reserve space for fragment header.
^1da177e4c3f41 Linus Torvalds 2005-04-16 1613 * Note: this may be overallocation if the message
^1da177e4c3f41 Linus Torvalds 2005-04-16 1614 * (without MSG_MORE) fits into the MTU.
^1da177e4c3f41 Linus Torvalds 2005-04-16 1615 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1616 alloclen += sizeof(struct frag_hdr);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1617
15e36f5b8e982d Willem de Bruijn 2018-04-26 1618 copy = datalen - transhdrlen - fraggap - pagedlen;
232cd35d0804cc Eric Dumazet 2017-05-19 1619 if (copy < 0) {
232cd35d0804cc Eric Dumazet 2017-05-19 1620 err = -EINVAL;
232cd35d0804cc Eric Dumazet 2017-05-19 1621 goto error;
232cd35d0804cc Eric Dumazet 2017-05-19 1622 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1623 if (transhdrlen) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1624 skb = sock_alloc_send_skb(sk,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1625 alloclen + hh_len,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1626 (flags & MSG_DONTWAIT), &err);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1627 } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1628 skb = NULL;
1f4c6eb2402968 Eric Dumazet 2018-03-31 1629 if (refcount_read(&sk->sk_wmem_alloc) + wmem_alloc_delta <=
^1da177e4c3f41 Linus Torvalds 2005-04-16 1630 2 * sk->sk_sndbuf)
1f4c6eb2402968 Eric Dumazet 2018-03-31 1631 skb = alloc_skb(alloclen + hh_len,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1632 sk->sk_allocation);
63159f29be1df7 Ian Morris 2015-03-29 1633 if (unlikely(!skb))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1634 err = -ENOBUFS;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1635 }
63159f29be1df7 Ian Morris 2015-03-29 1636 if (!skb)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1637 goto error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1638 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 1639 * Fill in the control structures
^1da177e4c3f41 Linus Torvalds 2005-04-16 1640 */
9c9c9ad5fae7e9 Hannes Frederic Sowa 2013-08-26 1641 skb->protocol = htons(ETH_P_IPV6);
32dce968dd987a Vlad Yasevich 2015-01-31 1642 skb->ip_summed = csummode;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1643 skb->csum = 0;
1f85851e17b64c Gao feng 2012-03-19 1644 /* reserve for fragmentation and ipsec header */
1f85851e17b64c Gao feng 2012-03-19 1645 skb_reserve(skb, hh_len + sizeof(struct frag_hdr) +
1f85851e17b64c Gao feng 2012-03-19 1646 dst_exthdrlen);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1647
^1da177e4c3f41 Linus Torvalds 2005-04-16 1648 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 1649 * Find where to start putting bytes
^1da177e4c3f41 Linus Torvalds 2005-04-16 1650 */
15e36f5b8e982d Willem de Bruijn 2018-04-26 1651 data = skb_put(skb, fraglen - pagedlen);
1f85851e17b64c Gao feng 2012-03-19 1652 skb_set_network_header(skb, exthdrlen);
1f85851e17b64c Gao feng 2012-03-19 1653 data += fragheaderlen;
b0e380b1d8a8e0 Arnaldo Carvalho de Melo 2007-04-10 1654 skb->transport_header = (skb->network_header +
b0e380b1d8a8e0 Arnaldo Carvalho de Melo 2007-04-10 1655 fragheaderlen);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1656 if (fraggap) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1657 skb->csum = skb_copy_and_csum_bits(
^1da177e4c3f41 Linus Torvalds 2005-04-16 1658 skb_prev, maxfraglen,
8d5930dfb7edbf Al Viro 2020-07-10 1659 data + transhdrlen, fraggap);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1660 skb_prev->csum = csum_sub(skb_prev->csum,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1661 skb->csum);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1662 data += fraggap;
e9fa4f7bd291c2 Herbert Xu 2006-08-13 1663 pskb_trim_unique(skb_prev, maxfraglen);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1664 }
232cd35d0804cc Eric Dumazet 2017-05-19 1665 if (copy > 0 &&
232cd35d0804cc Eric Dumazet 2017-05-19 1666 getfrag(from, data + transhdrlen, offset,
232cd35d0804cc Eric Dumazet 2017-05-19 1667 copy, fraggap, skb) < 0) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1668 err = -EFAULT;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1669 kfree_skb(skb);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1670 goto error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1671 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1672
^1da177e4c3f41 Linus Torvalds 2005-04-16 1673 offset += copy;
15e36f5b8e982d Willem de Bruijn 2018-04-26 1674 length -= copy + transhdrlen;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1675 transhdrlen = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1676 exthdrlen = 0;
299b0767642a65 Steffen Klassert 2011-10-11 1677 dst_exthdrlen = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1678
52900d22288e7d Willem de Bruijn 2018-11-30 1679 /* Only the initial fragment is time stamped */
52900d22288e7d Willem de Bruijn 2018-11-30 1680 skb_shinfo(skb)->tx_flags = cork->tx_flags;
52900d22288e7d Willem de Bruijn 2018-11-30 1681 cork->tx_flags = 0;
52900d22288e7d Willem de Bruijn 2018-11-30 1682 skb_shinfo(skb)->tskey = tskey;
52900d22288e7d Willem de Bruijn 2018-11-30 1683 tskey = 0;
52900d22288e7d Willem de Bruijn 2018-11-30 1684 skb_zcopy_set(skb, uarg, &extra_uref);
52900d22288e7d Willem de Bruijn 2018-11-30 1685
0dec879f636f11 Julian Anastasov 2017-02-06 1686 if ((flags & MSG_CONFIRM) && !skb_prev)
0dec879f636f11 Julian Anastasov 2017-02-06 1687 skb_set_dst_pending_confirm(skb, 1);
0dec879f636f11 Julian Anastasov 2017-02-06 1688
^1da177e4c3f41 Linus Torvalds 2005-04-16 1689 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 1690 * Put the packet on the pending queue
^1da177e4c3f41 Linus Torvalds 2005-04-16 1691 */
1f4c6eb2402968 Eric Dumazet 2018-03-31 1692 if (!skb->destructor) {
1f4c6eb2402968 Eric Dumazet 2018-03-31 1693 skb->destructor = sock_wfree;
1f4c6eb2402968 Eric Dumazet 2018-03-31 1694 skb->sk = sk;
1f4c6eb2402968 Eric Dumazet 2018-03-31 1695 wmem_alloc_delta += skb->truesize;
1f4c6eb2402968 Eric Dumazet 2018-03-31 1696 }
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1697 __skb_queue_tail(queue, skb);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1698 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1699 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1700
^1da177e4c3f41 Linus Torvalds 2005-04-16 1701 if (copy > length)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1702 copy = length;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1703
113f99c3358564 Willem de Bruijn 2018-05-17 1704 if (!(rt->dst.dev->features&NETIF_F_SG) &&
113f99c3358564 Willem de Bruijn 2018-05-17 1705 skb_tailroom(skb) >= copy) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1706 unsigned int off;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1707
^1da177e4c3f41 Linus Torvalds 2005-04-16 1708 off = skb->len;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1709 if (getfrag(from, skb_put(skb, copy),
^1da177e4c3f41 Linus Torvalds 2005-04-16 1710 offset, copy, off, skb) < 0) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1711 __skb_trim(skb, off);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1712 err = -EFAULT;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1713 goto error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1714 }
b5947e5d1e710c Willem de Bruijn 2018-11-30 1715 } else if (!uarg || !uarg->zerocopy) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1716 int i = skb_shinfo(skb)->nr_frags;
5640f7685831e0 Eric Dumazet 2012-09-23 1717
^1da177e4c3f41 Linus Torvalds 2005-04-16 1718 err = -ENOMEM;
5640f7685831e0 Eric Dumazet 2012-09-23 1719 if (!sk_page_frag_refill(sk, pfrag))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1720 goto error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1721
5640f7685831e0 Eric Dumazet 2012-09-23 1722 if (!skb_can_coalesce(skb, i, pfrag->page,
5640f7685831e0 Eric Dumazet 2012-09-23 1723 pfrag->offset)) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1724 err = -EMSGSIZE;
5640f7685831e0 Eric Dumazet 2012-09-23 1725 if (i == MAX_SKB_FRAGS)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1726 goto error;
5640f7685831e0 Eric Dumazet 2012-09-23 1727
5640f7685831e0 Eric Dumazet 2012-09-23 1728 __skb_fill_page_desc(skb, i, pfrag->page,
5640f7685831e0 Eric Dumazet 2012-09-23 1729 pfrag->offset, 0);
5640f7685831e0 Eric Dumazet 2012-09-23 1730 skb_shinfo(skb)->nr_frags = ++i;
5640f7685831e0 Eric Dumazet 2012-09-23 1731 get_page(pfrag->page);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1732 }
5640f7685831e0 Eric Dumazet 2012-09-23 1733 copy = min_t(int, copy, pfrag->size - pfrag->offset);
9e903e085262ff Eric Dumazet 2011-10-18 1734 if (getfrag(from,
5640f7685831e0 Eric Dumazet 2012-09-23 1735 page_address(pfrag->page) + pfrag->offset,
5640f7685831e0 Eric Dumazet 2012-09-23 1736 offset, copy, skb->len, skb) < 0)
5640f7685831e0 Eric Dumazet 2012-09-23 1737 goto error_efault;
5640f7685831e0 Eric Dumazet 2012-09-23 1738
5640f7685831e0 Eric Dumazet 2012-09-23 1739 pfrag->offset += copy;
5640f7685831e0 Eric Dumazet 2012-09-23 1740 skb_frag_size_add(&skb_shinfo(skb)->frags[i - 1], copy);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1741 skb->len += copy;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1742 skb->data_len += copy;
f945fa7ad9c12a Herbert Xu 2008-01-22 1743 skb->truesize += copy;
1f4c6eb2402968 Eric Dumazet 2018-03-31 1744 wmem_alloc_delta += copy;
b5947e5d1e710c Willem de Bruijn 2018-11-30 1745 } else {
b5947e5d1e710c Willem de Bruijn 2018-11-30 1746 err = skb_zerocopy_iter_dgram(skb, from, copy);
b5947e5d1e710c Willem de Bruijn 2018-11-30 1747 if (err < 0)
b5947e5d1e710c Willem de Bruijn 2018-11-30 1748 goto error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1749 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1750 offset += copy;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1751 length -= copy;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1752 }
5640f7685831e0 Eric Dumazet 2012-09-23 1753
9e8445a56c253f Paolo Abeni 2018-04-04 1754 if (wmem_alloc_delta)
1f4c6eb2402968 Eric Dumazet 2018-03-31 1755 refcount_add(wmem_alloc_delta, &sk->sk_wmem_alloc);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1756 return 0;
5640f7685831e0 Eric Dumazet 2012-09-23 1757
5640f7685831e0 Eric Dumazet 2012-09-23 1758 error_efault:
5640f7685831e0 Eric Dumazet 2012-09-23 1759 err = -EFAULT;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1760 error:
8e0449172497a9 Jonathan Lemon 2021-01-06 1761 net_zcopy_put_abort(uarg, extra_uref);
bdc712b4c2baf9 David S. Miller 2011-05-06 1762 cork->length -= length;
3bd653c8455bc7 Denis V. Lunev 2008-10-08 1763 IP6_INC_STATS(sock_net(sk), rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS);
1f4c6eb2402968 Eric Dumazet 2018-03-31 1764 refcount_add(wmem_alloc_delta, &sk->sk_wmem_alloc);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1765 return err;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1766 }
0bbe84a67b0b54 Vlad Yasevich 2015-01-31 1767
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month