Commit 33b40134 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from David Miller:

 1) Use after free in rxrpc_put_local(), from David Howells.

 2) Fix 64-bit division error in mlxsw, from Nathan Chancellor.

 3) Make sure we clear various bits of TCP state in response to
    tcp_disconnect(). From Eric Dumazet.

 4) Fix netlink attribute policy in cls_rsvp, from Eric Dumazet.

 5) txtimer must be deleted in stmmac suspend(), from Nicolin Chen.

 6) Fix TC queue mapping in bnxt_en driver, from Michael Chan.

 7) Various netdevsim fixes from Taehee Yoo (use of uninitialized data,
    snapshot panics, stack out of bounds, etc.)

 8) cls_tcindex changes hash table size after allocating the table, fix
    from Cong Wang.

 9) Fix regression in the enforcement of session ID uniqueness in l2tp.
    We only have to enforce uniqueness for IP based tunnels not UDP
    ones. From Ridge Kennedy.

* git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (46 commits)
  gtp: use __GFP_NOWARN to avoid memalloc warning
  l2tp: Allow duplicate session creation with UDP
  r8152: Add MAC passthrough support to new device
  net_sched: fix an OOB access in cls_tcindex
  qed: Remove set but not used variable 'p_link'
  tc-testing: add missing 'nsPlugin' to basic.json
  tc-testing: fix eBPF tests failure on linux fresh clones
  net: hsr: fix possible NULL deref in hsr_handle_frame()
  netdevsim: remove unused sdev code
  netdevsim: use __GFP_NOWARN to avoid memalloc warning
  netdevsim: use IS_ERR instead of IS_ERR_OR_NULL for debugfs
  netdevsim: fix stack-out-of-bounds in nsim_dev_debugfs_init()
  netdevsim: fix panic in nsim_dev_take_snapshot_write()
  netdevsim: disable devlink reload when resources are being used
  netdevsim: fix using uninitialized resources
  bnxt_en: Fix TC queue mapping.
  bnxt_en: Fix logic that disables Bus Master during firmware reset.
  bnxt_en: Fix RDMA driver failure with SRIOV after firmware reset.
  bnxt_en: Refactor logic to re-enable SRIOV after firmware reset detected.
  net: stmmac: Delete txtimer in suspend()
  ...
