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

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

 1) Don't ignore user initiated wireless regulatory settings on cards
    with custom regulatory domains, from Arik Nemtsov.

 2) Fix length check of bluetooth information responses, from Jaganath
    Kanakkassery.

 3) Fix misuse of PTR_ERR in btusb, from Adam Lee.

 4) Handle rfkill properly while iwlwifi devices are offline, from
    Emmanuel Grumbach.

 5) Fix r815x devices DMA'ing to stack buffers, from Hayes Wang.

 6) Kernel info leak in ATM packet scheduler, from Dan Carpenter.

 7) 8139cp doesn't check for DMA mapping errors, from Neil Horman.

 8) Fix bridge multicast code to not snoop when no querier exists,
    otherwise mutlicast traffic is lost.  From Linus Lüssing.

 9) Avoid soft lockups in fib6_run_gc(), from Michal Kubecek.

10) Fix races in automatic address asignment on ipv6, which can result
    in incorrect lifetime assignments.  From Jiri Benc.

11) Cure build bustage when CONFIG_NET_LL_RX_POLL is not set and rename
    it CONFIG_NET_RX_BUSY_POLL to eliminate the last reference to the
    original naming of this feature.  From Cong Wang.

12) Fix crash in TIPC when server socket creation fails, from Ying Xue.

13) macvlan_changelink() silently succeeds when it shouldn't, from
    Michael S Tsirkin.

14) HTB packet scheduler can crash due to sign extension, fix from
    Stephen Hemminger.

15) With the cable unplugged, r8169 prints out a message every 10
    seconds, make it netif_dbg() instead of netif_warn().  From Peter
    Wu.

16) Fix memory leak in rtm_to_ifaddr(), from Daniel Borkmann.

17) sis900 gets spurious TX queue timeouts due to mismanagement of link
    carrier state, from Denis Kirjanov.

18) Validate somaxconn sysctl to make sure it fits inside of a u16.
    From Roman Gushchin.

19) Fix MAC address filtering on qlcnic, from Shahed Shaikh.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (68 commits)
  qlcnic: Fix for flash update failure on 83xx adapter
  qlcnic: Fix link speed and duplex display for 83xx adapter
  qlcnic: Fix link speed display for 82xx adapter
  qlcnic: Fix external loopback test.
  qlcnic: Removed adapter series name from warning messages.
  qlcnic: Free up memory in error path.
  qlcnic: Fix ingress MAC learning
  qlcnic: Fix MAC address filter issue on 82xx adapter
  net: ethernet: davinci_emac: drop IRQF_DISABLED
  netlabel: use domain based selectors when address based selectors are not available
  net: check net.core.somaxconn sysctl values
  sis900: Fix the tx queue timeout issue
  net: rtm_to_ifaddr: free ifa if ifa_cacheinfo processing fails
  r8169: remove "PHY reset until link up" log spam
  net: ethernet: cpsw: drop IRQF_DISABLED
  htb: fix sign extension bug
  macvlan: handle set_promiscuity failures
  macvlan: better mode validation
  tipc: fix oops when creating server socket fails
  net: rename CONFIG_NET_LL_RX_POLL to CONFIG_NET_RX_BUSY_POLL
  ...
parents 83aaf3b3 4bd8e738
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -52,7 +52,7 @@ Default: 64


busy_read
busy_read
----------------
----------------
Low latency busy poll timeout for socket reads. (needs CONFIG_NET_LL_RX_POLL)
Low latency busy poll timeout for socket reads. (needs CONFIG_NET_RX_BUSY_POLL)
Approximate time in us to busy loop waiting for packets on the device queue.
Approximate time in us to busy loop waiting for packets on the device queue.
This sets the default value of the SO_BUSY_POLL socket option.
This sets the default value of the SO_BUSY_POLL socket option.
Can be set or overridden per socket by setting socket option SO_BUSY_POLL,
Can be set or overridden per socket by setting socket option SO_BUSY_POLL,
@@ -63,7 +63,7 @@ Default: 0 (off)


