From: "Charles (Chas) Williams" <ciwillia@brocade.com>
To: <stable@vger.kernel.org>
Cc: "Bjørn Mork" <bjorn@mork.no>,
"David S. Miller" <davem@davemloft.net>,
"Charles (Chas) Williams" <ciwillia@brocade.com>
Subject: [PATCH 3.14.y 3/9] cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind
Date: Mon, 18 Jul 2016 16:53:17 -0400 [thread overview]
Message-ID: <1468875203-10816-3-git-send-email-ciwillia@brocade.com> (raw)
In-Reply-To: <1468875203-10816-1-git-send-email-ciwillia@brocade.com>
From: Bjørn Mork <bjorn@mork.no>
commit 4d06dd537f95683aba3651098ae288b7cbff8274 upstream.
usbnet_link_change will call schedule_work and should be
avoided if bind is failing. Otherwise we will end up with
scheduled work referring to a netdev which has gone away.
Instead of making the call conditional, we can just defer
it to usbnet_probe, using the driver_info flag made for
this purpose.
CVE-2016-3951
Fixes: 8a34b0ae8778 ("usbnet: cdc_ncm: apply usbnet_link_change")
Reported-by: Andrey Konovalov <andreyknvl@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
[ciwillia@brocade.com: backported to 3.14: adjusted context]
Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
---
drivers/net/usb/cdc_ncm.c | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index c663722..1f24dfc 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -564,24 +564,13 @@ EXPORT_SYMBOL_GPL(cdc_ncm_select_altsetting);
static int cdc_ncm_bind(struct usbnet *dev, struct usb_interface *intf)
{
- int ret;
-
/* MBIM backwards compatible function? */
cdc_ncm_select_altsetting(dev, intf);
if (cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting))
return -ENODEV;
/* NCM data altsetting is always 1 */
- ret = cdc_ncm_bind_common(dev, intf, 1);
-
- /*
- * We should get an event when network connection is "connected" or
- * "disconnected". Set network connection in "disconnected" state
- * (carrier is OFF) during attach, so the IP network stack does not
- * start IPv6 negotiation and more.
- */
- usbnet_link_change(dev, 0, 0);
- return ret;
+ return cdc_ncm_bind_common(dev, intf, 1);
}
static void cdc_ncm_align_tail(struct sk_buff *skb, size_t modulus, size_t remainder, size_t max)
@@ -1110,7 +1099,8 @@ static int cdc_ncm_check_connect(struct usbnet *dev)
static const struct driver_info cdc_ncm_info = {
.description = "CDC NCM",
- .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET,
+ .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET
+ | FLAG_LINK_INTR,
.bind = cdc_ncm_bind,
.unbind = cdc_ncm_unbind,
.check_connect = cdc_ncm_check_connect,
@@ -1124,7 +1114,7 @@ static const struct driver_info cdc_ncm_info = {
static const struct driver_info wwan_info = {
.description = "Mobile Broadband Network Device",
.flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET
- | FLAG_WWAN,
+ | FLAG_LINK_INTR | FLAG_WWAN,
.bind = cdc_ncm_bind,
.unbind = cdc_ncm_unbind,
.check_connect = cdc_ncm_check_connect,
@@ -1138,7 +1128,7 @@ static const struct driver_info wwan_info = {
static const struct driver_info wwan_noarp_info = {
.description = "Mobile Broadband Network Device (NO ARP)",
.flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET
- | FLAG_WWAN | FLAG_NOARP,
+ | FLAG_LINK_INTR | FLAG_WWAN | FLAG_NOARP,
.bind = cdc_ncm_bind,
.unbind = cdc_ncm_unbind,
.check_connect = cdc_ncm_check_connect,
--
2.5.5
next prev parent reply other threads:[~2016-07-18 20:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-18 20:53 [PATCH 3.14.y 1/9] udp: properly support MSG_PEEK with truncated buffers Charles (Chas) Williams
2016-07-18 20:53 ` [PATCH 3.14.y 2/9] USB: fix invalid memory access in hub_activate() Charles (Chas) Williams
2016-07-18 20:53 ` Charles (Chas) Williams [this message]
2016-08-14 14:43 ` [PATCH 3.14.y 3/9] cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind Greg KH
2016-08-14 14:52 ` Bjørn Mork
2016-08-14 15:05 ` Greg KH
2016-07-18 20:53 ` [PATCH 3.14.y 4/9] KEYS: potential uninitialized variable Charles (Chas) Williams
2016-07-18 20:53 ` [PATCH 3.14.y 5/9] USB: usbfs: fix potential infoleak in devio Charles (Chas) Williams
2016-08-14 14:44 ` Greg Kroah-Hartman
2016-08-15 14:41 ` Charles (Chas) Williams
2016-07-18 20:58 ` [PATCH 3.14.y 6/9] mm: migrate dirty page without clear_page_dirty_for_io etc Charles (Chas) Williams
2016-07-18 20:59 ` [PATCH 3.14.y 7/9] printk: do cond_resched() between lines while outputting to consoles Charles (Chas) Williams
2016-07-18 20:59 ` [PATCH 3.14.y 8/9] HID: hiddev: validate num_values for HIDIOCGUSAGES, HIDIOCSUSAGES commands Charles (Chas) Williams
2016-07-18 20:59 ` [PATCH 3.14.y 9/9] x86/mm: Add barriers and document switch_mm()-vs-flush synchronization Charles (Chas) Williams
2016-08-14 14:42 ` [PATCH 3.14.y 1/9] udp: properly support MSG_PEEK with truncated buffers Greg KH
2016-08-15 7:21 ` Michal Kubecek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1468875203-10816-3-git-send-email-ciwillia@brocade.com \
--to=ciwillia@brocade.com \
--cc=bjorn@mork.no \
--cc=davem@davemloft.net \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox