1. 19 10月, 2021 1 次提交
  2. 02 8月, 2021 1 次提交
    • C
      cavium: switch from 'pci_' to 'dma_' API · 1e0dd56e
      Christophe JAILLET 提交于
      The wrappers in include/linux/pci-dma-compat.h should go away.
      
      The patch has been generated with the coccinelle script below. It has been
      hand modified to use 'dma_set_mask_and_coherent()' instead of
      'pci_set_dma_mask()/pci_set_consistent_dma_mask()' when applicable.
      
      It has been compile tested.
      
      @@
      @@
      -    PCI_DMA_BIDIRECTIONAL
      +    DMA_BIDIRECTIONAL
      
      @@
      @@
      -    PCI_DMA_TODEVICE
      +    DMA_TO_DEVICE
      
      @@
      @@
      -    PCI_DMA_FROMDEVICE
      +    DMA_FROM_DEVICE
      
      @@
      @@
      -    PCI_DMA_NONE
      +    DMA_NONE
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_alloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_zalloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_free_consistent(e1, e2, e3, e4)
      +    dma_free_coherent(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_single(e1, e2, e3, e4)
      +    dma_map_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_single(e1, e2, e3, e4)
      +    dma_unmap_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4, e5;
      @@
      -    pci_map_page(e1, e2, e3, e4, e5)
      +    dma_map_page(&e1->dev, e2, e3, e4, e5)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_page(e1, e2, e3, e4)
      +    dma_unmap_page(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_sg(e1, e2, e3, e4)
      +    dma_map_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_sg(e1, e2, e3, e4)
      +    dma_unmap_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
      +    dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_device(e1, e2, e3, e4)
      +    dma_sync_single_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
      +    dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
      +    dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2;
      @@
      -    pci_dma_mapping_error(e1, e2)
      +    dma_mapping_error(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_dma_mask(e1, e2)
      +    dma_set_mask(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_consistent_dma_mask(e1, e2)
      +    dma_set_coherent_mask(&e1->dev, e2)
      Signed-off-by: NChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1e0dd56e
  3. 28 7月, 2021 1 次提交
    • A
      dev_ioctl: split out ndo_eth_ioctl · a7605370
      Arnd Bergmann 提交于
      Most users of ndo_do_ioctl are ethernet drivers that implement
      the MII commands SIOCGMIIPHY/SIOCGMIIREG/SIOCSMIIREG, or hardware
      timestamping with SIOCSHWTSTAMP/SIOCGHWTSTAMP.
      
      Separate these from the few drivers that use ndo_do_ioctl to
      implement SIOCBOND, SIOCBR and SIOCWANDEV commands.
      
      This is a purely cosmetic change intended to help readers find
      their way through the implementation.
      
      Cc: Doug Ledford <dledford@redhat.com>
      Cc: Jason Gunthorpe <jgg@ziepe.ca>
      Cc: Jay Vosburgh <j.vosburgh@gmail.com>
      Cc: Veaceslav Falico <vfalico@gmail.com>
      Cc: Andy Gospodarek <andy@greyhouse.net>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Vivien Didelot <vivien.didelot@gmail.com>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Vladimir Oltean <olteanv@gmail.com>
      Cc: Leon Romanovsky <leon@kernel.org>
      Cc: linux-rdma@vger.kernel.org
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NJason Gunthorpe <jgg@nvidia.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a7605370
  4. 25 6月, 2021 1 次提交
  5. 09 1月, 2021 2 次提交
  6. 11 10月, 2020 1 次提交
  7. 15 9月, 2020 1 次提交
  8. 24 8月, 2020 1 次提交
  9. 06 8月, 2020 1 次提交
    • D
      net: thunderx: initialize VF's mailbox mutex before first usage · c1055b76
      Dean Nelson 提交于
      A VF's mailbox mutex is not getting initialized by nicvf_probe() until after
      it is first used. And such usage is resulting in...
      
      [   28.270927] ------------[ cut here ]------------
      [   28.270934] DEBUG_LOCKS_WARN_ON(lock->magic != lock)
      [   28.270980] WARNING: CPU: 9 PID: 675 at kernel/locking/mutex.c:938 __mutex_lock+0xdac/0x12f0
      [   28.270985] Modules linked in: ast(+) nicvf(+) i2c_algo_bit drm_vram_helper drm_ttm_helper ttm nicpf(+) drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm ixgbe(+) sg thunder_bgx mdio i2c_thunderx mdio_thunder thunder_xcv mdio_cavium dm_mirror dm_region_hash dm_log dm_mod
      [   28.271064] CPU: 9 PID: 675 Comm: systemd-udevd Not tainted 4.18.0+ #1
      [   28.271070] Hardware name: GIGABYTE R120-T34-00/MT30-GS2-00, BIOS F02 08/06/2019
      [   28.271078] pstate: 60000005 (nZCv daif -PAN -UAO)
      [   28.271086] pc : __mutex_lock+0xdac/0x12f0
      [   28.271092] lr : __mutex_lock+0xdac/0x12f0
      [   28.271097] sp : ffff800d42146fb0
      [   28.271103] x29: ffff800d42146fb0 x28: 0000000000000000
      [   28.271113] x27: ffff800d24361180 x26: dfff200000000000
      [   28.271122] x25: 0000000000000000 x24: 0000000000000002
      [   28.271132] x23: ffff20001597cc80 x22: ffff2000139e9848
      [   28.271141] x21: 0000000000000000 x20: 1ffff001a8428e0c
      [   28.271151] x19: ffff200015d5d000 x18: 1ffff001ae0f2184
      [   28.271160] x17: 0000000000000000 x16: 0000000000000000
      [   28.271170] x15: ffff800d70790c38 x14: ffff20001597c000
      [   28.271179] x13: ffff20001597cc80 x12: ffff040002b2f779
      [   28.271189] x11: 1fffe40002b2f778 x10: ffff040002b2f778
      [   28.271199] x9 : 0000000000000000 x8 : 00000000f1f1f1f1
      [   28.271208] x7 : 00000000f2f2f2f2 x6 : 0000000000000000
      [   28.271217] x5 : 1ffff001ae0f2186 x4 : 1fffe400027eb03c
      [   28.271227] x3 : dfff200000000000 x2 : ffff1001a8428dbe
      [   28.271237] x1 : c87fdfac7ea11d00 x0 : 0000000000000000
      [   28.271246] Call trace:
      [   28.271254]  __mutex_lock+0xdac/0x12f0
      [   28.271261]  mutex_lock_nested+0x3c/0x50
      [   28.271297]  nicvf_send_msg_to_pf+0x40/0x3a0 [nicvf]
      [   28.271316]  nicvf_register_misc_interrupt+0x20c/0x328 [nicvf]
      [   28.271334]  nicvf_probe+0x508/0xda0 [nicvf]
      [   28.271344]  local_pci_probe+0xc4/0x180
      [   28.271352]  pci_device_probe+0x3ec/0x528
      [   28.271363]  driver_probe_device+0x21c/0xb98
      [   28.271371]  device_driver_attach+0xe8/0x120
      [   28.271379]  __driver_attach+0xe0/0x2a0
      [   28.271386]  bus_for_each_dev+0x118/0x190
      [   28.271394]  driver_attach+0x48/0x60
      [   28.271401]  bus_add_driver+0x328/0x558
      [   28.271409]  driver_register+0x148/0x398
      [   28.271416]  __pci_register_driver+0x14c/0x1b0
      [   28.271437]  nicvf_init_module+0x54/0x10000 [nicvf]
      [   28.271447]  do_one_initcall+0x18c/0xc18
      [   28.271457]  do_init_module+0x18c/0x618
      [   28.271464]  load_module+0x2bc0/0x4088
      [   28.271472]  __se_sys_finit_module+0x110/0x188
      [   28.271479]  __arm64_sys_finit_module+0x70/0xa0
      [   28.271490]  el0_svc_handler+0x15c/0x380
      [   28.271496]  el0_svc+0x8/0xc
      [   28.271502] irq event stamp: 52649
      [   28.271513] hardirqs last  enabled at (52649): [<ffff200011b4d790>] _raw_spin_unlock_irqrestore+0xc0/0xd8
      [   28.271522] hardirqs last disabled at (52648): [<ffff200011b4d3c4>] _raw_spin_lock_irqsave+0x3c/0xf0
      [   28.271530] softirqs last  enabled at (52330): [<ffff200010082af4>] __do_softirq+0xacc/0x117c
      [   28.271540] softirqs last disabled at (52313): [<ffff20001019b354>] irq_exit+0x3cc/0x500
      [   28.271545] ---[ end trace a9b90324c8a0d4ee ]---
      
      This problem is resolved by moving the call to mutex_init() up earlier
      in nicvf_probe().
      
      Fixes: 609ea65c ("net: thunderx: add mutex to protect mailbox from concurrent calls for same VF")
      Signed-off-by: NDean Nelson <dnelson@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c1055b76
  10. 05 8月, 2020 1 次提交
    • X
      net: thunderx: use spin_lock_bh in nicvf_set_rx_mode_task() · bab9693a
      Xin Long 提交于
      A dead lock was triggered on thunderx driver:
      
              CPU0                    CPU1
              ----                    ----
         [01] lock(&(&nic->rx_mode_wq_lock)->rlock);
                                 [11] lock(&(&mc->mca_lock)->rlock);
                                 [12] lock(&(&nic->rx_mode_wq_lock)->rlock);
         [02] <Interrupt> lock(&(&mc->mca_lock)->rlock);
      
      The path for each is:
      
        [01] worker_thread() -> process_one_work() -> nicvf_set_rx_mode_task()
        [02] mld_ifc_timer_expire()
        [11] ipv6_add_dev() -> ipv6_dev_mc_inc() -> igmp6_group_added() ->
        [12] dev_mc_add() -> __dev_set_rx_mode() -> nicvf_set_rx_mode()
      
      To fix it, it needs to disable bh on [1], so that the timer on [2]
      wouldn't be triggered until rx_mode_wq_lock is released. So change
      to use spin_lock_bh() instead of spin_lock().
      
      Thanks to Paolo for helping with this.
      
      v1->v2:
        - post to netdev.
      Reported-by: NRafael P. <rparrazo@redhat.com>
      Tested-by: NDean Nelson <dnelson@redhat.com>
      Fixes: 469998c8 ("net: thunderx: prevent concurrent data re-writing by nicvf_set_rx_mode")
      Signed-off-by: NXin Long <lucien.xin@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bab9693a
  11. 26 7月, 2020 1 次提交
  12. 15 5月, 2020 1 次提交
  13. 03 3月, 2020 1 次提交
  14. 13 12月, 2019 1 次提交
    • M
      netdev: pass the stuck queue to the timeout handler · 0290bd29
      Michael S. Tsirkin 提交于
      This allows incrementing the correct timeout statistic without any mess.
      Down the road, devices can learn to reset just the specific queue.
      
      The patch was generated with the following script:
      
      use strict;
      use warnings;
      
      our $^I = '.bak';
      
      my @work = (
      ["arch/m68k/emu/nfeth.c", "nfeth_tx_timeout"],
      ["arch/um/drivers/net_kern.c", "uml_net_tx_timeout"],
      ["arch/um/drivers/vector_kern.c", "vector_net_tx_timeout"],
      ["arch/xtensa/platforms/iss/network.c", "iss_net_tx_timeout"],
      ["drivers/char/pcmcia/synclink_cs.c", "hdlcdev_tx_timeout"],
      ["drivers/infiniband/ulp/ipoib/ipoib_main.c", "ipoib_timeout"],
      ["drivers/infiniband/ulp/ipoib/ipoib_main.c", "ipoib_timeout"],
      ["drivers/message/fusion/mptlan.c", "mpt_lan_tx_timeout"],
      ["drivers/misc/sgi-xp/xpnet.c", "xpnet_dev_tx_timeout"],
      ["drivers/net/appletalk/cops.c", "cops_timeout"],
      ["drivers/net/arcnet/arcdevice.h", "arcnet_timeout"],
      ["drivers/net/arcnet/arcnet.c", "arcnet_timeout"],
      ["drivers/net/arcnet/com20020.c", "arcnet_timeout"],
      ["drivers/net/ethernet/3com/3c509.c", "el3_tx_timeout"],
      ["drivers/net/ethernet/3com/3c515.c", "corkscrew_timeout"],
      ["drivers/net/ethernet/3com/3c574_cs.c", "el3_tx_timeout"],
      ["drivers/net/ethernet/3com/3c589_cs.c", "el3_tx_timeout"],
      ["drivers/net/ethernet/3com/3c59x.c", "vortex_tx_timeout"],
      ["drivers/net/ethernet/3com/3c59x.c", "vortex_tx_timeout"],
      ["drivers/net/ethernet/3com/typhoon.c", "typhoon_tx_timeout"],
      ["drivers/net/ethernet/8390/8390.h", "ei_tx_timeout"],
      ["drivers/net/ethernet/8390/8390.h", "eip_tx_timeout"],
      ["drivers/net/ethernet/8390/8390.c", "ei_tx_timeout"],
      ["drivers/net/ethernet/8390/8390p.c", "eip_tx_timeout"],
      ["drivers/net/ethernet/8390/ax88796.c", "ax_ei_tx_timeout"],
      ["drivers/net/ethernet/8390/axnet_cs.c", "axnet_tx_timeout"],
      ["drivers/net/ethernet/8390/etherh.c", "__ei_tx_timeout"],
      ["drivers/net/ethernet/8390/hydra.c", "__ei_tx_timeout"],
      ["drivers/net/ethernet/8390/mac8390.c", "__ei_tx_timeout"],
      ["drivers/net/ethernet/8390/mcf8390.c", "__ei_tx_timeout"],
      ["drivers/net/ethernet/8390/lib8390.c", "__ei_tx_timeout"],
      ["drivers/net/ethernet/8390/ne2k-pci.c", "ei_tx_timeout"],
      ["drivers/net/ethernet/8390/pcnet_cs.c", "ei_tx_timeout"],
      ["drivers/net/ethernet/8390/smc-ultra.c", "ei_tx_timeout"],
      ["drivers/net/ethernet/8390/wd.c", "ei_tx_timeout"],
      ["drivers/net/ethernet/8390/zorro8390.c", "__ei_tx_timeout"],
      ["drivers/net/ethernet/adaptec/starfire.c", "tx_timeout"],
      ["drivers/net/ethernet/agere/et131x.c", "et131x_tx_timeout"],
      ["drivers/net/ethernet/allwinner/sun4i-emac.c", "emac_timeout"],
      ["drivers/net/ethernet/alteon/acenic.c", "ace_watchdog"],
      ["drivers/net/ethernet/amazon/ena/ena_netdev.c", "ena_tx_timeout"],
      ["drivers/net/ethernet/amd/7990.h", "lance_tx_timeout"],
      ["drivers/net/ethernet/amd/7990.c", "lance_tx_timeout"],
      ["drivers/net/ethernet/amd/a2065.c", "lance_tx_timeout"],
      ["drivers/net/ethernet/amd/am79c961a.c", "am79c961_timeout"],
      ["drivers/net/ethernet/amd/amd8111e.c", "amd8111e_tx_timeout"],
      ["drivers/net/ethernet/amd/ariadne.c", "ariadne_tx_timeout"],
      ["drivers/net/ethernet/amd/atarilance.c", "lance_tx_timeout"],
      ["drivers/net/ethernet/amd/au1000_eth.c", "au1000_tx_timeout"],
      ["drivers/net/ethernet/amd/declance.c", "lance_tx_timeout"],
      ["drivers/net/ethernet/amd/lance.c", "lance_tx_timeout"],
      ["drivers/net/ethernet/amd/mvme147.c", "lance_tx_timeout"],
      ["drivers/net/ethernet/amd/ni65.c", "ni65_timeout"],
      ["drivers/net/ethernet/amd/nmclan_cs.c", "mace_tx_timeout"],
      ["drivers/net/ethernet/amd/pcnet32.c", "pcnet32_tx_timeout"],
      ["drivers/net/ethernet/amd/sunlance.c", "lance_tx_timeout"],
      ["drivers/net/ethernet/amd/xgbe/xgbe-drv.c", "xgbe_tx_timeout"],
      ["drivers/net/ethernet/apm/xgene-v2/main.c", "xge_timeout"],
      ["drivers/net/ethernet/apm/xgene/xgene_enet_main.c", "xgene_enet_timeout"],
      ["drivers/net/ethernet/apple/macmace.c", "mace_tx_timeout"],
      ["drivers/net/ethernet/atheros/ag71xx.c", "ag71xx_tx_timeout"],
      ["drivers/net/ethernet/atheros/alx/main.c", "alx_tx_timeout"],
      ["drivers/net/ethernet/atheros/atl1c/atl1c_main.c", "atl1c_tx_timeout"],
      ["drivers/net/ethernet/atheros/atl1e/atl1e_main.c", "atl1e_tx_timeout"],
      ["drivers/net/ethernet/atheros/atlx/atl.c", "atlx_tx_timeout"],
      ["drivers/net/ethernet/atheros/atlx/atl1.c", "atlx_tx_timeout"],
      ["drivers/net/ethernet/atheros/atlx/atl2.c", "atl2_tx_timeout"],
      ["drivers/net/ethernet/broadcom/b44.c", "b44_tx_timeout"],
      ["drivers/net/ethernet/broadcom/bcmsysport.c", "bcm_sysport_tx_timeout"],
      ["drivers/net/ethernet/broadcom/bnx2.c", "bnx2_tx_timeout"],
      ["drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h", "bnx2x_tx_timeout"],
      ["drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c", "bnx2x_tx_timeout"],
      ["drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c", "bnx2x_tx_timeout"],
      ["drivers/net/ethernet/broadcom/bnxt/bnxt.c", "bnxt_tx_timeout"],
      ["drivers/net/ethernet/broadcom/genet/bcmgenet.c", "bcmgenet_timeout"],
      ["drivers/net/ethernet/broadcom/sb1250-mac.c", "sbmac_tx_timeout"],
      ["drivers/net/ethernet/broadcom/tg3.c", "tg3_tx_timeout"],
      ["drivers/net/ethernet/calxeda/xgmac.c", "xgmac_tx_timeout"],
      ["drivers/net/ethernet/cavium/liquidio/lio_main.c", "liquidio_tx_timeout"],
      ["drivers/net/ethernet/cavium/liquidio/lio_vf_main.c", "liquidio_tx_timeout"],
      ["drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c", "lio_vf_rep_tx_timeout"],
      ["drivers/net/ethernet/cavium/thunder/nicvf_main.c", "nicvf_tx_timeout"],
      ["drivers/net/ethernet/cirrus/cs89x0.c", "net_timeout"],
      ["drivers/net/ethernet/cisco/enic/enic_main.c", "enic_tx_timeout"],
      ["drivers/net/ethernet/cisco/enic/enic_main.c", "enic_tx_timeout"],
      ["drivers/net/ethernet/cortina/gemini.c", "gmac_tx_timeout"],
      ["drivers/net/ethernet/davicom/dm9000.c", "dm9000_timeout"],
      ["drivers/net/ethernet/dec/tulip/de2104x.c", "de_tx_timeout"],
      ["drivers/net/ethernet/dec/tulip/tulip_core.c", "tulip_tx_timeout"],
      ["drivers/net/ethernet/dec/tulip/winbond-840.c", "tx_timeout"],
      ["drivers/net/ethernet/dlink/dl2k.c", "rio_tx_timeout"],
      ["drivers/net/ethernet/dlink/sundance.c", "tx_timeout"],
      ["drivers/net/ethernet/emulex/benet/be_main.c", "be_tx_timeout"],
      ["drivers/net/ethernet/ethoc.c", "ethoc_tx_timeout"],
      ["drivers/net/ethernet/faraday/ftgmac100.c", "ftgmac100_tx_timeout"],
      ["drivers/net/ethernet/fealnx.c", "fealnx_tx_timeout"],
      ["drivers/net/ethernet/freescale/dpaa/dpaa_eth.c", "dpaa_tx_timeout"],
      ["drivers/net/ethernet/freescale/fec_main.c", "fec_timeout"],
      ["drivers/net/ethernet/freescale/fec_mpc52xx.c", "mpc52xx_fec_tx_timeout"],
      ["drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c", "fs_timeout"],
      ["drivers/net/ethernet/freescale/gianfar.c", "gfar_timeout"],
      ["drivers/net/ethernet/freescale/ucc_geth.c", "ucc_geth_timeout"],
      ["drivers/net/ethernet/fujitsu/fmvj18x_cs.c", "fjn_tx_timeout"],
      ["drivers/net/ethernet/google/gve/gve_main.c", "gve_tx_timeout"],
      ["drivers/net/ethernet/hisilicon/hip04_eth.c", "hip04_timeout"],
      ["drivers/net/ethernet/hisilicon/hix5hd2_gmac.c", "hix5hd2_net_timeout"],
      ["drivers/net/ethernet/hisilicon/hns/hns_enet.c", "hns_nic_net_timeout"],
      ["drivers/net/ethernet/hisilicon/hns3/hns3_enet.c", "hns3_nic_net_timeout"],
      ["drivers/net/ethernet/huawei/hinic/hinic_main.c", "hinic_tx_timeout"],
      ["drivers/net/ethernet/i825xx/82596.c", "i596_tx_timeout"],
      ["drivers/net/ethernet/i825xx/ether1.c", "ether1_timeout"],
      ["drivers/net/ethernet/i825xx/lib82596.c", "i596_tx_timeout"],
      ["drivers/net/ethernet/i825xx/sun3_82586.c", "sun3_82586_timeout"],
      ["drivers/net/ethernet/ibm/ehea/ehea_main.c", "ehea_tx_watchdog"],
      ["drivers/net/ethernet/ibm/emac/core.c", "emac_tx_timeout"],
      ["drivers/net/ethernet/ibm/emac/core.c", "emac_tx_timeout"],
      ["drivers/net/ethernet/ibm/ibmvnic.c", "ibmvnic_tx_timeout"],
      ["drivers/net/ethernet/intel/e100.c", "e100_tx_timeout"],
      ["drivers/net/ethernet/intel/e1000/e1000_main.c", "e1000_tx_timeout"],
      ["drivers/net/ethernet/intel/e1000e/netdev.c", "e1000_tx_timeout"],
      ["drivers/net/ethernet/intel/fm10k/fm10k_netdev.c", "fm10k_tx_timeout"],
      ["drivers/net/ethernet/intel/i40e/i40e_main.c", "i40e_tx_timeout"],
      ["drivers/net/ethernet/intel/iavf/iavf_main.c", "iavf_tx_timeout"],
      ["drivers/net/ethernet/intel/ice/ice_main.c", "ice_tx_timeout"],
      ["drivers/net/ethernet/intel/ice/ice_main.c", "ice_tx_timeout"],
      ["drivers/net/ethernet/intel/igb/igb_main.c", "igb_tx_timeout"],
      ["drivers/net/ethernet/intel/igbvf/netdev.c", "igbvf_tx_timeout"],
      ["drivers/net/ethernet/intel/ixgb/ixgb_main.c", "ixgb_tx_timeout"],
      ["drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c", "adapter->netdev->netdev_ops->ndo_tx_timeout(adapter->netdev);"],
      ["drivers/net/ethernet/intel/ixgbe/ixgbe_main.c", "ixgbe_tx_timeout"],
      ["drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c", "ixgbevf_tx_timeout"],
      ["drivers/net/ethernet/jme.c", "jme_tx_timeout"],
      ["drivers/net/ethernet/korina.c", "korina_tx_timeout"],
      ["drivers/net/ethernet/lantiq_etop.c", "ltq_etop_tx_timeout"],
      ["drivers/net/ethernet/marvell/mv643xx_eth.c", "mv643xx_eth_tx_timeout"],
      ["drivers/net/ethernet/marvell/pxa168_eth.c", "pxa168_eth_tx_timeout"],
      ["drivers/net/ethernet/marvell/skge.c", "skge_tx_timeout"],
      ["drivers/net/ethernet/marvell/sky2.c", "sky2_tx_timeout"],
      ["drivers/net/ethernet/marvell/sky2.c", "sky2_tx_timeout"],
      ["drivers/net/ethernet/mediatek/mtk_eth_soc.c", "mtk_tx_timeout"],
      ["drivers/net/ethernet/mellanox/mlx4/en_netdev.c", "mlx4_en_tx_timeout"],
      ["drivers/net/ethernet/mellanox/mlx4/en_netdev.c", "mlx4_en_tx_timeout"],
      ["drivers/net/ethernet/mellanox/mlx5/core/en_main.c", "mlx5e_tx_timeout"],
      ["drivers/net/ethernet/micrel/ks8842.c", "ks8842_tx_timeout"],
      ["drivers/net/ethernet/micrel/ksz884x.c", "netdev_tx_timeout"],
      ["drivers/net/ethernet/microchip/enc28j60.c", "enc28j60_tx_timeout"],
      ["drivers/net/ethernet/microchip/encx24j600.c", "encx24j600_tx_timeout"],
      ["drivers/net/ethernet/natsemi/sonic.h", "sonic_tx_timeout"],
      ["drivers/net/ethernet/natsemi/sonic.c", "sonic_tx_timeout"],
      ["drivers/net/ethernet/natsemi/jazzsonic.c", "sonic_tx_timeout"],
      ["drivers/net/ethernet/natsemi/macsonic.c", "sonic_tx_timeout"],
      ["drivers/net/ethernet/natsemi/natsemi.c", "ns_tx_timeout"],
      ["drivers/net/ethernet/natsemi/ns83820.c", "ns83820_tx_timeout"],
      ["drivers/net/ethernet/natsemi/xtsonic.c", "sonic_tx_timeout"],
      ["drivers/net/ethernet/neterion/s2io.h", "s2io_tx_watchdog"],
      ["drivers/net/ethernet/neterion/s2io.c", "s2io_tx_watchdog"],
      ["drivers/net/ethernet/neterion/vxge/vxge-main.c", "vxge_tx_watchdog"],
      ["drivers/net/ethernet/netronome/nfp/nfp_net_common.c", "nfp_net_tx_timeout"],
      ["drivers/net/ethernet/nvidia/forcedeth.c", "nv_tx_timeout"],
      ["drivers/net/ethernet/nvidia/forcedeth.c", "nv_tx_timeout"],
      ["drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c", "pch_gbe_tx_timeout"],
      ["drivers/net/ethernet/packetengines/hamachi.c", "hamachi_tx_timeout"],
      ["drivers/net/ethernet/packetengines/yellowfin.c", "yellowfin_tx_timeout"],
      ["drivers/net/ethernet/pensando/ionic/ionic_lif.c", "ionic_tx_timeout"],
      ["drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c", "netxen_tx_timeout"],
      ["drivers/net/ethernet/qlogic/qla3xxx.c", "ql3xxx_tx_timeout"],
      ["drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c", "qlcnic_tx_timeout"],
      ["drivers/net/ethernet/qualcomm/emac/emac.c", "emac_tx_timeout"],
      ["drivers/net/ethernet/qualcomm/qca_spi.c", "qcaspi_netdev_tx_timeout"],
      ["drivers/net/ethernet/qualcomm/qca_uart.c", "qcauart_netdev_tx_timeout"],
      ["drivers/net/ethernet/rdc/r6040.c", "r6040_tx_timeout"],
      ["drivers/net/ethernet/realtek/8139cp.c", "cp_tx_timeout"],
      ["drivers/net/ethernet/realtek/8139too.c", "rtl8139_tx_timeout"],
      ["drivers/net/ethernet/realtek/atp.c", "tx_timeout"],
      ["drivers/net/ethernet/realtek/r8169_main.c", "rtl8169_tx_timeout"],
      ["drivers/net/ethernet/renesas/ravb_main.c", "ravb_tx_timeout"],
      ["drivers/net/ethernet/renesas/sh_eth.c", "sh_eth_tx_timeout"],
      ["drivers/net/ethernet/renesas/sh_eth.c", "sh_eth_tx_timeout"],
      ["drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c", "sxgbe_tx_timeout"],
      ["drivers/net/ethernet/seeq/ether3.c", "ether3_timeout"],
      ["drivers/net/ethernet/seeq/sgiseeq.c", "timeout"],
      ["drivers/net/ethernet/sfc/efx.c", "efx_watchdog"],
      ["drivers/net/ethernet/sfc/falcon/efx.c", "ef4_watchdog"],
      ["drivers/net/ethernet/sgi/ioc3-eth.c", "ioc3_timeout"],
      ["drivers/net/ethernet/sgi/meth.c", "meth_tx_timeout"],
      ["drivers/net/ethernet/silan/sc92031.c", "sc92031_tx_timeout"],
      ["drivers/net/ethernet/sis/sis190.c", "sis190_tx_timeout"],
      ["drivers/net/ethernet/sis/sis900.c", "sis900_tx_timeout"],
      ["drivers/net/ethernet/smsc/epic100.c", "epic_tx_timeout"],
      ["drivers/net/ethernet/smsc/smc911x.c", "smc911x_timeout"],
      ["drivers/net/ethernet/smsc/smc9194.c", "smc_timeout"],
      ["drivers/net/ethernet/smsc/smc91c92_cs.c", "smc_tx_timeout"],
      ["drivers/net/ethernet/smsc/smc91x.c", "smc_timeout"],
      ["drivers/net/ethernet/stmicro/stmmac/stmmac_main.c", "stmmac_tx_timeout"],
      ["drivers/net/ethernet/sun/cassini.c", "cas_tx_timeout"],
      ["drivers/net/ethernet/sun/ldmvsw.c", "sunvnet_tx_timeout_common"],
      ["drivers/net/ethernet/sun/niu.c", "niu_tx_timeout"],
      ["drivers/net/ethernet/sun/sunbmac.c", "bigmac_tx_timeout"],
      ["drivers/net/ethernet/sun/sungem.c", "gem_tx_timeout"],
      ["drivers/net/ethernet/sun/sunhme.c", "happy_meal_tx_timeout"],
      ["drivers/net/ethernet/sun/sunqe.c", "qe_tx_timeout"],
      ["drivers/net/ethernet/sun/sunvnet.c", "sunvnet_tx_timeout_common"],
      ["drivers/net/ethernet/sun/sunvnet_common.c", "sunvnet_tx_timeout_common"],
      ["drivers/net/ethernet/sun/sunvnet_common.h", "sunvnet_tx_timeout_common"],
      ["drivers/net/ethernet/synopsys/dwc-xlgmac-net.c", "xlgmac_tx_timeout"],
      ["drivers/net/ethernet/ti/cpmac.c", "cpmac_tx_timeout"],
      ["drivers/net/ethernet/ti/cpsw.c", "cpsw_ndo_tx_timeout"],
      ["drivers/net/ethernet/ti/cpsw_priv.c", "cpsw_ndo_tx_timeout"],
      ["drivers/net/ethernet/ti/cpsw_priv.h", "cpsw_ndo_tx_timeout"],
      ["drivers/net/ethernet/ti/davinci_emac.c", "emac_dev_tx_timeout"],
      ["drivers/net/ethernet/ti/netcp_core.c", "netcp_ndo_tx_timeout"],
      ["drivers/net/ethernet/ti/tlan.c", "tlan_tx_timeout"],
      ["drivers/net/ethernet/toshiba/ps3_gelic_net.h", "gelic_net_tx_timeout"],
      ["drivers/net/ethernet/toshiba/ps3_gelic_net.c", "gelic_net_tx_timeout"],
      ["drivers/net/ethernet/toshiba/ps3_gelic_wireless.c", "gelic_net_tx_timeout"],
      ["drivers/net/ethernet/toshiba/spider_net.c", "spider_net_tx_timeout"],
      ["drivers/net/ethernet/toshiba/tc35815.c", "tc35815_tx_timeout"],
      ["drivers/net/ethernet/via/via-rhine.c", "rhine_tx_timeout"],
      ["drivers/net/ethernet/wiznet/w5100.c", "w5100_tx_timeout"],
      ["drivers/net/ethernet/wiznet/w5300.c", "w5300_tx_timeout"],
      ["drivers/net/ethernet/xilinx/xilinx_emaclite.c", "xemaclite_tx_timeout"],
      ["drivers/net/ethernet/xircom/xirc2ps_cs.c", "xirc_tx_timeout"],
      ["drivers/net/fjes/fjes_main.c", "fjes_tx_retry"],
      ["drivers/net/slip/slip.c", "sl_tx_timeout"],
      ["include/linux/usb/usbnet.h", "usbnet_tx_timeout"],
      ["drivers/net/usb/aqc111.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/asix_devices.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/ax88172a.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/ax88179_178a.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/catc.c", "catc_tx_timeout"],
      ["drivers/net/usb/cdc_mbim.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/cdc_ncm.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/dm9601.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/hso.c", "hso_net_tx_timeout"],
      ["drivers/net/usb/int51x1.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/ipheth.c", "ipheth_tx_timeout"],
      ["drivers/net/usb/kaweth.c", "kaweth_tx_timeout"],
      ["drivers/net/usb/lan78xx.c", "lan78xx_tx_timeout"],
      ["drivers/net/usb/mcs7830.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/pegasus.c", "pegasus_tx_timeout"],
      ["drivers/net/usb/qmi_wwan.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/r8152.c", "rtl8152_tx_timeout"],
      ["drivers/net/usb/rndis_host.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/rtl8150.c", "rtl8150_tx_timeout"],
      ["drivers/net/usb/sierra_net.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/smsc75xx.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/smsc95xx.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/sr9700.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/sr9800.c", "usbnet_tx_timeout"],
      ["drivers/net/usb/usbnet.c", "usbnet_tx_timeout"],
      ["drivers/net/vmxnet3/vmxnet3_drv.c", "vmxnet3_tx_timeout"],
      ["drivers/net/wan/cosa.c", "cosa_net_timeout"],
      ["drivers/net/wan/farsync.c", "fst_tx_timeout"],
      ["drivers/net/wan/fsl_ucc_hdlc.c", "uhdlc_tx_timeout"],
      ["drivers/net/wan/lmc/lmc_main.c", "lmc_driver_timeout"],
      ["drivers/net/wan/x25_asy.c", "x25_asy_timeout"],
      ["drivers/net/wimax/i2400m/netdev.c", "i2400m_tx_timeout"],
      ["drivers/net/wireless/intel/ipw2x00/ipw2100.c", "ipw2100_tx_timeout"],
      ["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
      ["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
      ["drivers/net/wireless/intersil/hostap/hostap_main.c", "prism2_tx_timeout"],
      ["drivers/net/wireless/intersil/orinoco/main.c", "orinoco_tx_timeout"],
      ["drivers/net/wireless/intersil/orinoco/orinoco_usb.c", "orinoco_tx_timeout"],
      ["drivers/net/wireless/intersil/orinoco/orinoco.h", "orinoco_tx_timeout"],
      ["drivers/net/wireless/intersil/prism54/islpci_dev.c", "islpci_eth_tx_timeout"],
      ["drivers/net/wireless/intersil/prism54/islpci_eth.c", "islpci_eth_tx_timeout"],
      ["drivers/net/wireless/intersil/prism54/islpci_eth.h", "islpci_eth_tx_timeout"],
      ["drivers/net/wireless/marvell/mwifiex/main.c", "mwifiex_tx_timeout"],
      ["drivers/net/wireless/quantenna/qtnfmac/core.c", "qtnf_netdev_tx_timeout"],
      ["drivers/net/wireless/quantenna/qtnfmac/core.h", "qtnf_netdev_tx_timeout"],
      ["drivers/net/wireless/rndis_wlan.c", "usbnet_tx_timeout"],
      ["drivers/net/wireless/wl3501_cs.c", "wl3501_tx_timeout"],
      ["drivers/net/wireless/zydas/zd1201.c", "zd1201_tx_timeout"],
      ["drivers/s390/net/qeth_core.h", "qeth_tx_timeout"],
      ["drivers/s390/net/qeth_core_main.c", "qeth_tx_timeout"],
      ["drivers/s390/net/qeth_l2_main.c", "qeth_tx_timeout"],
      ["drivers/s390/net/qeth_l2_main.c", "qeth_tx_timeout"],
      ["drivers/s390/net/qeth_l3_main.c", "qeth_tx_timeout"],
      ["drivers/s390/net/qeth_l3_main.c", "qeth_tx_timeout"],
      ["drivers/staging/ks7010/ks_wlan_net.c", "ks_wlan_tx_timeout"],
      ["drivers/staging/qlge/qlge_main.c", "qlge_tx_timeout"],
      ["drivers/staging/rtl8192e/rtl8192e/rtl_core.c", "_rtl92e_tx_timeout"],
      ["drivers/staging/rtl8192u/r8192U_core.c", "tx_timeout"],
      ["drivers/staging/unisys/visornic/visornic_main.c", "visornic_xmit_timeout"],
      ["drivers/staging/wlan-ng/p80211netdev.c", "p80211knetdev_tx_timeout"],
      ["drivers/tty/n_gsm.c", "gsm_mux_net_tx_timeout"],
      ["drivers/tty/synclink.c", "hdlcdev_tx_timeout"],
      ["drivers/tty/synclink_gt.c", "hdlcdev_tx_timeout"],
      ["drivers/tty/synclinkmp.c", "hdlcdev_tx_timeout"],
      ["net/atm/lec.c", "lec_tx_timeout"],
      ["net/bluetooth/bnep/netdev.c", "bnep_net_timeout"]
      );
      
      for my $p (@work) {
      	my @pair = @$p;
      	my $file = $pair[0];
      	my $func = $pair[1];
      	print STDERR $file , ": ", $func,"\n";
      	our @ARGV = ($file);
      	while (<ARGV>) {
      		if (m/($func\s*\(struct\s+net_device\s+\*[A-Za-z_]?[A-Za-z-0-9_]*)(\))/) {
      			print STDERR "found $1+$2 in $file\n";
      		}
      		if (s/($func\s*\(struct\s+net_device\s+\*[A-Za-z_]?[A-Za-z-0-9_]*)(\))/$1, unsigned int txqueue$2/) {
      			print STDERR "$func found in $file\n";
      		}
      		print;
      	}
      }
      
      where the list of files and functions is simply from:
      
      git grep ndo_tx_timeout, with manual addition of headers
      in the rare cases where the function is from a header,
      then manually changing the few places which actually
      call ndo_tx_timeout.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Acked-by: NHeiner Kallweit <hkallweit1@gmail.com>
      Acked-by: NJakub Kicinski <jakub.kicinski@netronome.com>
      Acked-by: NShannon Nelson <snelson@pensando.io>
      Reviewed-by: NMartin Habets <mhabets@solarflare.com>
      
      changes from v9:
      	fixup a forward declaration
      changes from v9:
      	more leftovers from v3 change
      changes from v8:
              fix up a missing direct call to timeout
              rebased on net-next
      changes from v7:
      	fixup leftovers from v3 change
      changes from v6:
      	fix typo in rtl driver
      changes from v5:
      	add missing files (allow any net device argument name)
      changes from v4:
      	add a missing driver header
      changes from v3:
              change queue # to unsigned
      Changes from v2:
              added headers
      Changes from v1:
              Fix errors found by kbuild:
              generalize the pattern a bit, to pick up
              a couple of instances missed by the previous
              version.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0290bd29
  15. 18 11月, 2019 1 次提交
  16. 31 5月, 2019 1 次提交
  17. 12 4月, 2019 2 次提交
  18. 05 4月, 2019 1 次提交
    • L
      net: thunderx: fix NULL pointer dereference in nicvf_open/nicvf_stop · 2ec1ed2a
      Lorenzo Bianconi 提交于
      When a bpf program is uploaded, the driver computes the number of
      xdp tx queues resulting in the allocation of additional qsets.
      Starting from commit '2ecbe4f4 ("net: thunderx: replace global
      nicvf_rx_mode_wq work queue for all VFs to private for each of them")'
      the driver runs link state polling for each VF resulting in the
      following NULL pointer dereference:
      
      [   56.169256] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
      [   56.178032] Mem abort info:
      [   56.180834]   ESR = 0x96000005
      [   56.183877]   Exception class = DABT (current EL), IL = 32 bits
      [   56.189792]   SET = 0, FnV = 0
      [   56.192834]   EA = 0, S1PTW = 0
      [   56.195963] Data abort info:
      [   56.198831]   ISV = 0, ISS = 0x00000005
      [   56.202662]   CM = 0, WnR = 0
      [   56.205619] user pgtable: 64k pages, 48-bit VAs, pgdp = 0000000021f0c7a0
      [   56.212315] [0000000000000020] pgd=0000000000000000, pud=0000000000000000
      [   56.219094] Internal error: Oops: 96000005 [#1] SMP
      [   56.260459] CPU: 39 PID: 2034 Comm: ip Not tainted 5.1.0-rc3+ #3
      [   56.266452] Hardware name: GIGABYTE R120-T33/MT30-GS1, BIOS T49 02/02/2018
      [   56.273315] pstate: 80000005 (Nzcv daif -PAN -UAO)
      [   56.278098] pc : __ll_sc___cmpxchg_case_acq_64+0x4/0x20
      [   56.283312] lr : mutex_lock+0x2c/0x50
      [   56.286962] sp : ffff0000219af1b0
      [   56.290264] x29: ffff0000219af1b0 x28: ffff800f64de49a0
      [   56.295565] x27: 0000000000000000 x26: 0000000000000015
      [   56.300865] x25: 0000000000000000 x24: 0000000000000000
      [   56.306165] x23: 0000000000000000 x22: ffff000011117000
      [   56.311465] x21: ffff800f64dfc080 x20: 0000000000000020
      [   56.316766] x19: 0000000000000020 x18: 0000000000000001
      [   56.322066] x17: 0000000000000000 x16: ffff800f2e077080
      [   56.327367] x15: 0000000000000004 x14: 0000000000000000
      [   56.332667] x13: ffff000010964438 x12: 0000000000000002
      [   56.337967] x11: 0000000000000000 x10: 0000000000000c70
      [   56.343268] x9 : ffff0000219af120 x8 : ffff800f2e077d50
      [   56.348568] x7 : 0000000000000027 x6 : 000000062a9d6a84
      [   56.353869] x5 : 0000000000000000 x4 : ffff800f2e077480
      [   56.359169] x3 : 0000000000000008 x2 : ffff800f2e077080
      [   56.364469] x1 : 0000000000000000 x0 : 0000000000000020
      [   56.369770] Process ip (pid: 2034, stack limit = 0x00000000c862da3a)
      [   56.376110] Call trace:
      [   56.378546]  __ll_sc___cmpxchg_case_acq_64+0x4/0x20
      [   56.383414]  drain_workqueue+0x34/0x198
      [   56.387247]  nicvf_open+0x48/0x9e8 [nicvf]
      [   56.391334]  nicvf_open+0x898/0x9e8 [nicvf]
      [   56.395507]  nicvf_xdp+0x1bc/0x238 [nicvf]
      [   56.399595]  dev_xdp_install+0x68/0x90
      [   56.403333]  dev_change_xdp_fd+0xc8/0x240
      [   56.407333]  do_setlink+0x8e0/0xbe8
      [   56.410810]  __rtnl_newlink+0x5b8/0x6d8
      [   56.414634]  rtnl_newlink+0x54/0x80
      [   56.418112]  rtnetlink_rcv_msg+0x22c/0x2f8
      [   56.422199]  netlink_rcv_skb+0x60/0x120
      [   56.426023]  rtnetlink_rcv+0x28/0x38
      [   56.429587]  netlink_unicast+0x1c8/0x258
      [   56.433498]  netlink_sendmsg+0x1b4/0x350
      [   56.437410]  sock_sendmsg+0x4c/0x68
      [   56.440887]  ___sys_sendmsg+0x240/0x280
      [   56.444711]  __sys_sendmsg+0x68/0xb0
      [   56.448275]  __arm64_sys_sendmsg+0x2c/0x38
      [   56.452361]  el0_svc_handler+0x9c/0x128
      [   56.456186]  el0_svc+0x8/0xc
      [   56.459056] Code: 35ffff91 2a1003e0 d65f03c0 f9800011 (c85ffc10)
      [   56.465166] ---[ end trace 4a57fdc27b0a572c ]---
      [   56.469772] Kernel panic - not syncing: Fatal exception
      
      Fix it by checking nicvf_rx_mode_wq pointer in nicvf_open and nicvf_stop
      
      Fixes: 2ecbe4f4 ("net: thunderx: replace global nicvf_rx_mode_wq work queue for all VFs to private for each of them")
      Fixes: 2c632ad8 ("net: thunderx: move link state polling function to VF")
      Reported-by: NMatteo Croce <mcroce@redhat.com>
      Signed-off-by: NLorenzo Bianconi <lorenzo.bianconi@redhat.com>
      Tested-by: NMatteo Croce <mcroce@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2ec1ed2a
  19. 12 3月, 2019 1 次提交
  20. 23 2月, 2019 6 次提交
  21. 23 11月, 2018 1 次提交
  22. 14 7月, 2018 1 次提交
  23. 13 6月, 2018 1 次提交
    • V
      net: thunderx: prevent concurrent data re-writing by nicvf_set_rx_mode · 469998c8
      Vadim Lomovtsev 提交于
      For each network interface linux network stack issue ndo_set_rx_mode call
      in order to configure MAC address filters (e.g. for multicast filtering).
      Currently ThunderX NICVF driver has only one ordered workqueue to process
      such requests for all VFs.
      
      And because of that it is possible that subsequent call to
      ndo_set_rx_mode would corrupt data which is currently in use
      by nicvf_set_rx_mode_task. Which in turn could cause following issue:
      [...]
      [   48.978341] Unable to handle kernel paging request at virtual address 1fffff0000000000
      [   48.986275] Mem abort info:
      [   48.989058]   Exception class = DABT (current EL), IL = 32 bits
      [   48.994965]   SET = 0, FnV = 0
      [   48.998020]   EA = 0, S1PTW = 0
      [   49.001152] Data abort info:
      [   49.004022]   ISV = 0, ISS = 0x00000004
      [   49.007869]   CM = 0, WnR = 0
      [   49.010826] [1fffff0000000000] address between user and kernel address ranges
      [   49.017963] Internal error: Oops: 96000004 [#1] SMP
      [...]
      [   49.072138] task: ffff800fdd675400 task.stack: ffff000026440000
      [   49.078051] PC is at prefetch_freepointer.isra.37+0x28/0x3c
      [   49.083613] LR is at kmem_cache_alloc_trace+0xc8/0x1fc
      [...]
      [   49.272684] [<ffff0000082738f0>] prefetch_freepointer.isra.37+0x28/0x3c
      [   49.279286] [<ffff000008276bc8>] kmem_cache_alloc_trace+0xc8/0x1fc
      [   49.285455] [<ffff0000082c0c0c>] alloc_fdtable+0x78/0x134
      [   49.290841] [<ffff0000082c15c0>] dup_fd+0x254/0x2f4
      [   49.295709] [<ffff0000080d1954>] copy_process.isra.38.part.39+0x64c/0x1168
      [   49.302572] [<ffff0000080d264c>] _do_fork+0xfc/0x3b0
      [   49.307524] [<ffff0000080d29e8>] SyS_clone+0x44/0x50
      [...]
      
      This patch is to prevent such concurrent data write with spinlock.
      Reported-by: NDean Nelson <dnelson@redhat.com>
      Signed-off-by: NVadim Lomovtsev <Vadim.Lomovtsev@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      469998c8
  24. 19 4月, 2018 1 次提交
  25. 09 4月, 2018 1 次提交
  26. 01 4月, 2018 1 次提交
  27. 27 3月, 2018 1 次提交
  28. 15 2月, 2018 1 次提交
  29. 30 1月, 2018 1 次提交
  30. 17 1月, 2018 1 次提交
  31. 06 1月, 2018 1 次提交
    • J
      thunderx: setup xdp_rxq_info · 27e95e36
      Jesper Dangaard Brouer 提交于
      This driver uses a bool scheme for "enable"/"disable" when setting up
      different resources.  Thus, the hook points for xdp_rxq_info is done
      in the same function call nicvf_rcv_queue_config().  This is activated
      through enable/disable via nicvf_config_data_transfer(), which is tied
      into nicvf_stop()/nicvf_open().
      
      Extending driver packet handler call-path nicvf_rcv_pkt_handler() with
      a pointer to the given struct rcv_queue, in-order to access the
      xdp_rxq_info data area (in nicvf_xdp_rx()).
      
      V2: Driver have no proper error path for failed XDP RX-queue info reg,
      as nicvf_rcv_queue_config is a void function.
      
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: Sunil Goutham <sgoutham@cavium.com>
      Cc: Robert Richter <rric@kernel.org>
      Signed-off-by: NJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
      27e95e36
  32. 30 11月, 2017 2 次提交