Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

 1) Make fragmentation IDs less predictable, from Eric Dumazet.

 2) TSO tunneling can crash in bnx2x driver, fix from Dmitry Kravkov.

 3) Don't allow NULL msg->msg_name just because msg->msg_namelen is
    non-zero, from Andrey Ryabinin.

 4) ndm->ndm_type set using wrong macros, from Jun Zhao.

 5) cdc-ether devices can come up with entries in their address filter,
    so explicitly clear the filter after the device initializes.  From
    Oliver Neukum.

 6) Forgotten refcount bump in xfrm_lookup(), from Steffen Klassert.

 7) Short packets not padded properly, exposing random data, in bcmgenet
    driver.  Fix from Florian Fainelli.

 8) xgbe_probe() doesn't return an error code, but rather zero, when
    netif_set_real_num_tx_queues() fails.  Fix from Wei Yongjun.

 9) USB speed not probed properly in r8152 driver, from Hayes Wang.

10) Transmit logic choosing the outgoing port in the sunvnet driver
    needs to consider a) is the port actually up and b) whether it is a
    switch port.  Fix from David L Stevens.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (27 commits)
  net: phy: re-apply PHY fixups during phy_register_device
  cdc-ether: clean packet filter upon probe
  cdc_subset: deal with a device that needs reset for timeout
  net: sendmsg: fix NULL pointer dereference
  isdn/bas_gigaset: fix a leak on failure path in gigaset_probe()
  ip: make IP identifiers less predictable
  neighbour : fix ndm_type type error issue
  sunvnet: only use connected ports when sending
  can: c_can_platform: Fix raminit, use devm_ioremap() instead of devm_ioremap_resource()
  bnx2x: fix crash during TSO tunneling
  r8152: fix the checking of the usb speed
  net: phy: Ensure the MDIO bus module is held
  net: phy: Set the driver when registering an MDIO bus device
  bnx2x: fix set_setting for some PHYs
  hyperv: Fix error return code in netvsc_init_buf()
  amd-xgbe: Fix error return code in xgbe_probe()
  ath9k: fix aggregation session lockup
  net: bcmgenet: correctly pad short packets
  net: sctp: inherit auth_capable on INIT collisions
  mac80211: fix crash on getting sta info with uninitialized rate control
  ...
parents c98158ed d92f5dec
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -2400,6 +2400,7 @@ static int gigaset_probe(struct usb_interface *interface,
error:
error:
	freeurbs(cs);
	freeurbs(cs);
	usb_set_intfdata(interface, NULL);
	usb_set_intfdata(interface, NULL);
	usb_put_dev(udev);
	gigaset_freecs(cs);
	gigaset_freecs(cs);
	return rc;
	return rc;
}
}
+2 −1
Original line number Original line Diff line number Diff line
@@ -287,7 +287,8 @@ static int c_can_plat_probe(struct platform_device *pdev)
			break;
			break;
		}
		}


		priv->raminit_ctrlreg = devm_ioremap_resource(&pdev->dev, res);
		priv->raminit_ctrlreg = devm_ioremap(&pdev->dev, res->start,
						     resource_size(res));
		if (IS_ERR(priv->raminit_ctrlreg) || priv->instance < 0)
		if (IS_ERR(priv->raminit_ctrlreg) || priv->instance < 0)
			dev_info(&pdev->dev, "control memory is not used for raminit\n");
			dev_info(&pdev->dev, "control memory is not used for raminit\n");
		else
		else
+2 −1
Original line number Original line Diff line number Diff line
@@ -339,7 +339,8 @@ static int xgbe_probe(struct platform_device *pdev)
	/* Calculate the number of Tx and Rx rings to be created */
	/* Calculate the number of Tx and Rx rings to be created */
	pdata->tx_ring_count = min_t(unsigned int, num_online_cpus(),
	pdata->tx_ring_count = min_t(unsigned int, num_online_cpus(),
				     pdata->hw_feat.tx_ch_cnt);
				     pdata->hw_feat.tx_ch_cnt);
	if (netif_set_real_num_tx_queues(netdev, pdata->tx_ring_count)) {
	ret = netif_set_real_num_tx_queues(netdev, pdata->tx_ring_count);
	if (ret) {
		dev_err(dev, "error setting real tx queue count\n");
		dev_err(dev, "error setting real tx queue count\n");
		goto err_io;
		goto err_io;
	}
	}
+1 −0
Original line number Original line Diff line number Diff line
@@ -346,6 +346,7 @@ struct sw_tx_bd {
	u8		flags;
	u8		flags;
/* Set on the first BD descriptor when there is a split BD */
/* Set on the first BD descriptor when there is a split BD */
#define BNX2X_TSO_SPLIT_BD		(1<<0)
#define BNX2X_TSO_SPLIT_BD		(1<<0)
#define BNX2X_HAS_SECOND_PBD		(1<<1)
};
};


struct sw_rx_page {
struct sw_rx_page {
+9 −0
Original line number Original line Diff line number Diff line
@@ -227,6 +227,12 @@ static u16 bnx2x_free_tx_pkt(struct bnx2x *bp, struct bnx2x_fp_txdata *txdata,
	--nbd;
	--nbd;
	bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
	bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));


	if (tx_buf->flags & BNX2X_HAS_SECOND_PBD) {
		/* Skip second parse bd... */
		--nbd;
		bd_idx = TX_BD(NEXT_TX_IDX(bd_idx));
	}

	/* TSO headers+data bds share a common mapping. See bnx2x_tx_split() */
	/* TSO headers+data bds share a common mapping. See bnx2x_tx_split() */
	if (tx_buf->flags & BNX2X_TSO_SPLIT_BD) {
	if (tx_buf->flags & BNX2X_TSO_SPLIT_BD) {
		tx_data_bd = &txdata->tx_desc_ring[bd_idx].reg_bd;
		tx_data_bd = &txdata->tx_desc_ring[bd_idx].reg_bd;
@@ -3889,6 +3895,9 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
			/* set encapsulation flag in start BD */
			/* set encapsulation flag in start BD */
			SET_FLAG(tx_start_bd->general_data,
			SET_FLAG(tx_start_bd->general_data,
				 ETH_TX_START_BD_TUNNEL_EXIST, 1);
				 ETH_TX_START_BD_TUNNEL_EXIST, 1);

			tx_buf->flags |= BNX2X_HAS_SECOND_PBD;

			nbd++;
			nbd++;
		} else if (xmit_type & XMIT_CSUM) {
		} else if (xmit_type & XMIT_CSUM) {
			/* Set PBD in checksum offload case w/o encapsulation */
			/* Set PBD in checksum offload case w/o encapsulation */
Loading