History

Merge tag 'net-5.17-final' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

Pull networking fixes from Jakub Kicinski: "Including fixes from netfilter, ipsec, and wireless. A few last minute revert / disable and fix patches came down from our sub-trees. We're not waiting for any fixes at this point. Current release - regressions: - Revert "netfilter: nat: force port remap to prevent shadowing well-known ports", restore working conntrack on asymmetric paths - Revert "ath10k: drop beacon and probe response which leak from other channel", restore working AP and mesh mode on QCA9984 - eth: intel: fix hang during reboot/shutdown Current release - new code bugs: - netfilter: nf_tables: disable register tracking, it needs more work to cover all corner cases Previous releases - regressions: - ipv6: fix skb_over_panic in __ip6_append_data when (admin-only) extension headers get specified - esp6: fix ESP over TCP/UDP, interpret ipv6_skip_exthdr's return value more selectively - bnx2x: fix driver load failure when FW not present in initrd Previous releases - always broken: - vsock: stop destroying unrelated sockets in nested virtualization - packet: fix slab-out-of-bounds access in packet_recvmsg() Misc: - add Paolo Abeni to networking maintainers!" * tag 'net-5.17-final' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (26 commits) iavf: Fix hang during reboot/shutdown net: mscc: ocelot: fix backwards compatibility with single-chain tc-flower offload net: bcmgenet: skip invalid partial checksums bnx2x: fix built-in kernel driver load failure net: phy: mscc: Add MODULE_FIRMWARE macros net: dsa: Add missing of_node_put() in dsa_port_parse_of net: handle ARPHRD_PIMREG in dev_is_mac_header_xmit() Revert "ath10k: drop beacon and probe response which leak from other channel" hv_netvsc: Add check for kvmalloc_array iavf: Fix double free in iavf_reset_task ice: destroy flow director filter mutex after releasing VSIs ice: fix NULL pointer dereference in ice_update_vsi_tx_ring_stats() Add Paolo Abeni to networking maintainers atm: eni: Add check for dma_map_single net/packet: fix slab-out-of-bounds access in packet_recvmsg() net: mdio: mscc-miim: fix duplicate debugfs entry net: phy: marvell: Fix invalid comparison in the resume and suspend functions esp6: fix check on ipv6_skip_exthdr's return value net: dsa: microchip: add spi_device_id tables netfilter: nf_tables: disable register tracking ...

Linus Torvalds committed 4 years ago

Commit 551acdc2 parents c81801e b04683f33 files · +154 −133Browse files

Unified · Split

33 files
  1. MAINTAINERS +2 −0
  2. drivers/atm/eni.c +2 −0
  3. drivers/net/dsa/microchip/ksz8795_spi.c +11 −0
  4. drivers/net/dsa/microchip/ksz9477_spi.c +12 −0
  5. drivers/net/ethernet/atheros/alx/main.c +4 −1
  6. drivers/net/ethernet/broadcom/bnx2x/bnx2x.h +0 −2
  7. drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +17 −11
  8. drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +2 −13
  9. drivers/net/ethernet/broadcom/genet/bcmgenet.c +4 −2
  10. drivers/net/ethernet/intel/iavf/iavf_main.c +14 −1
  11. drivers/net/ethernet/intel/ice/ice_main.c +4 −3
  12. drivers/net/ethernet/mscc/ocelot_flower.c +15 −1
  13. drivers/net/hyperv/netvsc_drv.c +3 −0
  14. drivers/net/mdio/mdio-mscc-miim.c +8 −1
  15. drivers/net/phy/marvell.c +4 −4
  16. drivers/net/phy/mscc/mscc_main.c +3 −0
  17. drivers/net/wireless/ath/ath10k/wmi.c +1 −32
  18. drivers/vhost/vsock.c +2 −1
  19. include/linux/if_arp.h +1 −0
  20. include/net/af_vsock.h +2 −1
  21. include/net/netfilter/nf_conntrack.h +0 −1
  22. net/dsa/dsa2.c +1 −0
  23. net/ipv6/esp6.c +1 −2
  24. net/ipv6/ip6_output.c +2 −2
  25. net/key/af_key.c +1 −1
  26. net/netfilter/nf_conntrack_core.c +0 −3
  27. net/netfilter/nf_nat_core.c +3 −40
  28. net/netfilter/nf_tables_api.c +7 −2
  29. net/packet/af_packet.c +10 −1
  30. net/vmw_vsock/af_vsock.c +7 −2
  31. net/vmw_vsock/virtio_transport.c +5 −2
  32. net/vmw_vsock/vmci_transport.c +4 −1
  33. tools/testing/selftests/netfilter/nft_nat.sh +2 −3
MAINTAINERS+2−0
@@ -13376,6 +13376,7 @@ F: net/core/drop_monitor.c · 13375 unmodified lines
13376NETWORKING DRIVERS13376NETWORKING DRIVERS
13377M: "David S. Miller" <davem@davemloft.net>13377M: "David S. Miller" <davem@davemloft.net>
13378M: Jakub Kicinski <kuba@kernel.org>13378M: Jakub Kicinski <kuba@kernel.org>
13379M: Paolo Abeni <pabeni@redhat.com>
13379L: netdev@vger.kernel.org13380L: netdev@vger.kernel.org
13380S: Maintained13381S: Maintained
13381Q: https://patchwork.kernel.org/project/netdevbpf/list/13382Q: https://patchwork.kernel.org/project/netdevbpf/list/
@@ -13422,6 +13423,7 @@ F: tools/testing/selftests/drivers/net/dsa/ · 40 unmodified lines
13422NETWORKING [GENERAL]13423NETWORKING [GENERAL]
13423M: "David S. Miller" <davem@davemloft.net>13424M: "David S. Miller" <davem@davemloft.net>
13424M: Jakub Kicinski <kuba@kernel.org>13425M: Jakub Kicinski <kuba@kernel.org>
13426M: Paolo Abeni <pabeni@redhat.com>
13425L: netdev@vger.kernel.org13427L: netdev@vger.kernel.org
13426S: Maintained13428S: Maintained
13427Q: https://patchwork.kernel.org/project/netdevbpf/list/13429Q: https://patchwork.kernel.org/project/netdevbpf/list/
drivers/atm/eni.c+2−0
@@ -1112,6 +1112,8 @@ DPRINTK("iovcnt = %d\n",skb_shinfo(skb)->nr_frags); · 1111 unmodified lines
1112 skb_data3 = skb->data[3];1112 skb_data3 = skb->data[3];
1113 paddr = dma_map_single(&eni_dev->pci_dev->dev,skb->data,skb->len,1113 paddr = dma_map_single(&eni_dev->pci_dev->dev,skb->data,skb->len,
1114 DMA_TO_DEVICE);1114 DMA_TO_DEVICE);
1115 if (dma_mapping_error(&eni_dev->pci_dev->dev, paddr))
1116 return enq_next;
1115 ENI_PRV_PADDR(skb) = paddr;1117 ENI_PRV_PADDR(skb) = paddr;
1116 /* prepare DMA queue entries */1118 /* prepare DMA queue entries */
1117 j = 0;1119 j = 0;
drivers/net/dsa/microchip/ksz8795_spi.c+11−0
@@ -124,12 +124,23 @@ static const struct of_device_id ksz8795_dt_ids[] = { · 123 unmodified lines
124};124};
125MODULE_DEVICE_TABLE(of, ksz8795_dt_ids);125MODULE_DEVICE_TABLE(of, ksz8795_dt_ids);
126 126
127static const struct spi_device_id ksz8795_spi_ids[] = {
128 { "ksz8765" },
129 { "ksz8794" },
130 { "ksz8795" },
131 { "ksz8863" },
132 { "ksz8873" },
133 { },
134};
135MODULE_DEVICE_TABLE(spi, ksz8795_spi_ids);
136
127static struct spi_driver ksz8795_spi_driver = {137static struct spi_driver ksz8795_spi_driver = {
128 .driver = {138 .driver = {
129 .name = "ksz8795-switch",139 .name = "ksz8795-switch",
130 .owner = THIS_MODULE,140 .owner = THIS_MODULE,
131 .of_match_table = of_match_ptr(ksz8795_dt_ids),141 .of_match_table = of_match_ptr(ksz8795_dt_ids),
132 },142 },
143 .id_table = ksz8795_spi_ids,
133 .probe = ksz8795_spi_probe,144 .probe = ksz8795_spi_probe,
134 .remove = ksz8795_spi_remove,145 .remove = ksz8795_spi_remove,
135 .shutdown = ksz8795_spi_shutdown,146 .shutdown = ksz8795_spi_shutdown,
drivers/net/dsa/microchip/ksz9477_spi.c+12−0
@@ -98,12 +98,24 @@ static const struct of_device_id ksz9477_dt_ids[] = { · 97 unmodified lines
98};98};
99MODULE_DEVICE_TABLE(of, ksz9477_dt_ids);99MODULE_DEVICE_TABLE(of, ksz9477_dt_ids);
100 100
101static const struct spi_device_id ksz9477_spi_ids[] = {
102 { "ksz9477" },
103 { "ksz9897" },
104 { "ksz9893" },
105 { "ksz9563" },
106 { "ksz8563" },
107 { "ksz9567" },
108 { },
109};
110MODULE_DEVICE_TABLE(spi, ksz9477_spi_ids);
111
101static struct spi_driver ksz9477_spi_driver = {112static struct spi_driver ksz9477_spi_driver = {
102 .driver = {113 .driver = {
103 .name = "ksz9477-switch",114 .name = "ksz9477-switch",
104 .owner = THIS_MODULE,115 .owner = THIS_MODULE,
105 .of_match_table = of_match_ptr(ksz9477_dt_ids),116 .of_match_table = of_match_ptr(ksz9477_dt_ids),
106 },117 },
118 .id_table = ksz9477_spi_ids,
107 .probe = ksz9477_spi_probe,119 .probe = ksz9477_spi_probe,
108 .remove = ksz9477_spi_remove,120 .remove = ksz9477_spi_remove,
109 .shutdown = ksz9477_spi_shutdown,121 .shutdown = ksz9477_spi_shutdown,
drivers/net/ethernet/atheros/alx/main.c+4−1
@@ -1181,8 +1181,11 @@ static int alx_change_mtu(struct net_device *netdev, int mtu) · 1180 unmodified lines
1181 alx->hw.mtu = mtu;1181 alx->hw.mtu = mtu;
1182 alx->rxbuf_size = max(max_frame, ALX_DEF_RXBUF_SIZE);1182 alx->rxbuf_size = max(max_frame, ALX_DEF_RXBUF_SIZE);
1183 netdev_update_features(netdev);1183 netdev_update_features(netdev);
1184 if (netif_running(netdev))1184 if (netif_running(netdev)) {
1185 mutex_lock(&alx->mtx);
1185 alx_reinit(alx);1186 alx_reinit(alx);
1187 mutex_unlock(&alx->mtx);
1188 }
1186 return 0;1189 return 0;
1187}1190}
1188 1191
drivers/net/ethernet/broadcom/bnx2x/bnx2x.h+0−2
@@ -2533,6 +2533,4 @@ void bnx2x_register_phc(struct bnx2x *bp); · 2532 unmodified lines
2533 * Meant for implicit re-load flows.2533 * Meant for implicit re-load flows.
2534 */2534 */
2535int bnx2x_vlan_reconfigure_vid(struct bnx2x *bp);2535int bnx2x_vlan_reconfigure_vid(struct bnx2x *bp);
2536int bnx2x_init_firmware(struct bnx2x *bp);
2537void bnx2x_release_firmware(struct bnx2x *bp);
2538#endif /* bnx2x.h */2536#endif /* bnx2x.h */
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c+17−11
@@ -2364,24 +2364,30 @@ int bnx2x_compare_fw_ver(struct bnx2x *bp, u32 load_code, bool print_err) · 2363 unmodified lines
2364 /* is another pf loaded on this engine? */2364 /* is another pf loaded on this engine? */
2365 if (load_code != FW_MSG_CODE_DRV_LOAD_COMMON_CHIP &&2365 if (load_code != FW_MSG_CODE_DRV_LOAD_COMMON_CHIP &&
2366 load_code != FW_MSG_CODE_DRV_LOAD_COMMON) {2366 load_code != FW_MSG_CODE_DRV_LOAD_COMMON) {
2367 /* build my FW version dword */2367 u8 loaded_fw_major, loaded_fw_minor, loaded_fw_rev, loaded_fw_eng;
2368 u32 my_fw = (bp->fw_major) + (bp->fw_minor << 8) +2368 u32 loaded_fw;
2369 (bp->fw_rev << 16) + (bp->fw_eng << 24);
2370 2369
2371 /* read loaded FW from chip */2370 /* read loaded FW from chip */
2372 u32 loaded_fw = REG_RD(bp, XSEM_REG_PRAM);2371 loaded_fw = REG_RD(bp, XSEM_REG_PRAM);
2373 2372
2374 DP(BNX2X_MSG_SP, "loaded fw %x, my fw %x\n",2373 loaded_fw_major = loaded_fw & 0xff;
2375 loaded_fw, my_fw);2374 loaded_fw_minor = (loaded_fw >> 8) & 0xff;
2375 loaded_fw_rev = (loaded_fw >> 16) & 0xff;
2376 loaded_fw_eng = (loaded_fw >> 24) & 0xff;
2377
2378 DP(BNX2X_MSG_SP, "loaded fw 0x%x major 0x%x minor 0x%x rev 0x%x eng 0x%x\n",
2379 loaded_fw, loaded_fw_major, loaded_fw_minor, loaded_fw_rev, loaded_fw_eng);
2376 2380
2377 /* abort nic load if version mismatch */2381 /* abort nic load if version mismatch */
2378 if (my_fw != loaded_fw) {2382 if (loaded_fw_major != BCM_5710_FW_MAJOR_VERSION ||
2383 loaded_fw_minor != BCM_5710_FW_MINOR_VERSION ||
2384 loaded_fw_eng != BCM_5710_FW_ENGINEERING_VERSION ||
2385 loaded_fw_rev < BCM_5710_FW_REVISION_VERSION_V15) {
2379 if (print_err)2386 if (print_err)
2380 BNX2X_ERR("bnx2x with FW %x was already loaded which mismatches my %x FW. Aborting\n",2387 BNX2X_ERR("loaded FW incompatible. Aborting\n");
2381 loaded_fw, my_fw);
2382 else2388 else
2383 BNX2X_DEV_INFO("bnx2x with FW %x was already loaded which mismatches my %x FW, possibly due to MF UNDI\n",2389 BNX2X_DEV_INFO("loaded FW incompatible, possibly due to MF UNDI\n");
2384 loaded_fw, my_fw);2390
2385 return -EBUSY;2391 return -EBUSY;
2386 }2392 }
2387 }2393 }
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c+2−13
@@ -12319,15 +12319,6 @@ static int bnx2x_init_bp(struct bnx2x *bp) · 12318 unmodified lines
12319 12319
12320 bnx2x_read_fwinfo(bp);12320 bnx2x_read_fwinfo(bp);
12321 12321
12322 if (IS_PF(bp)) {
12323 rc = bnx2x_init_firmware(bp);
12324
12325 if (rc) {
12326 bnx2x_free_mem_bp(bp);
12327 return rc;
12328 }
12329 }
12330
12331 func = BP_FUNC(bp);12322 func = BP_FUNC(bp);
12332 12323
12333 /* need to reset chip if undi was active */12324 /* need to reset chip if undi was active */
@@ -12340,7 +12331,6 @@ static int bnx2x_init_bp(struct bnx2x *bp) · 6 unmodified lines
12340 12331
12341 rc = bnx2x_prev_unload(bp);12332 rc = bnx2x_prev_unload(bp);
12342 if (rc) {12333 if (rc) {
12343 bnx2x_release_firmware(bp);
12344 bnx2x_free_mem_bp(bp);12334 bnx2x_free_mem_bp(bp);
12345 return rc;12335 return rc;
12346 }12336 }
@@ -13409,7 +13399,7 @@ do { \ · 1062 unmodified lines
13409 (u8 *)bp->arr, len); \13399 (u8 *)bp->arr, len); \
13410} while (0)13400} while (0)
13411 13401
13412int bnx2x_init_firmware(struct bnx2x *bp)13402static int bnx2x_init_firmware(struct bnx2x *bp)
13413{13403{
13414 const char *fw_file_name, *fw_file_name_v15;13404 const char *fw_file_name, *fw_file_name_v15;
13415 struct bnx2x_fw_file_hdr *fw_hdr;13405 struct bnx2x_fw_file_hdr *fw_hdr;
@@ -13509,7 +13499,7 @@ request_firmware_exit: · 93 unmodified lines
13509 return rc;13499 return rc;
13510}13500}
13511 13501
13512void bnx2x_release_firmware(struct bnx2x *bp)13502static void bnx2x_release_firmware(struct bnx2x *bp)
13513{13503{
13514 kfree(bp->init_ops_offsets);13504 kfree(bp->init_ops_offsets);
13515 kfree(bp->init_ops);13505 kfree(bp->init_ops);
@@ -14026,7 +14016,6 @@ static int bnx2x_init_one(struct pci_dev *pdev, · 510 unmodified lines
14026 return 0;14016 return 0;
14027 14017
14028init_one_freemem:14018init_one_freemem:
14029 bnx2x_release_firmware(bp);
14030 bnx2x_free_mem_bp(bp);14019 bnx2x_free_mem_bp(bp);
14031 14020
14032init_one_exit:14021init_one_exit:
drivers/net/ethernet/broadcom/genet/bcmgenet.c+4−2
@@ -2287,8 +2287,10 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_rx_ring *ring, · 2286 unmodified lines
2287 dma_length_status = status->length_status;2287 dma_length_status = status->length_status;
2288 if (dev->features & NETIF_F_RXCSUM) {2288 if (dev->features & NETIF_F_RXCSUM) {
2289 rx_csum = (__force __be16)(status->rx_csum & 0xffff);2289 rx_csum = (__force __be16)(status->rx_csum & 0xffff);
2290 skb->csum = (__force __wsum)ntohs(rx_csum);2290 if (rx_csum) {
2291 skb->ip_summed = CHECKSUM_COMPLETE;2291 skb->csum = (__force __wsum)ntohs(rx_csum);
2292 skb->ip_summed = CHECKSUM_COMPLETE;
2293 }
2292 }2294 }
2293 2295
2294 /* DMA flags and length are still valid no matter how2296 /* DMA flags and length are still valid no matter how
drivers/net/ethernet/intel/iavf/iavf_main.c+14−1
@@ -2541,6 +2541,13 @@ restart_watchdog: · 2540 unmodified lines
2541 queue_delayed_work(iavf_wq, &adapter->watchdog_task, HZ * 2);2541 queue_delayed_work(iavf_wq, &adapter->watchdog_task, HZ * 2);
2542}2542}
2543 2543
2544/**
2545 * iavf_disable_vf - disable VF
2546 * @adapter: board private structure
2547 *
2548 * Set communication failed flag and free all resources.
2549 * NOTE: This function is expected to be called with crit_lock being held.
2550 **/
2544static void iavf_disable_vf(struct iavf_adapter *adapter)2551static void iavf_disable_vf(struct iavf_adapter *adapter)
2545{2552{
2546 struct iavf_mac_filter *f, *ftmp;2553 struct iavf_mac_filter *f, *ftmp;
@@ -2595,7 +2602,6 @@ static void iavf_disable_vf(struct iavf_adapter *adapter) · 48 unmodified lines
2595 memset(adapter->vf_res, 0, IAVF_VIRTCHNL_VF_RESOURCE_SIZE);2602 memset(adapter->vf_res, 0, IAVF_VIRTCHNL_VF_RESOURCE_SIZE);
2596 iavf_shutdown_adminq(&adapter->hw);2603 iavf_shutdown_adminq(&adapter->hw);
2597 adapter->netdev->flags &= ~IFF_UP;2604 adapter->netdev->flags &= ~IFF_UP;
2598 mutex_unlock(&adapter->crit_lock);
2599 adapter->flags &= ~IAVF_FLAG_RESET_PENDING;2605 adapter->flags &= ~IAVF_FLAG_RESET_PENDING;
2600 iavf_change_state(adapter, __IAVF_DOWN);2606 iavf_change_state(adapter, __IAVF_DOWN);
2601 wake_up(&adapter->down_waitqueue);2607 wake_up(&adapter->down_waitqueue);
@@ -4614,6 +4620,13 @@ static void iavf_remove(struct pci_dev *pdev) · 2012 unmodified lines
4614 struct iavf_hw *hw = &adapter->hw;4620 struct iavf_hw *hw = &adapter->hw;
4615 int err;4621 int err;
4616 4622
4623 /* When reboot/shutdown is in progress no need to do anything
4624 * as the adapter is already REMOVE state that was set during
4625 * iavf_shutdown() callback.
4626 */
4627 if (adapter->state == __IAVF_REMOVE)
4628 return;
4629
4617 set_bit(__IAVF_IN_REMOVE_TASK, &adapter->crit_section);4630 set_bit(__IAVF_IN_REMOVE_TASK, &adapter->crit_section);
4618 /* Wait until port initialization is complete.4631 /* Wait until port initialization is complete.
4619 * There are flows where register/unregister netdev may race.4632 * There are flows where register/unregister netdev may race.
drivers/net/ethernet/intel/ice/ice_main.c+4−3
@@ -4880,7 +4880,6 @@ static void ice_remove(struct pci_dev *pdev) · 4879 unmodified lines
4880 ice_devlink_unregister_params(pf);4880 ice_devlink_unregister_params(pf);
4881 set_bit(ICE_DOWN, pf->state);4881 set_bit(ICE_DOWN, pf->state);
4882 4882
4883 mutex_destroy(&(&pf->hw)->fdir_fltr_lock);
4884 ice_deinit_lag(pf);4883 ice_deinit_lag(pf);
4885 if (test_bit(ICE_FLAG_PTP_SUPPORTED, pf->flags))4884 if (test_bit(ICE_FLAG_PTP_SUPPORTED, pf->flags))
4886 ice_ptp_release(pf);4885 ice_ptp_release(pf);
@@ -4888,6 +4887,7 @@ static void ice_remove(struct pci_dev *pdev) · 1 unmodified line
4888 ice_remove_arfs(pf);4887 ice_remove_arfs(pf);
4889 ice_setup_mc_magic_wake(pf);4888 ice_setup_mc_magic_wake(pf);
4890 ice_vsi_release_all(pf);4889 ice_vsi_release_all(pf);
4890 mutex_destroy(&(&pf->hw)->fdir_fltr_lock);
4891 ice_set_wake(pf);4891 ice_set_wake(pf);
4892 ice_free_irq_msix_misc(pf);4892 ice_free_irq_msix_misc(pf);
4893 ice_for_each_vsi(pf, i) {4893 ice_for_each_vsi(pf, i) {
@@ -5962,8 +5962,9 @@ ice_update_vsi_tx_ring_stats(struct ice_vsi *vsi, · 1068 unmodified lines
5962 u64 pkts = 0, bytes = 0;5962 u64 pkts = 0, bytes = 0;
5963 5963
5964 ring = READ_ONCE(rings[i]);5964 ring = READ_ONCE(rings[i]);
5965 if (ring)5965 if (!ring)
5966 ice_fetch_u64_stats_per_ring(&ring->syncp, ring->stats, &pkts, &bytes);5966 continue;
5967 ice_fetch_u64_stats_per_ring(&ring->syncp, ring->stats, &pkts, &bytes);
5967 vsi_stats->tx_packets += pkts;5968 vsi_stats->tx_packets += pkts;
5968 vsi_stats->tx_bytes += bytes;5969 vsi_stats->tx_bytes += bytes;
5969 vsi->tx_restart += ring->tx_stats.restart_q;5970 vsi->tx_restart += ring->tx_stats.restart_q;
drivers/net/ethernet/mscc/ocelot_flower.c+15−1
@@ -60,6 +60,12 @@ static int ocelot_chain_to_block(int chain, bool ingress) · 59 unmodified lines
60 */60 */
61static int ocelot_chain_to_lookup(int chain)61static int ocelot_chain_to_lookup(int chain)
62{62{
63 /* Backwards compatibility with older, single-chain tc-flower
64 * offload support in Ocelot
65 */
66 if (chain == 0)
67 return 0;
68
63 return (chain / VCAP_LOOKUP) % 10;69 return (chain / VCAP_LOOKUP) % 10;
64}70}
65 71
@@ -68,7 +74,15 @@ static int ocelot_chain_to_lookup(int chain) · 2 unmodified lines
68 */74 */
69static int ocelot_chain_to_pag(int chain)75static int ocelot_chain_to_pag(int chain)
70{76{
71 int lookup = ocelot_chain_to_lookup(chain);77 int lookup;
78
79 /* Backwards compatibility with older, single-chain tc-flower
80 * offload support in Ocelot
81 */
82 if (chain == 0)
83 return 0;
84
85 lookup = ocelot_chain_to_lookup(chain);
72 86
73 /* calculate PAG value as chain index relative to the first PAG */87 /* calculate PAG value as chain index relative to the first PAG */
74 return chain - VCAP_IS2_CHAIN(lookup, 0);88 return chain - VCAP_IS2_CHAIN(lookup, 0);
drivers/net/hyperv/netvsc_drv.c+3−0
@@ -1587,6 +1587,9 @@ static void netvsc_get_ethtool_stats(struct net_device *dev, · 1586 unmodified lines
1587 pcpu_sum = kvmalloc_array(num_possible_cpus(),1587 pcpu_sum = kvmalloc_array(num_possible_cpus(),
1588 sizeof(struct netvsc_ethtool_pcpu_stats),1588 sizeof(struct netvsc_ethtool_pcpu_stats),
1589 GFP_KERNEL);1589 GFP_KERNEL);
1590 if (!pcpu_sum)
1591 return;
1592
1590 netvsc_get_pcpu_stats(dev, pcpu_sum);1593 netvsc_get_pcpu_stats(dev, pcpu_sum);
1591 for_each_present_cpu(cpu) {1594 for_each_present_cpu(cpu) {
1592 struct netvsc_ethtool_pcpu_stats *this_sum = &pcpu_sum[cpu];1595 struct netvsc_ethtool_pcpu_stats *this_sum = &pcpu_sum[cpu];
drivers/net/mdio/mdio-mscc-miim.c+8−1
@@ -187,6 +187,13 @@ static const struct regmap_config mscc_miim_regmap_config = { · 186 unmodified lines
187 .reg_stride = 4,187 .reg_stride = 4,
188};188};
189 189
190static const struct regmap_config mscc_miim_phy_regmap_config = {
191 .reg_bits = 32,
192 .val_bits = 32,
193 .reg_stride = 4,
194 .name = "phy",
195};
196
190int mscc_miim_setup(struct device *dev, struct mii_bus **pbus, const char *name,197int mscc_miim_setup(struct device *dev, struct mii_bus **pbus, const char *name,
191 struct regmap *mii_regmap, int status_offset)198 struct regmap *mii_regmap, int status_offset)
192{199{
@@ -250,7 +257,7 @@ static int mscc_miim_probe(struct platform_device *pdev) · 57 unmodified lines
250 }257 }
251 258
252 phy_regmap = devm_regmap_init_mmio(&pdev->dev, phy_regs,259 phy_regmap = devm_regmap_init_mmio(&pdev->dev, phy_regs,
253 &mscc_miim_regmap_config);260 &mscc_miim_phy_regmap_config);
254 if (IS_ERR(phy_regmap)) {261 if (IS_ERR(phy_regmap)) {
255 dev_err(&pdev->dev, "Unable to create phy register regmap\n");262 dev_err(&pdev->dev, "Unable to create phy register regmap\n");
256 return PTR_ERR(phy_regmap);263 return PTR_ERR(phy_regmap);
drivers/net/phy/marvell.c+4−4
@@ -1687,8 +1687,8 @@ static int marvell_suspend(struct phy_device *phydev) · 1686 unmodified lines
1687 int err;1687 int err;
1688 1688
1689 /* Suspend the fiber mode first */1689 /* Suspend the fiber mode first */
1690 if (!linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,1690 if (linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,
1691 phydev->supported)) {1691 phydev->supported)) {
1692 err = marvell_set_page(phydev, MII_MARVELL_FIBER_PAGE);1692 err = marvell_set_page(phydev, MII_MARVELL_FIBER_PAGE);
1693 if (err < 0)1693 if (err < 0)
1694 goto error;1694 goto error;
@@ -1722,8 +1722,8 @@ static int marvell_resume(struct phy_device *phydev) · 27 unmodified lines
1722 int err;1722 int err;
1723 1723
1724 /* Resume the fiber mode first */1724 /* Resume the fiber mode first */
1725 if (!linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,1725 if (linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT,
1726 phydev->supported)) {1726 phydev->supported)) {
1727 err = marvell_set_page(phydev, MII_MARVELL_FIBER_PAGE);1727 err = marvell_set_page(phydev, MII_MARVELL_FIBER_PAGE);
1728 if (err < 0)1728 if (err < 0)
1729 goto error;1729 goto error;
drivers/net/phy/mscc/mscc_main.c+3−0
@@ -2685,3 +2685,6 @@ MODULE_DEVICE_TABLE(mdio, vsc85xx_tbl); · 2684 unmodified lines
2685MODULE_DESCRIPTION("Microsemi VSC85xx PHY driver");2685MODULE_DESCRIPTION("Microsemi VSC85xx PHY driver");
2686MODULE_AUTHOR("Nagaraju Lakkaraju");2686MODULE_AUTHOR("Nagaraju Lakkaraju");
2687MODULE_LICENSE("Dual MIT/GPL");2687MODULE_LICENSE("Dual MIT/GPL");
2688
2689MODULE_FIRMWARE(MSCC_VSC8584_REVB_INT8051_FW);
2690MODULE_FIRMWARE(MSCC_VSC8574_REVB_INT8051_FW);
drivers/net/wireless/ath/ath10k/wmi.c+1−32
@@ -2611,36 +2611,9 @@ int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb) · 2610 unmodified lines
2611 ath10k_mac_handle_beacon(ar, skb);2611 ath10k_mac_handle_beacon(ar, skb);
2612 2612
2613 if (ieee80211_is_beacon(hdr->frame_control) ||2613 if (ieee80211_is_beacon(hdr->frame_control) ||
2614 ieee80211_is_probe_resp(hdr->frame_control)) {2614 ieee80211_is_probe_resp(hdr->frame_control))
2615 struct ieee80211_mgmt *mgmt = (void *)skb->data;
2616 enum cfg80211_bss_frame_type ftype;
2617 u8 *ies;
2618 int ies_ch;
2619
2620 status->boottime_ns = ktime_get_boottime_ns();2615 status->boottime_ns = ktime_get_boottime_ns();
2621 2616
2622 if (!ar->scan_channel)
2623 goto drop;
2624
2625 ies = mgmt->u.beacon.variable;
2626
2627 if (ieee80211_is_beacon(mgmt->frame_control))
2628 ftype = CFG80211_BSS_FTYPE_BEACON;
2629 else
2630 ftype = CFG80211_BSS_FTYPE_PRESP;
2631
2632 ies_ch = cfg80211_get_ies_channel_number(mgmt->u.beacon.variable,
2633 skb_tail_pointer(skb) - ies,
2634 sband->band, ftype);
2635
2636 if (ies_ch > 0 && ies_ch != channel) {
2637 ath10k_dbg(ar, ATH10K_DBG_MGMT,
2638 "channel mismatched ds channel %d scan channel %d\n",
2639 ies_ch, channel);
2640 goto drop;
2641 }
2642 }
2643
2644 ath10k_dbg(ar, ATH10K_DBG_MGMT,2617 ath10k_dbg(ar, ATH10K_DBG_MGMT,
2645 "event mgmt rx skb %pK len %d ftype %02x stype %02x\n",2618 "event mgmt rx skb %pK len %d ftype %02x stype %02x\n",
2646 skb, skb->len,2619 skb, skb->len,
@@ -2654,10 +2627,6 @@ int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb) · 7 unmodified lines
2654 ieee80211_rx_ni(ar->hw, skb);2627 ieee80211_rx_ni(ar->hw, skb);
2655 2628
2656 return 0;2629 return 0;
2657
2658drop:
2659 dev_kfree_skb(skb);
2660 return 0;
2661}2630}
2662 2631
2663static int freq_to_idx(struct ath10k *ar, int freq)2632static int freq_to_idx(struct ath10k *ar, int freq)
drivers/vhost/vsock.c+2−1
@@ -753,7 +753,8 @@ static int vhost_vsock_dev_release(struct inode *inode, struct file *file) · 752 unmodified lines
753 753
754 /* Iterating over all connections for all CIDs to find orphans is754 /* Iterating over all connections for all CIDs to find orphans is
755 * inefficient. Room for improvement here. */755 * inefficient. Room for improvement here. */
756 vsock_for_each_connected_socket(vhost_vsock_reset_orphans);756 vsock_for_each_connected_socket(&vhost_transport.transport,
757 vhost_vsock_reset_orphans);
757 758
758 /* Don't check the owner, because we are in the release path, so we759 /* Don't check the owner, because we are in the release path, so we
759 * need to stop the vsock device in any case.760 * need to stop the vsock device in any case.
include/linux/if_arp.h+1−0
@@ -52,6 +52,7 @@ static inline bool dev_is_mac_header_xmit(const struct net_device *dev) · 51 unmodified lines
52 case ARPHRD_VOID:52 case ARPHRD_VOID:
53 case ARPHRD_NONE:53 case ARPHRD_NONE:
54 case ARPHRD_RAWIP:54 case ARPHRD_RAWIP:
55 case ARPHRD_PIMREG:
55 return false;56 return false;
56 default:57 default:
57 return true;58 return true;
include/net/af_vsock.h+2−1
@@ -205,7 +205,8 @@ struct sock *vsock_find_bound_socket(struct sockaddr_vm *addr); · 204 unmodified lines
205struct sock *vsock_find_connected_socket(struct sockaddr_vm *src,205struct sock *vsock_find_connected_socket(struct sockaddr_vm *src,
206 struct sockaddr_vm *dst);206 struct sockaddr_vm *dst);
207void vsock_remove_sock(struct vsock_sock *vsk);207void vsock_remove_sock(struct vsock_sock *vsk);
208void vsock_for_each_connected_socket(void (*fn)(struct sock *sk));208void vsock_for_each_connected_socket(struct vsock_transport *transport,
209 void (*fn)(struct sock *sk));
209int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk);210int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk);
210bool vsock_find_cid(unsigned int cid);211bool vsock_find_cid(unsigned int cid);
211 212
include/net/netfilter/nf_conntrack.h+0−1
@@ -97,7 +97,6 @@ struct nf_conn { · 96 unmodified lines
97 unsigned long status;97 unsigned long status;
98 98
99 u16 cpu;99 u16 cpu;
100 u16 local_origin:1;
101 possible_net_t ct_net;100 possible_net_t ct_net;
102 101
103#if IS_ENABLED(CONFIG_NF_NAT)102#if IS_ENABLED(CONFIG_NF_NAT)
net/dsa/dsa2.c+1−0
@@ -1436,6 +1436,7 @@ static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn) · 1435 unmodified lines
1436 const char *user_protocol;1436 const char *user_protocol;
1437 1437
1438 master = of_find_net_device_by_node(ethernet);1438 master = of_find_net_device_by_node(ethernet);
1439 of_node_put(ethernet);
1439 if (!master)1440 if (!master)
1440 return -EPROBE_DEFER;1441 return -EPROBE_DEFER;
1441 1442
net/ipv6/esp6.c+1−2
@@ -812,8 +812,7 @@ int esp6_input_done2(struct sk_buff *skb, int err) · 811 unmodified lines
812 struct tcphdr *th;812 struct tcphdr *th;
813 813
814 offset = ipv6_skip_exthdr(skb, offset, &nexthdr, &frag_off);814 offset = ipv6_skip_exthdr(skb, offset, &nexthdr, &frag_off);
815 815 if (offset == -1) {
816 if (offset < 0) {
817 err = -EINVAL;816 err = -EINVAL;
818 goto out;817 goto out;
819 }818 }
net/ipv6/ip6_output.c+2−2
@@ -1476,8 +1476,8 @@ static int __ip6_append_data(struct sock *sk, · 1475 unmodified lines
1476 sizeof(struct frag_hdr) : 0) +1476 sizeof(struct frag_hdr) : 0) +
1477 rt->rt6i_nfheader_len;1477 rt->rt6i_nfheader_len;
1478 1478
1479 if (mtu < fragheaderlen ||1479 if (mtu <= fragheaderlen ||
1480 ((mtu - fragheaderlen) & ~7) + fragheaderlen < sizeof(struct frag_hdr))1480 ((mtu - fragheaderlen) & ~7) + fragheaderlen <= sizeof(struct frag_hdr))
1481 goto emsgsize;1481 goto emsgsize;
1482 1482
1483 maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen -1483 maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen -
net/key/af_key.c+1−1
@@ -1699,7 +1699,7 @@ static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sad · 1698 unmodified lines
1699 1699
1700 xfrm_probe_algs();1700 xfrm_probe_algs();
1701 1701
1702 supp_skb = compose_sadb_supported(hdr, GFP_KERNEL);1702 supp_skb = compose_sadb_supported(hdr, GFP_KERNEL | __GFP_ZERO);
1703 if (!supp_skb) {1703 if (!supp_skb) {
1704 if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC)1704 if (hdr->sadb_msg_satype != SADB_SATYPE_UNSPEC)
1705 pfk->registered &= ~(1<<hdr->sadb_msg_satype);1705 pfk->registered &= ~(1<<hdr->sadb_msg_satype);
net/netfilter/nf_conntrack_core.c+0−3
@@ -1748,9 +1748,6 @@ resolve_normal_ct(struct nf_conn *tmpl, · 1747 unmodified lines
1748 return 0;1748 return 0;
1749 if (IS_ERR(h))1749 if (IS_ERR(h))
1750 return PTR_ERR(h);1750 return PTR_ERR(h);
1751
1752 ct = nf_ct_tuplehash_to_ctrack(h);
1753 ct->local_origin = state->hook == NF_INET_LOCAL_OUT;
1754 }1751 }
1755 ct = nf_ct_tuplehash_to_ctrack(h);1752 ct = nf_ct_tuplehash_to_ctrack(h);
1756 1753
net/netfilter/nf_nat_core.c+3−40
@@ -494,38 +494,6 @@ another_round: · 493 unmodified lines
494 goto another_round;494 goto another_round;
495}495}
496 496
497static bool tuple_force_port_remap(const struct nf_conntrack_tuple *tuple)
498{
499 u16 sp, dp;
500
501 switch (tuple->dst.protonum) {
502 case IPPROTO_TCP:
503 sp = ntohs(tuple->src.u.tcp.port);
504 dp = ntohs(tuple->dst.u.tcp.port);
505 break;
506 case IPPROTO_UDP:
507 case IPPROTO_UDPLITE:
508 sp = ntohs(tuple->src.u.udp.port);
509 dp = ntohs(tuple->dst.u.udp.port);
510 break;
511 default:
512 return false;
513 }
514
515 /* IANA: System port range: 1-1023,
516 * user port range: 1024-49151,
517 * private port range: 49152-65535.
518 *
519 * Linux default ephemeral port range is 32768-60999.
520 *
521 * Enforce port remapping if sport is significantly lower
522 * than dport to prevent NAT port shadowing, i.e.
523 * accidental match of 'new' inbound connection vs.
524 * existing outbound one.
525 */
526 return sp < 16384 && dp >= 32768;
527}
528
529/* Manipulate the tuple into the range given. For NF_INET_POST_ROUTING,497/* Manipulate the tuple into the range given. For NF_INET_POST_ROUTING,
530 * we change the source to map into the range. For NF_INET_PRE_ROUTING498 * we change the source to map into the range. For NF_INET_PRE_ROUTING
531 * and NF_INET_LOCAL_OUT, we change the destination to map into the499 * and NF_INET_LOCAL_OUT, we change the destination to map into the
@@ -539,17 +507,11 @@ get_unique_tuple(struct nf_conntrack_tuple *tuple, · 7 unmodified lines
539 struct nf_conn *ct,507 struct nf_conn *ct,
540 enum nf_nat_manip_type maniptype)508 enum nf_nat_manip_type maniptype)
541{509{
542 bool random_port = range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL;
543 const struct nf_conntrack_zone *zone;510 const struct nf_conntrack_zone *zone;
544 struct net *net = nf_ct_net(ct);511 struct net *net = nf_ct_net(ct);
545 512
546 zone = nf_ct_zone(ct);513 zone = nf_ct_zone(ct);
547 514
548 if (maniptype == NF_NAT_MANIP_SRC &&
549 !random_port &&
550 !ct->local_origin)
551 random_port = tuple_force_port_remap(orig_tuple);
552
553 /* 1) If this srcip/proto/src-proto-part is currently mapped,515 /* 1) If this srcip/proto/src-proto-part is currently mapped,
554 * and that same mapping gives a unique tuple within the given516 * and that same mapping gives a unique tuple within the given
555 * range, use that.517 * range, use that.
@@ -558,7 +520,8 @@ get_unique_tuple(struct nf_conntrack_tuple *tuple, · 2 unmodified lines
558 * So far, we don't do local source mappings, so multiple520 * So far, we don't do local source mappings, so multiple
559 * manips not an issue.521 * manips not an issue.
560 */522 */
561 if (maniptype == NF_NAT_MANIP_SRC && !random_port) {523 if (maniptype == NF_NAT_MANIP_SRC &&
524 !(range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL)) {
562 /* try the original tuple first */525 /* try the original tuple first */
563 if (in_range(orig_tuple, range)) {526 if (in_range(orig_tuple, range)) {
564 if (!nf_nat_used_tuple(orig_tuple, ct)) {527 if (!nf_nat_used_tuple(orig_tuple, ct)) {
@@ -582,7 +545,7 @@ get_unique_tuple(struct nf_conntrack_tuple *tuple, · 17 unmodified lines
582 */545 */
583 546
584 /* Only bother mapping if it's not already in range and unique */547 /* Only bother mapping if it's not already in range and unique */
585 if (!random_port) {548 if (!(range->flags & NF_NAT_RANGE_PROTO_RANDOM_ALL)) {
586 if (range->flags & NF_NAT_RANGE_PROTO_SPECIFIED) {549 if (range->flags & NF_NAT_RANGE_PROTO_SPECIFIED) {
587 if (!(range->flags & NF_NAT_RANGE_PROTO_OFFSET) &&550 if (!(range->flags & NF_NAT_RANGE_PROTO_OFFSET) &&
588 l4proto_in_range(tuple, maniptype,551 l4proto_in_range(tuple, maniptype,
net/netfilter/nf_tables_api.c+7−2
@@ -8260,6 +8260,12 @@ void nf_tables_trans_destroy_flush_work(void) · 8259 unmodified lines
8260}8260}
8261EXPORT_SYMBOL_GPL(nf_tables_trans_destroy_flush_work);8261EXPORT_SYMBOL_GPL(nf_tables_trans_destroy_flush_work);
8262 8262
8263static bool nft_expr_reduce(struct nft_regs_track *track,
8264 const struct nft_expr *expr)
8265{
8266 return false;
8267}
8268
8263static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *chain)8269static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *chain)
8264{8270{
8265 const struct nft_expr *expr, *last;8271 const struct nft_expr *expr, *last;
@@ -8307,8 +8313,7 @@ static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *cha · 41 unmodified lines
8307 nft_rule_for_each_expr(expr, last, rule) {8313 nft_rule_for_each_expr(expr, last, rule) {
8308 track.cur = expr;8314 track.cur = expr;
8309 8315
8310 if (expr->ops->reduce &&8316 if (nft_expr_reduce(&track, expr)) {
8311 expr->ops->reduce(&track, expr)) {
8312 expr = track.cur;8317 expr = track.cur;
8313 continue;8318 continue;
8314 }8319 }
net/packet/af_packet.c+10−1
@@ -2317,8 +2317,11 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, · 2316 unmodified lines
2317 copy_skb = skb_get(skb);2317 copy_skb = skb_get(skb);
2318 skb_head = skb->data;2318 skb_head = skb->data;
2319 }2319 }
2320 if (copy_skb)2320 if (copy_skb) {
2321 memset(&PACKET_SKB_CB(copy_skb)->sa.ll, 0,
2322 sizeof(PACKET_SKB_CB(copy_skb)->sa.ll));
2321 skb_set_owner_r(copy_skb, sk);2323 skb_set_owner_r(copy_skb, sk);
2324 }
2322 }2325 }
2323 snaplen = po->rx_ring.frame_size - macoff;2326 snaplen = po->rx_ring.frame_size - macoff;
2324 if ((int)snaplen < 0) {2327 if ((int)snaplen < 0) {
@@ -3462,6 +3465,8 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, · 1137 unmodified lines
3462 sock_recv_ts_and_drops(msg, sk, skb);3465 sock_recv_ts_and_drops(msg, sk, skb);
3463 3466
3464 if (msg->msg_name) {3467 if (msg->msg_name) {
3468 const size_t max_len = min(sizeof(skb->cb),
3469 sizeof(struct sockaddr_storage));
3465 int copy_len;3470 int copy_len;
3466 3471
3467 /* If the address length field is there to be filled3472 /* If the address length field is there to be filled
@@ -3484,6 +3489,10 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, · 16 unmodified lines
3484 msg->msg_namelen = sizeof(struct sockaddr_ll);3489 msg->msg_namelen = sizeof(struct sockaddr_ll);
3485 }3490 }
3486 }3491 }
3492 if (WARN_ON_ONCE(copy_len > max_len)) {
3493 copy_len = max_len;
3494 msg->msg_namelen = copy_len;
3495 }
3487 memcpy(msg->msg_name, &PACKET_SKB_CB(skb)->sa, copy_len);3496 memcpy(msg->msg_name, &PACKET_SKB_CB(skb)->sa, copy_len);
3488 }3497 }
3489 3498
net/vmw_vsock/af_vsock.c+7−2
@@ -334,7 +334,8 @@ void vsock_remove_sock(struct vsock_sock *vsk) · 333 unmodified lines
334}334}
335EXPORT_SYMBOL_GPL(vsock_remove_sock);335EXPORT_SYMBOL_GPL(vsock_remove_sock);
336 336
337void vsock_for_each_connected_socket(void (*fn)(struct sock *sk))337void vsock_for_each_connected_socket(struct vsock_transport *transport,
338 void (*fn)(struct sock *sk))
338{339{
339 int i;340 int i;
340 341
@@ -343,8 +344,12 @@ void vsock_for_each_connected_socket(void (*fn)(struct sock *sk)) · 2 unmodified lines
343 for (i = 0; i < ARRAY_SIZE(vsock_connected_table); i++) {344 for (i = 0; i < ARRAY_SIZE(vsock_connected_table); i++) {
344 struct vsock_sock *vsk;345 struct vsock_sock *vsk;
345 list_for_each_entry(vsk, &vsock_connected_table[i],346 list_for_each_entry(vsk, &vsock_connected_table[i],
346 connected_table)347 connected_table) {
348 if (vsk->transport != transport)
349 continue;
350
347 fn(sk_vsock(vsk));351 fn(sk_vsock(vsk));
352 }
348 }353 }
349 354
350 spin_unlock_bh(&vsock_table_lock);355 spin_unlock_bh(&vsock_table_lock);
net/vmw_vsock/virtio_transport.c+5−2
@@ -24,6 +24,7 @@ · 23 unmodified lines
24static struct workqueue_struct *virtio_vsock_workqueue;24static struct workqueue_struct *virtio_vsock_workqueue;
25static struct virtio_vsock __rcu *the_virtio_vsock;25static struct virtio_vsock __rcu *the_virtio_vsock;
26static DEFINE_MUTEX(the_virtio_vsock_mutex); /* protects the_virtio_vsock */26static DEFINE_MUTEX(the_virtio_vsock_mutex); /* protects the_virtio_vsock */
27static struct virtio_transport virtio_transport; /* forward declaration */
27 28
28struct virtio_vsock {29struct virtio_vsock {
29 struct virtio_device *vdev;30 struct virtio_device *vdev;
@@ -384,7 +385,8 @@ static void virtio_vsock_event_handle(struct virtio_vsock *vsock, · 354 unmodified lines
384 switch (le32_to_cpu(event->id)) {385 switch (le32_to_cpu(event->id)) {
385 case VIRTIO_VSOCK_EVENT_TRANSPORT_RESET:386 case VIRTIO_VSOCK_EVENT_TRANSPORT_RESET:
386 virtio_vsock_update_guest_cid(vsock);387 virtio_vsock_update_guest_cid(vsock);
387 vsock_for_each_connected_socket(virtio_vsock_reset_sock);388 vsock_for_each_connected_socket(&virtio_transport.transport,
389 virtio_vsock_reset_sock);
388 break;390 break;
389 }391 }
390}392}
@@ -662,7 +664,8 @@ static void virtio_vsock_remove(struct virtio_device *vdev) · 271 unmodified lines
662 synchronize_rcu();664 synchronize_rcu();
663 665
664 /* Reset all connected sockets when the device disappear */666 /* Reset all connected sockets when the device disappear */
665 vsock_for_each_connected_socket(virtio_vsock_reset_sock);667 vsock_for_each_connected_socket(&virtio_transport.transport,
668 virtio_vsock_reset_sock);
666 669
667 /* Stop all work handlers to make sure no one is accessing the device,670 /* Stop all work handlers to make sure no one is accessing the device,
668 * so we can safely call virtio_reset_device().671 * so we can safely call virtio_reset_device().
net/vmw_vsock/vmci_transport.c+4−1
@@ -75,6 +75,8 @@ static u32 vmci_transport_qp_resumed_sub_id = VMCI_INVALID_ID; · 74 unmodified lines
75 75
76static int PROTOCOL_OVERRIDE = -1;76static int PROTOCOL_OVERRIDE = -1;
77 77
78static struct vsock_transport vmci_transport; /* forward declaration */
79
78/* Helper function to convert from a VMCI error code to a VSock error code. */80/* Helper function to convert from a VMCI error code to a VSock error code. */
79 81
80static s32 vmci_transport_error_to_vsock_error(s32 vmci_error)82static s32 vmci_transport_error_to_vsock_error(s32 vmci_error)
@@ -882,7 +884,8 @@ static void vmci_transport_qp_resumed_cb(u32 sub_id, · 801 unmodified lines
882 const struct vmci_event_data *e_data,884 const struct vmci_event_data *e_data,
883 void *client_data)885 void *client_data)
884{886{
885 vsock_for_each_connected_socket(vmci_transport_handle_detach);887 vsock_for_each_connected_socket(&vmci_transport,
888 vmci_transport_handle_detach);
886}889}
887 890
888static void vmci_transport_recv_pkt_work(struct work_struct *work)891static void vmci_transport_recv_pkt_work(struct work_struct *work)
tools/testing/selftests/netfilter/nft_nat.sh+2−3
@@ -880,9 +880,8 @@ EOF · 879 unmodified lines
880 return $ksft_skip880 return $ksft_skip
881 fi881 fi
882 882
883 # test default behaviour. Packet from ns1 to ns0 is not redirected883 # test default behaviour. Packet from ns1 to ns0 is redirected to ns2.
884 # due to automatic port translation.884 test_port_shadow "default" "CLIENT"
885 test_port_shadow "default" "ROUTER"
886 885
887 # test packet filter based mitigation: prevent forwarding of886 # test packet filter based mitigation: prevent forwarding of
888 # packets claiming to come from the service port.887 # packets claiming to come from the service port.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t