busy_poll
busy_poll
----------------
----------------
Low latency busy poll timeout for poll and select. (needs CONFIG_NET_LL_RX_POLL)
Low latency busy poll timeout for poll and select. (needs CONFIG_NET_RX_BUSY_POLL)
Approximate time in us to busy loop waiting for events.
Approximate time in us to busy loop waiting for events.
Recommended value depends on the number of sockets you poll on.
Recommended value depends on the number of sockets you poll on.
For several sockets 50, for several hundreds 100.
For several sockets 50, for several hundreds 100.
+10 −2
Original line number Original line Diff line number Diff line
@@ -1406,7 +1406,7 @@ ATHEROS ATH6KL WIRELESS DRIVER
M:	Kalle Valo <kvalo@qca.qualcomm.com>
M:	Kalle Valo <kvalo@qca.qualcomm.com>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
W:	http://wireless.kernel.org/en/users/Drivers/ath6kl
W:	http://wireless.kernel.org/en/users/Drivers/ath6kl
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath6kl.git
T:	git git://github.com/kvalo/ath.git
S:	Supported
S:	Supported
F:	drivers/net/wireless/ath/ath6kl/
F:	drivers/net/wireless/ath/ath6kl/


@@ -6726,6 +6726,14 @@ T: git git://linuxtv.org/anttip/media_tree.git
S:	Maintained
S:	Maintained
F:	drivers/media/tuners/qt1010*
F:	drivers/media/tuners/qt1010*


QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
M:	Kalle Valo <kvalo@qca.qualcomm.com>
L:	ath10k@lists.infradead.org
W:	http://wireless.kernel.org/en/users/Drivers/ath10k
T:	git git://github.com/kvalo/ath.git
S:	Supported
F:	drivers/net/wireless/ath/ath10k/

QUALCOMM HEXAGON ARCHITECTURE
QUALCOMM HEXAGON ARCHITECTURE
M:	Richard Kuo <rkuo@codeaurora.org>
M:	Richard Kuo <rkuo@codeaurora.org>
L:	linux-hexagon@vger.kernel.org
L:	linux-hexagon@vger.kernel.org
@@ -8270,7 +8278,7 @@ S: Maintained
F:	sound/soc/codecs/twl4030*
F:	sound/soc/codecs/twl4030*


