<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/net/usb/usbnet.c, branch linux-3.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-04-30T22:06:10Z</updated>
<entry>
<title>usbnet: cleanup after bind() in probe()</title>
<updated>2016-04-30T22:06:10Z</updated>
<author>
<name>Oliver Neukum</name>
</author>
<published>2016-03-07T10:31:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=216f5053012e617e68c803197502336bcd952eb6'/>
<id>urn:sha1:216f5053012e617e68c803197502336bcd952eb6</id>
<content type='text'>
commit 1666984c8625b3db19a9abc298931d35ab7bc64b upstream.

In case bind() works, but a later error forces bailing
in probe() in error cases work and a timer may be scheduled.
They must be killed. This fixes an error case related to
the double free reported in
http://www.spinics.net/lists/netdev/msg367669.html
and needs to go on top of Linus' fix to cdc-ncm.

Signed-off-by: Oliver Neukum &lt;ONeukum@suse.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>usbnet: Get EVENT_NO_RUNTIME_PM bit before it is cleared</title>
<updated>2015-09-30T12:20:56Z</updated>
<author>
<name>Eugene Shatokhin</name>
</author>
<published>2015-08-24T20:13:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=781a95d340cb4ad9129271fd153ecbfbb8e60f44'/>
<id>urn:sha1:781a95d340cb4ad9129271fd153ecbfbb8e60f44</id>
<content type='text'>
commit f50791ac1aca1ac1b0370d62397b43e9f831421a upstream.

It is needed to check EVENT_NO_RUNTIME_PM bit of dev-&gt;flags in
usbnet_stop(), but its value should be read before it is cleared
when dev-&gt;flags is set to 0.

The problem was spotted and the fix was provided by
Oliver Neukum &lt;oneukum@suse.de&gt;.

Signed-off-by: Eugene Shatokhin &lt;eugene.shatokhin@rosalab.ru&gt;
Acked-by: Oliver Neukum &lt;oneukum@suse.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>usbnet: Fix tx_bytes statistic running backward in cdc_ncm</title>
<updated>2015-04-27T08:48:14Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2015-03-25T20:41:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=08e0ae0370706aaa18bab048aade89b81470a71e'/>
<id>urn:sha1:08e0ae0370706aaa18bab048aade89b81470a71e</id>
<content type='text'>
commit 7a1e890e2168e33fb62d84528e996b8b4b478fea upstream.

cdc_ncm disagrees with usbnet about how much framing overhead should
be counted in the tx_bytes statistics, and tries 'fix' this by
decrementing tx_bytes on the transmit path.  But statistics must never
be decremented except due to roll-over; this will thoroughly confuse
user-space.  Also, tx_bytes is only incremented by usbnet in the
completion path.

Fix this by requiring drivers that set FLAG_MULTI_FRAME to set a
tx_bytes delta along with the tx_packets count.

Fixes: beeecd42c3b4 ("net: cdc_ncm/cdc_mbim: adding NCM protocol statistics")
Signed-off-by: Ben Hutchings &lt;ben.hutchings@codethink.co.uk&gt;
Signed-off-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>usbnet: Fix tx_packets stat for FLAG_MULTI_FRAME drivers</title>
<updated>2015-04-27T08:48:14Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2015-02-26T19:34:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7d2237ad7d172dcca04c68378fdfe571d0aaff12'/>
<id>urn:sha1:7d2237ad7d172dcca04c68378fdfe571d0aaff12</id>
<content type='text'>
commit 1e9e39f4a29857a396ac7b669d109f697f66695e upstream.

Currently the usbnet core does not update the tx_packets statistic for
drivers with FLAG_MULTI_PACKET and there is no hook in the TX
completion path where they could do this.

cdc_ncm and dependent drivers are bumping tx_packets stat on the
transmit path while asix and sr9800 aren't updating it at all.

Add a packet count in struct skb_data so these drivers can fill it
in, initialise it to 1 for other drivers, and add the packet count
to the tx_packets statistic on completion.

Signed-off-by: Ben Hutchings &lt;ben.hutchings@codethink.co.uk&gt;
Tested-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>Revert "cdc_subset: deal with a device that needs reset for timeout"</title>
<updated>2014-07-30T15:56:23Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2014-07-30T15:56:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1d8fcba1de632d7a43349788ad534c5a32c5a44c'/>
<id>urn:sha1:1d8fcba1de632d7a43349788ad534c5a32c5a44c</id>
<content type='text'>
This reverts commit 20fbe3ae990fd54fc7d1f889d61958bc8b38f254.

As reported by Stephen Rothwell, it causes compile failures in certain
configurations:

  drivers/net/usb/cdc_subset.c:360:15: error: 'dummy_prereset' undeclared here (not in a function)
    .pre_reset = dummy_prereset,
                 ^
  drivers/net/usb/cdc_subset.c:361:16: error: 'dummy_postreset' undeclared here (not in a function)
    .post_reset = dummy_postreset,
                  ^

Reported-by: Stephen Rothwell &lt;sfr@canb.auug.org.au&gt;
Acked-by: David Miller &lt;davem@davemloft.net&gt;
Cc: Oliver Neukum &lt;oneukum@suse.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>cdc_subset: deal with a device that needs reset for timeout</title>
<updated>2014-07-29T19:22:15Z</updated>
<author>
<name>Oliver Neukum</name>
</author>
<published>2014-07-28T08:12:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=20fbe3ae990fd54fc7d1f889d61958bc8b38f254'/>
<id>urn:sha1:20fbe3ae990fd54fc7d1f889d61958bc8b38f254</id>
<content type='text'>
This device needs to be reset to recover from a timeout.
Unfortunately this can be handled only at the level of
the subdrivers.

Signed-off-by: Oliver Neukum &lt;oneukum@suse.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>usbnet: include wait queue head in device structure</title>
<updated>2014-03-27T18:59:10Z</updated>
<author>
<name>Oliver Neukum</name>
</author>
<published>2014-03-26T13:32:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=14a0d635d18d0fb552dcc979d6d25106e6541f2e'/>
<id>urn:sha1:14a0d635d18d0fb552dcc979d6d25106e6541f2e</id>
<content type='text'>
This fixes a race which happens by freeing an object on the stack.
Quoting Julius:
&gt; The issue is
&gt; that it calls usbnet_terminate_urbs() before that, which temporarily
&gt; installs a waitqueue in dev-&gt;wait in order to be able to wait on the
&gt; tasklet to run and finish up some queues. The waiting itself looks
&gt; okay, but the access to 'dev-&gt;wait' is totally unprotected and can
&gt; race arbitrarily. I think in this case usbnet_bh() managed to succeed
&gt; it's dev-&gt;wait check just before usbnet_terminate_urbs() sets it back
&gt; to NULL. The latter then finishes and the waitqueue_t structure on its
&gt; stack gets overwritten by other functions halfway through the
&gt; wake_up() call in usbnet_bh().

The fix is to just not allocate the data structure on the stack.
As dev-&gt;wait is abused as a flag it also takes a runtime PM change
to fix this bug.

Signed-off-by: Oliver Neukum &lt;oneukum@suse.de&gt;
Reported-by: Grant Grundler &lt;grundler@google.com&gt;
Tested-by: Grant Grundler &lt;grundler@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>usbnet: remove generic hard_header_len check</title>
<updated>2014-02-17T19:35:46Z</updated>
<author>
<name>Emil Goode</name>
</author>
<published>2014-02-13T16:50:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=eb85569fe2d06c2fbf4de7b66c263ca095b397aa'/>
<id>urn:sha1:eb85569fe2d06c2fbf4de7b66c263ca095b397aa</id>
<content type='text'>
This patch removes a generic hard_header_len check from the usbnet
module that is causing dropped packages under certain circumstances
for devices that send rx packets that cross urb boundaries.

One example is the AX88772B which occasionally send rx packets that
cross urb boundaries where the remaining partial packet is sent with
no hardware header. When the buffer with a partial packet is of less
number of octets than the value of hard_header_len the buffer is
discarded by the usbnet module.

With AX88772B this can be reproduced by using ping with a packet
size between 1965-1976.

The bug has been reported here:

https://bugzilla.kernel.org/show_bug.cgi?id=29082

This patch introduces the following changes:
- Removes the generic hard_header_len check in the rx_complete
  function in the usbnet module.
- Introduces a ETH_HLEN check for skbs that are not cloned from
  within a rx_fixup callback.
- For safety a hard_header_len check is added to each rx_fixup
  callback function that could be affected by this change.
  These extra checks could possibly be removed by someone
  who has the hardware to test.
- Removes a call to dev_kfree_skb_any() and instead utilizes the
  dev-&gt;done list to queue skbs for cleanup.

The changes place full responsibility on the rx_fixup callback
functions that clone skbs to only pass valid skbs to the
usbnet_skb_return function.

Signed-off-by: Emil Goode &lt;emilgoode@gmail.com&gt;
Reported-by: Igor Gnatenko &lt;i.gnatenko.brain@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2014-01-14T22:42:42Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2014-01-14T22:37:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0a379e21c503b2ff66b44d588df9f231e9b0b9ca'/>
<id>urn:sha1:0a379e21c503b2ff66b44d588df9f231e9b0b9ca</id>
<content type='text'>
</content>
</entry>
<entry>
<title>net: usbnet: fix SG initialisation</title>
<updated>2014-01-14T07:32:04Z</updated>
<author>
<name>Bjørn Mork</name>
</author>
<published>2014-01-10T22:10:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fdc3452cd2c7b2bfe0f378f92123f4f9a98fa2bd'/>
<id>urn:sha1:fdc3452cd2c7b2bfe0f378f92123f4f9a98fa2bd</id>
<content type='text'>
Commit 60e453a940ac ("USBNET: fix handling padding packet")
added an extra SG entry in case padding is necessary, but
failed to update the initialisation of the list. This can
cause list traversal to fall off the end of the list,
resulting in an oops.

Fixes: 60e453a940ac ("USBNET: fix handling padding packet")
Reported-by: Thomas Kear &lt;thomas@kear.co.nz&gt;
Cc: Ming Lei &lt;ming.lei@canonical.com&gt;
Signed-off-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Tested-by: Ming Lei &lt;ming.lei@canonical.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
