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

Commit 87935eee authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull more networking fixes from David Miller:
 "Some more bug fixes have trickled in, we have:

  1) Local MAC entries properly in mscc driver, from Allan W. Nielsen.

  2) Eric Dumazet found some more of the typical "pskb_may_pull() -->
     oops forgot to reload the header pointer" bugs in ipv6 tunnel
     handling.

  3) Bad SKB socket pointer in ipv6 fragmentation handling, from Herbert
     Xu.

  4) Overflow fix in sk_msg_clone(), from Vakul Garg.

  5) Validate address lengths in AF_PACKET, from Willem de Bruijn"

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
  qmi_wwan: Fix qmap header retrieval in qmimux_rx_fixup
  qmi_wwan: Add support for Fibocom NL678 series
  tls: Do not call sk_memcopy_from_iter with zero length
  ipv6: tunnels: fix two use-after-free
  Prevent overflow of sk_msg in sk_msg_clone()
  packet: validate address length
  net: netxen: fix a missing check and an uninitialized use
  tcp: fix a race in inet_diag_dump_icsk()
  MAINTAINERS: update cxgb4 and cxgb3 maintainer
  ipv6: frags: Fix bogus skb->sk in reassembled packets
  mscc: Configured MAC entries should be locked.
parents 5092adb2 d667044f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -4057,7 +4057,7 @@ S: Maintained
F:	drivers/media/dvb-frontends/cxd2820r*

CXGB3 ETHERNET DRIVER (CXGB3)
M:	Santosh Raspatur <santosh@chelsio.com>
M:	Arjun Vynipadath <arjun@chelsio.com>
L:	netdev@vger.kernel.org
W:	http://www.chelsio.com
S:	Supported
@@ -4086,7 +4086,7 @@ S: Supported
F:	drivers/crypto/chelsio

CXGB4 ETHERNET DRIVER (CXGB4)
M:	Ganesh Goudar <ganeshgr@chelsio.com>
M:	Arjun Vynipadath <arjun@chelsio.com>
L:	netdev@vger.kernel.org
W:	http://www.chelsio.com
S:	Supported
+1 −1
Original line number Diff line number Diff line
@@ -747,7 +747,7 @@ static int ocelot_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
	}

	return ocelot_mact_learn(ocelot, port->chip_port, addr, vid,
				 ENTRYTYPE_NORMAL);
				 ENTRYTYPE_LOCKED);
}

static int ocelot_fdb_del(struct ndmsg *ndm, struct nlattr *tb[],
+2 −1
Original line number Diff line number Diff line
@@ -1125,7 +1125,8 @@ netxen_validate_firmware(struct netxen_adapter *adapter)
		return -EINVAL;
	}
	val = nx_get_bios_version(adapter);
	netxen_rom_fast_read(adapter, NX_BIOS_VERSION_OFFSET, (int *)&bios);
	if (netxen_rom_fast_read(adapter, NX_BIOS_VERSION_OFFSET, (int *)&bios))
		return -EIO;
	if ((__force u32)val != bios) {
		dev_err(&pdev->dev, "%s: firmware bios is incompatible\n",
				fw_name[fw_type]);
+9 −7
Original line number Diff line number Diff line
@@ -151,17 +151,18 @@ static bool qmimux_has_slaves(struct usbnet *dev)

static int qmimux_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
{
	unsigned int len, offset = sizeof(struct qmimux_hdr);
	unsigned int len, offset = 0;
	struct qmimux_hdr *hdr;
	struct net_device *net;
	struct sk_buff *skbn;
	u8 qmimux_hdr_sz = sizeof(*hdr);

	while (offset < skb->len) {
		hdr = (struct qmimux_hdr *)skb->data;
	while (offset + qmimux_hdr_sz < skb->len) {
		hdr = (struct qmimux_hdr *)(skb->data + offset);
		len = be16_to_cpu(hdr->pkt_len);

		/* drop the packet, bogus length */
		if (offset + len > skb->len)
		if (offset + len + qmimux_hdr_sz > skb->len)
			return 0;

		/* control packet, we do not know what to do */
@@ -176,7 +177,7 @@ static int qmimux_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
			return 0;
		skbn->dev = net;

		switch (skb->data[offset] & 0xf0) {
		switch (skb->data[offset + qmimux_hdr_sz] & 0xf0) {
		case 0x40:
			skbn->protocol = htons(ETH_P_IP);
			break;
@@ -188,12 +189,12 @@ static int qmimux_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
			goto skip;
		}

		skb_put_data(skbn, skb->data + offset, len);
		skb_put_data(skbn, skb->data + offset + qmimux_hdr_sz, len);
		if (netif_rx(skbn) != NET_RX_SUCCESS)
			return 0;

skip:
		offset += len + sizeof(struct qmimux_hdr);
		offset += len + qmimux_hdr_sz;
	}
	return 1;
}
@@ -1265,6 +1266,7 @@ static const struct usb_device_id products[] = {
	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)},	/* Quectel EC21 Mini PCIe */
	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)},	/* Quectel EG91 */
	{QMI_FIXED_INTF(0x2c7c, 0x0296, 4)},	/* Quectel BG96 */
	{QMI_QUIRK_SET_DTR(0x2cb7, 0x0104, 4)},	/* Fibocom NL678 series */

	/* 4. Gobi 1000 devices */
	{QMI_GOBI1K_DEVICE(0x05c6, 0x9212)},	/* Acer Gobi Modem Device */
+3 −0
Original line number Diff line number Diff line
@@ -94,6 +94,9 @@ int sk_msg_clone(struct sock *sk, struct sk_msg *dst, struct sk_msg *src,
	}

	while (len) {
		if (sk_msg_full(dst))
			return -ENOSPC;

		sge_len = sge->length - off;
		sge_off = sge->offset + off;
		if (sge_len > len)
Loading