TI WILINK WIRELESS DRIVERS
TI WILINK WIRELESS DRIVERS
M:	Luciano Coelho <coelho@ti.com>
M:	Luciano Coelho <luca@coelho.fi>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
W:	http://wireless.kernel.org/en/users/Drivers/wl12xx
W:	http://wireless.kernel.org/en/users/Drivers/wl12xx
W:	http://wireless.kernel.org/en/users/Drivers/wl1251
W:	http://wireless.kernel.org/en/users/Drivers/wl1251
+37 −9
Original line number Original line Diff line number Diff line
@@ -91,6 +91,10 @@ static struct usb_device_id ath3k_table[] = {
	{ USB_DEVICE(0x0489, 0xe04e) },
	{ USB_DEVICE(0x0489, 0xe04e) },
	{ USB_DEVICE(0x0489, 0xe056) },
	{ USB_DEVICE(0x0489, 0xe056) },
	{ USB_DEVICE(0x0489, 0xe04d) },
	{ USB_DEVICE(0x0489, 0xe04d) },
	{ USB_DEVICE(0x04c5, 0x1330) },
	{ USB_DEVICE(0x13d3, 0x3402) },
	{ USB_DEVICE(0x0cf3, 0x3121) },
	{ USB_DEVICE(0x0cf3, 0xe003) },


	/* Atheros AR5BBU12 with sflash firmware */
	/* Atheros AR5BBU12 with sflash firmware */
	{ USB_DEVICE(0x0489, 0xE02C) },
	{ USB_DEVICE(0x0489, 0xE02C) },
@@ -128,6 +132,10 @@ static struct usb_device_id ath3k_blist_tbl[] = {
	{ USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0cf3, 0xe003), .driver_info = BTUSB_ATH3012 },


	/* Atheros AR5BBU22 with sflash firmware */
	/* Atheros AR5BBU22 with sflash firmware */
	{ USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 },
@@ -193,24 +201,44 @@ static int ath3k_load_firmware(struct usb_device *udev,


static int ath3k_get_state(struct usb_device *udev, unsigned char *state)
static int ath3k_get_state(struct usb_device *udev, unsigned char *state)
{
{
	int pipe = 0;
	int ret, pipe = 0;
	char *buf;

	buf = kmalloc(sizeof(*buf), GFP_KERNEL);
	if (!buf)
		return -ENOMEM;


	pipe = usb_rcvctrlpipe(udev, 0);
	pipe = usb_rcvctrlpipe(udev, 0);
	return usb_control_msg(udev, pipe, ATH3K_GETSTATE,
	ret = usb_control_msg(udev, pipe, ATH3K_GETSTATE,
			      USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
			      USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
			state, 0x01, USB_CTRL_SET_TIMEOUT);
			      buf, sizeof(*buf), USB_CTRL_SET_TIMEOUT);

	*state = *buf;
	kfree(buf);

	return ret;
}
}


static int ath3k_get_version(struct usb_device *udev,
static int ath3k_get_version(struct usb_device *udev,
			struct ath3k_version *version)
			struct ath3k_version *version)
{
{
	int pipe = 0;
	int ret, pipe = 0;
	struct ath3k_version *buf;
	const int size = sizeof(*buf);

	buf = kmalloc(size, GFP_KERNEL);
	if (!buf)
		return -ENOMEM;


	pipe = usb_rcvctrlpipe(udev, 0);
	pipe = usb_rcvctrlpipe(udev, 0);
	return usb_control_msg(udev, pipe, ATH3K_GETVERSION,
	ret = usb_control_msg(udev, pipe, ATH3K_GETVERSION,
			USB_TYPE_VENDOR | USB_DIR_IN, 0, 0, version,
			      USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
			sizeof(struct ath3k_version),
			      buf, size, USB_CTRL_SET_TIMEOUT);
			USB_CTRL_SET_TIMEOUT);

	memcpy(version, buf, size);
	kfree(buf);

	return ret;
}
}


static int ath3k_load_fwfile(struct usb_device *udev,
static int ath3k_load_fwfile(struct usb_device *udev,
+11 −7
Original line number Original line Diff line number Diff line
@@ -154,6 +154,10 @@ static struct usb_device_id blacklist_table[] = {
	{ USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 },
	{ USB_DEVICE(0x0cf3, 0xe003), .driver_info = BTUSB_ATH3012 },


	/* Atheros AR5BBU12 with sflash firmware */
	/* Atheros AR5BBU12 with sflash firmware */
	{ USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
	{ USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
@@ -1095,7 +1099,7 @@ static int btusb_setup_intel_patching(struct hci_dev *hdev,
	if (IS_ERR(skb)) {
	if (IS_ERR(skb)) {
		BT_ERR("%s sending Intel patch command (0x%4.4x) failed (%ld)",
		BT_ERR("%s sending Intel patch command (0x%4.4x) failed (%ld)",
		       hdev->name, cmd->opcode, PTR_ERR(skb));
		       hdev->name, cmd->opcode, PTR_ERR(skb));
		return -PTR_ERR(skb);
		return PTR_ERR(skb);
	}
	}


	/* It ensures that the returned event matches the event data read from
	/* It ensures that the returned event matches the event data read from
@@ -1147,7 +1151,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
	if (IS_ERR(skb)) {
	if (IS_ERR(skb)) {
		BT_ERR("%s sending initial HCI reset command failed (%ld)",
		BT_ERR("%s sending initial HCI reset command failed (%ld)",
		       hdev->name, PTR_ERR(skb));
		       hdev->name, PTR_ERR(skb));
		return -PTR_ERR(skb);
		return PTR_ERR(skb);
	}
	}
	kfree_skb(skb);
	kfree_skb(skb);


@@ -1161,7 +1165,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
	if (IS_ERR(skb)) {
	if (IS_ERR(skb)) {
		BT_ERR("%s reading Intel fw version command failed (%ld)",
		BT_ERR("%s reading Intel fw version command failed (%ld)",
		       hdev->name, PTR_ERR(skb));
		       hdev->name, PTR_ERR(skb));
		return -PTR_ERR(skb);
		return PTR_ERR(skb);
	}
	}


	if (skb->len != sizeof(*ver)) {
	if (skb->len != sizeof(*ver)) {
@@ -1219,7 +1223,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
		BT_ERR("%s entering Intel manufacturer mode failed (%ld)",
		BT_ERR("%s entering Intel manufacturer mode failed (%ld)",
		       hdev->name, PTR_ERR(skb));
		       hdev->name, PTR_ERR(skb));
		release_firmware(fw);
		release_firmware(fw);
		return -PTR_ERR(skb);
		return PTR_ERR(skb);
	}
	}


	if (skb->data[0]) {
	if (skb->data[0]) {
@@ -1276,7 +1280,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
	if (IS_ERR(skb)) {
	if (IS_ERR(skb)) {
		BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
		BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
		       hdev->name, PTR_ERR(skb));
		       hdev->name, PTR_ERR(skb));
		return -PTR_ERR(skb);
		return PTR_ERR(skb);
	}
	}
	kfree_skb(skb);
	kfree_skb(skb);


@@ -1292,7 +1296,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
	if (IS_ERR(skb)) {
	if (IS_ERR(skb)) {
		BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
		BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
		       hdev->name, PTR_ERR(skb));
		       hdev->name, PTR_ERR(skb));
		return -PTR_ERR(skb);
		return PTR_ERR(skb);
	}
	}
	kfree_skb(skb);
	kfree_skb(skb);


@@ -1310,7 +1314,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
	if (IS_ERR(skb)) {
	if (IS_ERR(skb)) {
		BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
		BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
		       hdev->name, PTR_ERR(skb));
		       hdev->name, PTR_ERR(skb));
		return -PTR_ERR(skb);
		return PTR_ERR(skb);
	}
	}
	kfree_skb(skb);
	kfree_skb(skb);


+4 −4
Original line number Original line Diff line number Diff line
@@ -486,7 +486,7 @@ struct bnx2x_fastpath {


	struct napi_struct	napi;
	struct napi_struct	napi;


#ifdef CONFIG_NET_LL_RX_POLL
#ifdef CONFIG_NET_RX_BUSY_POLL
	unsigned int state;
	unsigned int state;
#define BNX2X_FP_STATE_IDLE		      0
#define BNX2X_FP_STATE_IDLE		      0
#define BNX2X_FP_STATE_NAPI		(1 << 0)    /* NAPI owns this FP */
#define BNX2X_FP_STATE_NAPI		(1 << 0)    /* NAPI owns this FP */
@@ -498,7 +498,7 @@ struct bnx2x_fastpath {
#define BNX2X_FP_USER_PEND (BNX2X_FP_STATE_POLL | BNX2X_FP_STATE_POLL_YIELD)
#define BNX2X_FP_USER_PEND (BNX2X_FP_STATE_POLL | BNX2X_FP_STATE_POLL_YIELD)
	/* protect state */
	/* protect state */
	spinlock_t lock;
	spinlock_t lock;
#endif /* CONFIG_NET_LL_RX_POLL */
#endif /* CONFIG_NET_RX_BUSY_POLL */


	union host_hc_status_block	status_blk;
	union host_hc_status_block	status_blk;
	/* chip independent shortcuts into sb structure */
	/* chip independent shortcuts into sb structure */
@@ -572,7 +572,7 @@ struct bnx2x_fastpath {
#define bnx2x_fp_stats(bp, fp)	(&((bp)->fp_stats[(fp)->index]))
#define bnx2x_fp_stats(bp, fp)	(&((bp)->fp_stats[(fp)->index]))
#define bnx2x_fp_qstats(bp, fp)	(&((bp)->fp_stats[(fp)->index].eth_q_stats))
#define bnx2x_fp_qstats(bp, fp)	(&((bp)->fp_stats[(fp)->index].eth_q_stats))


#ifdef CONFIG_NET_LL_RX_POLL
#ifdef CONFIG_NET_RX_BUSY_POLL
static inline void bnx2x_fp_init_lock(struct bnx2x_fastpath *fp)
static inline void bnx2x_fp_init_lock(struct bnx2x_fastpath *fp)
{
{
	spin_lock_init(&fp->lock);
	spin_lock_init(&fp->lock);
@@ -680,7 +680,7 @@ static inline bool bnx2x_fp_ll_polling(struct bnx2x_fastpath *fp)
{
{
	return false;
	return false;
}
}
#endif /* CONFIG_NET_LL_RX_POLL */
#endif /* CONFIG_NET_RX_BUSY_POLL */


/* Use 2500 as a mini-jumbo MTU for FCoE */
/* Use 2500 as a mini-jumbo MTU for FCoE */
#define BNX2X_FCOE_MINI_JUMBO_MTU	2500
#define BNX2X_FCOE_MINI_JUMBO_MTU	2500
Loading