parents d60ddd24 bd5cd35b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ flowtable and add one rule to your forward chain.

        table inet x {
		flowtable f {
			hook ingress priority 0 devices = { eth0, eth1 };
			hook ingress priority 0; devices = { eth0, eth1 };
		}
                chain y {
                        type filter hook forward priority 0; policy accept;
+5 −4
Original line number Diff line number Diff line
@@ -7658,9 +7658,8 @@ S: Orphan
F:	drivers/net/usb/hso.c
HSR NETWORK PROTOCOL
M:	Arvid Brodin <arvid.brodin@alten.se>
L:	netdev@vger.kernel.org
S:	Maintained
S:	Orphan
F:	net/hsr/
HT16K33 LED CONTROLLER DRIVER
@@ -8909,8 +8908,10 @@ L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
L:	netdev@vger.kernel.org
W:	http://www.isdn4linux.de
S:	Maintained
F:	drivers/isdn/mISDN
F:	drivers/isdn/hardware
F:	drivers/isdn/mISDN/
F:	drivers/isdn/hardware/
F:	drivers/isdn/Kconfig
F:	drivers/isdn/Makefile
ISDN/CMTP OVER BLUETOOTH
M:	Karsten Keil <isdn@linux-pingi.de>
+24 −13
Original line number Diff line number Diff line
@@ -7893,7 +7893,7 @@ static void bnxt_setup_msix(struct bnxt *bp)
	int tcs, i;

	tcs = netdev_get_num_tc(dev);
	if (tcs > 1) {
	if (tcs) {
		int i, off, count;

		for (i = 0; i < tcs; i++) {
@@ -9241,6 +9241,17 @@ void bnxt_half_close_nic(struct bnxt *bp)
	bnxt_free_mem(bp, false);
}

static void bnxt_reenable_sriov(struct bnxt *bp)
{
	if (BNXT_PF(bp)) {
		struct bnxt_pf_info *pf = &bp->pf;
		int n = pf->active_vfs;

		if (n)
			bnxt_cfg_hw_sriov(bp, &n, true);
	}
}

static int bnxt_open(struct net_device *dev)
{
	struct bnxt *bp = netdev_priv(dev);
@@ -9259,15 +9270,10 @@ static int bnxt_open(struct net_device *dev)
		bnxt_hwrm_if_change(bp, false);
	} else {
		if (test_and_clear_bit(BNXT_STATE_FW_RESET_DET, &bp->state)) {
			if (BNXT_PF(bp)) {
				struct bnxt_pf_info *pf = &bp->pf;
				int n = pf->active_vfs;

				if (n)
					bnxt_cfg_hw_sriov(bp, &n, true);
			}
			if (!test_bit(BNXT_STATE_IN_FW_RESET, &bp->state))
			if (!test_bit(BNXT_STATE_IN_FW_RESET, &bp->state)) {
				bnxt_ulp_start(bp, 0);
				bnxt_reenable_sriov(bp);
			}
		}
		bnxt_hwmon_open(bp);
	}
@@ -9307,10 +9313,6 @@ static void __bnxt_close_nic(struct bnxt *bp, bool irq_re_init,
	bnxt_debug_dev_exit(bp);
	bnxt_disable_napi(bp);
	del_timer_sync(&bp->timer);
	if (test_bit(BNXT_STATE_IN_FW_RESET, &bp->state) &&
	    pci_is_enabled(bp->pdev))
		pci_disable_device(bp->pdev);

	bnxt_free_skbs(bp);

	/* Save ring stats before shutdown */
@@ -10096,9 +10098,16 @@ static void bnxt_reset(struct bnxt *bp, bool silent)
static void bnxt_fw_reset_close(struct bnxt *bp)
{
	bnxt_ulp_stop(bp);
	/* When firmware is fatal state, disable PCI device to prevent
	 * any potential bad DMAs before freeing kernel memory.
	 */
	if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state))
		pci_disable_device(bp->pdev);
	__bnxt_close_nic(bp, true, false);
	bnxt_clear_int_mode(bp);
	bnxt_hwrm_func_drv_unrgtr(bp);
	if (pci_is_enabled(bp->pdev))
		pci_disable_device(bp->pdev);
	bnxt_free_ctx_mem(bp);
	kfree(bp->ctx);
	bp->ctx = NULL;
@@ -10831,6 +10840,8 @@ static void bnxt_fw_reset_task(struct work_struct *work)
		smp_mb__before_atomic();
		clear_bit(BNXT_STATE_IN_FW_RESET, &bp->state);
		bnxt_ulp_start(bp, rc);
		if (!rc)
			bnxt_reenable_sriov(bp);
		bnxt_dl_health_recovery_done(bp);
		bnxt_dl_health_status_update(bp, true);
		rtnl_unlock();
+2 −2
Original line number Diff line number Diff line
@@ -171,9 +171,9 @@ static int otx2_hw_get_mac_addr(struct otx2_nic *pfvf,
	}

	msghdr = otx2_mbox_get_rsp(&pfvf->mbox.mbox, 0, &req->hdr);
	if (!msghdr) {
	if (IS_ERR(msghdr)) {
		otx2_mbox_unlock(&pfvf->mbox);
		return -ENOMEM;
		return PTR_ERR(msghdr);
	}
	rsp = (struct nix_get_mac_addr_rsp *)msghdr;
	ether_addr_copy(netdev->dev_addr, rsp->mac_addr);
+1 −1
Original line number Diff line number Diff line
@@ -614,7 +614,7 @@ mlxsw_sp_qdisc_tbf_rate_kbps(struct tc_tbf_qopt_offload_replace_params *p)
	/* TBF interface is in bytes/s, whereas Spectrum ASIC is configured in
	 * Kbits/s.
	 */
	return p->rate.rate_bytes_ps / 1000 * 8;
	return div_u64(p->rate.rate_bytes_ps, 1000) * 8;
}

static int
Loading