Netdev List
 help / color / mirror / Atom feed
* [ANNOUNCE] conntrack-tools 1.4.2 release
From: Pablo Neira Ayuso @ 2013-08-06 16:55 UTC (permalink / raw)
  To: netfilter-devel; +Cc: netdev, netfilter, netfilter-announce, lwn

[-- Attachment #1: Type: text/plain, Size: 876 bytes --]

Hi!

The Netfilter project proudly presents:

        conntrack-tools 1.4.2

The conntrack-tools are the userspace command line interface
`conntrack' and the userspace daemon `conntrackd'. The conntrack
utility replaces the old /proc/net/nf_conntrack interface. With
conntrack, you can dump, modify and delete entries from the connection
tracking state table from userspace. On the other hand, conntrackd
allows you to deploy highly available stateful firewall clusters and
to run connection tracking helpers from user-space.

More information in the official manual at:
http://conntrack-tools.netfilter.org/manual.html

This release includes bugfixes and the connlabel support. See ChangeLog that
comes attached to this email for more details.

You can download it from:

http://www.netfilter.org/projects/nfacct/downloads.html
ftp://ftp.netfilter.org/pub/nfacct/

Have fun!

[-- Attachment #2: changes-conntrack-tools-1.4.2.txt --]
[-- Type: text/plain, Size: 1124 bytes --]

Clemence Faure (2):
      conntrack: introduce -l option to filter by labels
      conntrack: fix reporting of unknown arguments

Florian Westphal (5):
      conntrackd: fix compiler warnings
      include: kill unused PLD_* macros
      conntrack: add connlabel format attribute
      conntrackd: support replication of connlabels
      conntrack: fix -L format output

James Guthrie (1):
      conntrackd: fix parsing of non-abbreviated IPv6 address in config file

Pablo Neira Ayuso (11):
      build: requires libnetfilter_conntrack >= 1.0.3
      conntrack: fix timestamps when microseconds are less than 100000
      tests: cthelper: remove test infrastructure from this tree
      cthelper: add IPv6 support
      cthelper: helpers may not use private information area
      conntrackd: cache: fix hashing based on IPv6 address
      conntrackd: deprecate `Family' in configuration file
      conntrackd: fix crash with IPv6 expectation in the filtering code
      conntrackd: simplify expectation filtering
      cthelper: fix IPv6 address and mask in newly created expectations
      conntrack-tools 1.4.2 release


^ permalink raw reply

* [ANNOUNCE] iptables 1.4.20 release
From: Pablo Neira Ayuso @ 2013-08-06 16:17 UTC (permalink / raw)
  To: netfilter-devel; +Cc: netdev, netfilter, netfilter-announce, lwn

[-- Attachment #1: Type: text/plain, Size: 429 bytes --]

Hi!

The Netfilter project proudly presents:

        iptables 1.4.20

iptables is the userspace command line program used to configure the
Linux kernel packet filtering software. It is targeted towards system
administrators.

See ChangeLog that comes attached to this email for more details.

You can download it from:

http://www.netfilter.org/projects/iptables/downloads.html
ftp://ftp.netfilter.org/pub/iptables/

Have fun!


[-- Attachment #2: changes-iptables-1.4.20.txt --]
[-- Type: text/plain, Size: 2144 bytes --]

Alexey Perevalov (1):
      doc: clarify DEBUG usage macro

Andy Spencer (1):
      iptables: use autoconf to process .in man pages

Eric Leblond (1):
      configure: display summary

Florian Westphal (2):
      extensions: libipt_ULOG: man page should mention NFLOG as replacement
      extensions: libxt_connlabel: use libnetfilter_conntrack

Jozsef Kadlecsik (2):
      Introduce a new revision for the set match with the counters support
      libxt_CT: Add the "NOTRACK" alias

Mart Frauenlob (7):
      libip6t_mh: Correct command to list named mh types in manpage
      extensions: libxt_DNAT: rename IPv4 manpage and tell about IPv6 support
      extensions: libxt_REDIRECT: rename IPv4 manpage and tell about IPv6 support
      extensions: libxt_NETMAP: rename IPv4 manpage and tell about IPv6 support
      extensions: libxt_SNAT: rename IPv4 manpage and tell about IPv6 support
      extensions: libxt_MASQUERADE: rename IPv4 manpage and tell about IPv6 support
      extensions: libxt_LOG: rename IPv4 manpage and tell about IPv6 support

Pablo Neira Ayuso (7):
      extensions: libxt_LED: fix parsing of delay
      Merge branch 'stable'
      Merge branch 'stable'
      ip{6}tables-restore: fix breakage due to new locking approach
      libxt_recent: restore minimum value for --seconds
      iptables-xml: fix parameter parsing (similar to 2165f38)
      iptables 1.4.20 release

Patrick McHardy (1):
      extensions: add copyright statements

Phil Oester (7):
      xtables: improve get_modprobe handling
      ip[6]tables: Add locking to prevent concurrent instances
      iptables: Fix connlabel.conf install location
      ip6tables: don't print out /128
      libip6t_LOG: target output is different to libipt_LOG
      build: additional include path required after UAPI changes
      iptables: iptables-xml: Fix various parsing bugs

Russell Senior (1):
      libxt_recent: restore reap functionality to recent module

Willem de Bruijn (1):
      build: fail in configure on missing dependency with --enable-bpf-compiler

holger@eitzenberger.org (1):
      extensions: libxt_NFQUEUE: add --queue-cpu-fanout parameter


^ permalink raw reply

* Re: bridge: disable snooping if there is no querier
From: Eric Dumazet @ 2013-08-06 15:47 UTC (permalink / raw)
  To: Dave Jones; +Cc: netdev, Linus Lüssing, David S. Miller
In-Reply-To: <20130806151857.GA25528@redhat.com>

On Tue, 2013-08-06 at 11:18 -0400, Dave Jones wrote:
> On Sun, Aug 04, 2013 at 12:52:27AM +0000, Linux Kernel wrote:
>  > Gitweb:     http://git.kernel.org/linus/;a=commit;h=b00589af3b04736376f24625ab0b394642e89e29
>  > Commit:     b00589af3b04736376f24625ab0b394642e89e29
>  > Parent:     cf3c4c03060b688cbc389ebc5065ebcce5653e96
>  > Author:     Linus Lüssing <linus.luessing@web.de>
>  > AuthorDate: Thu Aug 1 01:06:20 2013 +0200
>  > Committer:  David S. Miller <davem@davemloft.net>
>  > CommitDate: Wed Jul 31 17:40:21 2013 -0700
>  > 
>  >     bridge: disable snooping if there is no querier
>  >     
>  >     Signed-off-by: Linus Lüssing <linus.luessing@web.de>
>  >     Signed-off-by: David S. Miller <davem@davemloft.net>
>  
>  > diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
>  > @@ -1198,6 +1206,9 @@ static int br_ip6_multicast_query(struct net_bridge *br,
>  >  		max_delay = mld2q->mld2q_mrc ? MLDV2_MRC(ntohs(mld2q->mld2q_mrc)) : 1;
>  >  	}
>  >  
>  > +	br_multicast_query_received(br, port, !ipv6_addr_any(&ip6h->saddr),
>  > +				    max_delay);
>  > +
>  >  	if (!group)
>  >  		goto out;
> 
> This addition looks suspect. max_delay looks like it could be uninitialised here.
> 
> 1178         unsigned long max_delay;
> 
> ...

fixed in David net tree

^ permalink raw reply

* [ANNOUNCE] libnetfilter_conntrack 1.0.4 release
From: Pablo Neira Ayuso @ 2013-08-06 15:45 UTC (permalink / raw)
  To: netfilter-devel; +Cc: netdev, netfilter, netfilter-announce, lwn

[-- Attachment #1: Type: text/plain, Size: 630 bytes --]

Hi!

The Netfilter project proudly presents:

        libnetfilter_conntrack 1.0.4

libnetfilter_conntrack is a userspace library providing a programming
interface (API) to the in-kernel connection tracking state table. This
library is currently used by conntrack-tools and iptables, among other
applications.

This release includes connlabel support, one memleak fix and fixes in
the comparison API. See ChangeLog that comes attached to this email
for more details.

You can download it from:

http://www.netfilter.org/projects/libnetfilter_conntrack/downloads.html
ftp://ftp.netfilter.org/pub/libnetfilter_conntrack/

Have fun!

[-- Attachment #2: changes-libnetfilter_conntrack-1.0.4.txt --]
[-- Type: text/plain, Size: 1103 bytes --]

Afschin Hormozdiary (1):
      libnetfilter_conntrack: don't ignore ATTR_CONNLABELS

Florian Westphal (18):
      api: add nfct_bitmask object
      api: add connlabel api and attribute
      examples: add connlabel dump/set/clear demo programs
      api: add CTA_LABEL_MASK attribute handling
      qa: add api test for nfct_cmp and nfct_exp functions
      conntrack, expect: fix _cmp api with STRICT checking
      expect: consider all expect attributes when comparing
      conntrack: nfct_cmp: also compare labels
      qa: nfct_cmp: verify individual attr comparision
      connlabel: fix NULL deref on malloc failure
      conntrack: CONNLABELS are not a nested attribute
      conntrack: connlabel: remove useless test
      conntrack: labels: skip labels with non-alnum characters
      src: callback: fix memory leak when ct has dynamically allocated attr
      conntrack: api: add nfct_snprintf_labels
      qa: test_connlabel: don't abort when system-wide config exists
      conntrack: labels: labelmap_new: make sure errno is 0 when no labels are found
      build: bump version to 1.0.4


^ permalink raw reply

* Re: bridge: disable snooping if there is no querier
From: Dave Jones @ 2013-08-06 15:18 UTC (permalink / raw)
  To: netdev; +Cc: Linus Lüssing, David S. Miller
In-Reply-To: <20130804005227.D17B3660D03@gitolite.kernel.org>

On Sun, Aug 04, 2013 at 12:52:27AM +0000, Linux Kernel wrote:
 > Gitweb:     http://git.kernel.org/linus/;a=commit;h=b00589af3b04736376f24625ab0b394642e89e29
 > Commit:     b00589af3b04736376f24625ab0b394642e89e29
 > Parent:     cf3c4c03060b688cbc389ebc5065ebcce5653e96
 > Author:     Linus Lüssing <linus.luessing@web.de>
 > AuthorDate: Thu Aug 1 01:06:20 2013 +0200
 > Committer:  David S. Miller <davem@davemloft.net>
 > CommitDate: Wed Jul 31 17:40:21 2013 -0700
 > 
 >     bridge: disable snooping if there is no querier
 >     
 >     Signed-off-by: Linus Lüssing <linus.luessing@web.de>
 >     Signed-off-by: David S. Miller <davem@davemloft.net>
 
 > diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
 > @@ -1198,6 +1206,9 @@ static int br_ip6_multicast_query(struct net_bridge *br,
 >  		max_delay = mld2q->mld2q_mrc ? MLDV2_MRC(ntohs(mld2q->mld2q_mrc)) : 1;
 >  	}
 >  
 > +	br_multicast_query_received(br, port, !ipv6_addr_any(&ip6h->saddr),
 > +				    max_delay);
 > +
 >  	if (!group)
 >  		goto out;

This addition looks suspect. max_delay looks like it could be uninitialised here.

1178         unsigned long max_delay;

...

1189         if (skb->len == sizeof(*mld)) {
1190                 if (!pskb_may_pull(skb, sizeof(*mld))) {
1191                         err = -EINVAL;
1192                         goto out;
1193                 }
1194                 mld = (struct mld_msg *) icmp6_hdr(skb);
1195                 max_delay = msecs_to_jiffies(ntohs(mld->mld_maxdelay));
1196                 if (max_delay)
1197                         group = &mld->mld_mca;
1198         } else if (skb->len >= sizeof(*mld2q)) {
1199                 if (!pskb_may_pull(skb, sizeof(*mld2q))) {
1200                         err = -EINVAL;
1201                         goto out;
1202                 }
1203                 mld2q = (struct mld2_query *)icmp6_hdr(skb);
1204                 if (!mld2q->mld2q_nsrcs)
1205                         group = &mld2q->mld2q_mca;
1206                 max_delay = mld2q->mld2q_mrc ? MLDV2_MRC(ntohs(mld2q->mld2q_mrc)) : 1;
1207         }
1208 
1209         br_multicast_query_received(br, port, !ipv6_addr_any(&ip6h->saddr),
1210                                     max_delay);

If skb_len matches neither of those conditions, we don't set it.

Explicitly set it to something on entry ? Or is there validation further up the
callchain that skb_len will only ever be one of these two values ?

	Dave

^ permalink raw reply

* Re: [PATCH] tcp: cubic: fix overflow error in bictcp_update()
From: Neal Cardwell @ 2013-08-06 15:12 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: David Miller, netdev, Van Jacobson, Stephen Hemminger,
	Yuchung Cheng
In-Reply-To: <1375747815.4457.59.camel@edumazet-glaptop>

On Mon, Aug 5, 2013 at 8:10 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> From: Eric Dumazet <edumazet@google.com>
>
> commit 17a6e9f1aa9 ("tcp_cubic: fix clock dependency") added an
> overflow error in bictcp_update() in following code :
>
> /* change the unit from HZ to bictcp_HZ */
> t = ((tcp_time_stamp + msecs_to_jiffies(ca->delay_min>>3) -
>       ca->epoch_start) << BICTCP_HZ) / HZ;
>
> Because msecs_to_jiffies() being unsigned long, compiler does
> implicit type promotion.
>
> We really want to constrain (tcp_time_stamp - ca->epoch_start)
> to a signed 32bit value, or else 't' has unexpected high values.
>
> This bugs triggers an increase of retransmit rates ~24 days after
> boot [1], as the high order bit of tcp_time_stamp flips.
>
> [1] for hosts with HZ=1000
>
> Big thanks to Van Jacobson for spotting this problem.
>
> Diagnosed-by: Van Jacobson <vanj@google.com>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Neal Cardwell <ncardwell@google.com>
> Cc: Yuchung Cheng <ycheng@google.com>
> Cc: Stephen Hemminger <stephen@networkplumber.org>

Acked-by: Neal Cardwell <ncardwell@google.com>

Also a nice catch!

neal

^ permalink raw reply

* Re: [PATCH v3 4/4] USBNET: ax88179_178a: enable tso if usb host supports sg dma
From: Ming Lei @ 2013-08-06 15:07 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: David S. Miller, Greg Kroah-Hartman, Oliver Neukum, Sarah Sharp,
	netdev-u79uwXL29TY76Z2rM5mHXA, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	Ben Hutchings, Grant Grundler, Alan Stern, Freddy Xin
In-Reply-To: <1375791737.4457.98.camel@edumazet-glaptop>

On Tue, Aug 6, 2013 at 8:22 PM, Eric Dumazet <eric.dumazet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> On Tue, 2013-08-06 at 08:52 +0800, Ming Lei wrote:
>> This patch enables 'can_dma_sg' flag for ax88179_178a device
>> if the attached host controller supports building packet from
>> discontinuous buffers(DMA SG is possible), so TSO can be enabled
>> and skb fragment buffers can be passed to usb stack via urb->sg
>> directly.
>>
>> With the patch, system CPU utilization decreased ~50% and throughput
>> increased by ~10% when doing iperf client test on one ARM A15 dual
>> core board.
>>
>
> Nice ;)
>
>>              AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6;
>> @@ -1310,6 +1318,10 @@ static int ax88179_reset(struct usbnet *dev)
>>
>>       dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
>>                                NETIF_F_RXCSUM;
>> +     if (dev->can_dma_sg) {
>> +             dev->net->features |= NETIF_F_SG | NETIF_F_TSO;
>> +             dev->net->hw_features |= NETIF_F_SG | NETIF_F_TSO;
>> +     }
>>
>
> My concern with setting TSO on reset() is the following :
>
> Admin can disable TSO with
>
> ethtool -K ethX tso off
>
>
> Then, one hour later, or one month later, a reset happens, and this code
> magically re-enables TSO

The reset only happens during open(), and TSO can't be re-enabled magically,
unless the interface is re-opened by Admin.

>
> So, I really think this part should be removed from your patch.

OK, will remove it.


Thanks,
--
Ming Lei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: 8139cp: Add dma_mapping_error checking
From: Dave Jones @ 2013-08-06 15:01 UTC (permalink / raw)
  To: netdev; +Cc: Neil Horman, David S. Miller, Francois Romieu
In-Reply-To: <20130804005227.CA1B0660D02@gitolite.kernel.org>

On Sun, Aug 04, 2013 at 12:52:27AM +0000, Linux Kernel wrote:
 > Gitweb:     http://git.kernel.org/linus/;a=commit;h=cf3c4c03060b688cbc389ebc5065ebcce5653e96
 > Commit:     cf3c4c03060b688cbc389ebc5065ebcce5653e96
 > Parent:     d9d10a30964504af834d8d250a0c76d4ae91eb1e
 > Author:     Neil Horman <nhorman@tuxdriver.com>
 > AuthorDate: Wed Jul 31 09:03:56 2013 -0400
 > Committer:  David S. Miller <davem@davemloft.net>
 > CommitDate: Wed Jul 31 17:01:43 2013 -0700
 > 
 >     8139cp: Add dma_mapping_error checking
 >     
 >     Self explanitory dma_mapping_error addition to the 8139 driver, based on this:
 >     https://bugzilla.redhat.com/show_bug.cgi?id=947250
 >     
 >     It showed several backtraces arising for dma_map_* usage without checking the
 >     return code on the mapping.  Add the check and abort the rx/tx operation if its
 >     failed.  Untested as I have no hardware and the reporter has wandered off, but
 >     seems pretty straightforward.
 >     
 >     Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
 >     CC: "David S. Miller" <davem@davemloft.net>
 >     CC: Francois Romieu <romieu@fr.zoreil.com>
 >     Signed-off-by: David S. Miller <davem@davemloft.net>
 > 
 > diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c

.. (allocation of new_skb occurs)
 

 > +		new_mapping = dma_map_single(&cp->pdev->dev, new_skb->data, buflen,
 > +					 PCI_DMA_FROMDEVICE);
 > +		if (dma_mapping_error(&cp->pdev->dev, new_mapping)) {
 > +			dev->stats.rx_dropped++;
 > +			goto rx_next;
 > +		}
 > +

...

 547 rx_next:
 548                 cp->rx_ring[rx_tail].opts2 = 0;
 549                 cp->rx_ring[rx_tail].addr = cpu_to_le64(mapping);
 550                 if (rx_tail == (CP_RX_RING_SIZE - 1))
 551                         desc->opts1 = cpu_to_le32(DescOwn | RingEnd |
 552                                                   cp->rx_buf_sz);
 553                 else
 554                         desc->opts1 = cpu_to_le32(DescOwn | cp->rx_buf_sz);
 555                 rx_tail = NEXT_RX(rx_tail);
 556 
 557                 if (rx >= budget)
 558                         break;
 559         }

If we get to that 'break', we leak new_skb.

This maybe.... ?

	Dave


8139cp: Fix skb leak in rx_status_loop failure path.
Introduced in cf3c4c03060b688cbc389ebc5065ebcce5653e96

Signed-off-by: Dave Jones <davej@redhat.com>

diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
index 6f35f84..d2e5919 100644
--- a/drivers/net/ethernet/realtek/8139cp.c
+++ b/drivers/net/ethernet/realtek/8139cp.c
@@ -524,6 +524,7 @@ rx_status_loop:
 					 PCI_DMA_FROMDEVICE);
 		if (dma_mapping_error(&cp->pdev->dev, new_mapping)) {
 			dev->stats.rx_dropped++;
+			kfree_skb(new_skb);
 			goto rx_next;
 		}
 

^ permalink raw reply related

* Re: net/tg3: Fix kernel crash
From: Dave Jones @ 2013-08-06 14:46 UTC (permalink / raw)
  To: netdev; +Cc: Wei Yang, Gavin Shan, Nithin Nayak Sujir, David S. Miller
In-Reply-To: <20130731204019.059F66609B7@gitolite.kernel.org>

On Wed, Jul 31, 2013 at 08:40:18PM +0000, Linux Kernel wrote:
 > Gitweb:     http://git.kernel.org/linus/;a=commit;h=d8af4dfd84329015e18ea3d83a84c46e92f21020
 > Commit:     d8af4dfd84329015e18ea3d83a84c46e92f21020
 > Parent:     d738ce8fdc05ebf5b1475f8ae26d908c8c50970b
 > Author:     Gavin Shan <shangw@linux.vnet.ibm.com>
 > AuthorDate: Wed Jul 24 17:25:08 2013 +0800
 > 
 >     net/tg3: Fix kernel crash
 >     
 >     While EEH error happens, we might not have network device instance
 >     (struct net_device) yet. So we can't access the instance safely and
 >     check its link state, which causes kernel crash. The patch fixes it.
 >     Reported-by: Wei Yang <weiyang@linux.vnet.ibm.com>
 >     Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
 >     Acked-by: Nithin Nayak Sujir <nsujir@broadcom.com>
 >     Signed-off-by: David S. Miller <davem@davemloft.net>
 > 
 > diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
 > index d964f30..aee1b9a 100644
 > --- a/drivers/net/ethernet/broadcom/tg3.c
 > +++ b/drivers/net/ethernet/broadcom/tg3.c
 > @@ -17773,7 +17773,8 @@ static pci_ers_result_t tg3_io_error_detected(struct pci_dev *pdev,
 >  
 >  	rtnl_lock();
 >  
 > -	if (!netif_running(netdev))
 > +	/* We probably don't have netdev yet */
 > +	if (!netdev || !netif_running(netdev))
 >  		goto done;
 
This looks incomplete.  'done' does this..

done:
  if (state == pci_channel_io_perm_failure) {
          tg3_napi_enable(tp);
          dev_close(netdev);


If netdev is null, we'll deref it in dev_close.

	Dave

^ permalink raw reply

* Re: [PATCH net-next 2/3] netdevice: remove useless else keyword
From: Joe Perches @ 2013-08-06 14:37 UTC (permalink / raw)
  To: Daniel Borkmann; +Cc: Jean Sacren, netdev
In-Reply-To: <5200B1DF.2000701@redhat.com>

On Tue, 2013-08-06 at 10:20 +0200, Daniel Borkmann wrote:
> On 08/06/2013 09:32 AM, Jean Sacren wrote:
> > Clean up multiple useless else keywords. Add empty lines for
> > readability.
> 
> Hmm, don't really think this is actually needed or makes things better.

Maybe that's true.

Though this patch is pretty trivial and
I would (probably) not submit it, I think
it's a reasonable style rule to not use
else after an if() that always returns.

	if (foo)
		return bar;

	next_statement;

should be preferred over

	if (foo)
		return bar;
	else
		next_statement;

The blank lines though are a style taste.
Maybe removing the blank line before the
first if in this patch might be better.

{
	BUG_ON(!net);

	if (!dev_valid_name(name))
		return -EINVAL;
	if (strchr(name, '%'))
		return dev_alloc_name_ns(net, dev, name);
	if (__dev_get_by_name(net, name))
		return -EEXIST;
	if (dev->name != name)
		strlcpy(dev->name, name, IFNAMSIZ);

	return 0;
}

^ permalink raw reply

* Re: [PATCH] tcp: cubic: fix bug in bictcp_acked()
From: Neal Cardwell @ 2013-08-06 13:49 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: David Miller, netdev, Van Jacobson, Yuchung Cheng
In-Reply-To: <1375758312.4457.69.camel@edumazet-glaptop>

On Mon, Aug 5, 2013 at 11:05 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> From: Eric Dumazet <edumazet@google.com>
>
> While investigating about strange increase of retransmit rates
> on hosts ~24 days after boot, Van found hystart was disabled
> if ca->epoch_start was 0, as following condition is true
> when tcp_time_stamp high order bit is set.
>
> (s32)(tcp_time_stamp - ca->epoch_start) < HZ
>
> Quoting Van :
>
>  At initialization & after every loss ca->epoch_start is set to zero so
>  I believe that the above line will turn off hystart as soon as the 2^31
>  bit is set in tcp_time_stamp & hystart will stay off for 24 days.
>  I think we've observed that cubic's restart is too aggressive without
>  hystart so this might account for the higher drop rate we observe.
>
> Diagnosed-by: Van Jacobson <vanj@google.com>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Neal Cardwell <ncardwell@google.com>
> Cc: Yuchung Cheng <ycheng@google.com>

Acked-by: Neal Cardwell <ncardwell@google.com>

Nice catch!

neal

^ permalink raw reply

* [PATCH net-next] tcp:elapsed variable calculated twice while keepalive working
From: Tingwei Liu @ 2013-08-06 12:38 UTC (permalink / raw)
  To: netdev, davem, kuznet, eric.dumazet; +Cc: Tingwei Liu

When tcp keepalive working elapsed calculated twice while the first time is not needed!

CC: Eric Dumazet <eric.dumazet@gmail.com>
CC: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
Signed-off-by: Tingwei Liu <tingw.liu@gmail.com>
---
 net/ipv4/tcp_timer.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 4b85e6f..03091d9 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -591,11 +591,11 @@ static void tcp_keepalive_timer (unsigned long data)
 	if (!sock_flag(sk, SOCK_KEEPOPEN) || sk->sk_state == TCP_CLOSE)
 		goto out;
 
-	elapsed = keepalive_time_when(tp);
-
 	/* It is alive without keepalive 8) */
-	if (tp->packets_out || tcp_send_head(sk))
+	if (tp->packets_out || tcp_send_head(sk)) {
+		elapsed = keepalive_time_when(tp);
 		goto resched;
+	}
 
 	elapsed = keepalive_time_elapsed(tp);
 
-- 
1.6.0.2

^ permalink raw reply related

* Re: [PATCH net-next] tcp:elapsed variable calculated twice while keepalive working
From: tingwei liu @ 2013-08-06 12:29 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev, Alexey Kuznetsov, davem
In-Reply-To: <1375791792.4457.99.camel@edumazet-glaptop>

On Tue, Aug 6, 2013 at 8:23 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> On Tue, 2013-08-06 at 20:05 +0800, Tingwei Liu wrote:
>> ---
>>  net/ipv4/tcp_timer.c |    6 +++---
>>  1 files changed, 3 insertions(+), 3 deletions(-)
>
> I suggest reading Documentation/SubmittingPatches, because you forgot
> the "Signed-off-by:" tag, and you did the same on your last patch
> submission.
Thanks very much! I will resend the patch in a few minutes.
>
>
>
>

^ permalink raw reply

* Re: [PATCH net-next] tcp:elapsed variable calculated twice while keepalive working
From: Eric Dumazet @ 2013-08-06 12:23 UTC (permalink / raw)
  To: Tingwei Liu; +Cc: netdev, kuznet, davem
In-Reply-To: <1375790724-18834-1-git-send-email-tingw.liu@gmail.com>

On Tue, 2013-08-06 at 20:05 +0800, Tingwei Liu wrote:
> ---
>  net/ipv4/tcp_timer.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)

I suggest reading Documentation/SubmittingPatches, because you forgot
the "Signed-off-by:" tag, and you did the same on your last patch
submission.

^ permalink raw reply

* Re: [PATCH v3 4/4] USBNET: ax88179_178a: enable tso if usb host supports sg dma
From: Eric Dumazet @ 2013-08-06 12:22 UTC (permalink / raw)
  To: Ming Lei
  Cc: David S. Miller, Greg Kroah-Hartman, Oliver Neukum, Sarah Sharp,
	netdev, linux-usb, Ben Hutchings, Grant Grundler, Alan Stern,
	Freddy Xin
In-Reply-To: <1375750370-18194-5-git-send-email-ming.lei@canonical.com>

On Tue, 2013-08-06 at 08:52 +0800, Ming Lei wrote:
> This patch enables 'can_dma_sg' flag for ax88179_178a device
> if the attached host controller supports building packet from
> discontinuous buffers(DMA SG is possible), so TSO can be enabled
> and skb fragment buffers can be passed to usb stack via urb->sg
> directly.
> 
> With the patch, system CPU utilization decreased ~50% and throughput
> increased by ~10% when doing iperf client test on one ARM A15 dual
> core board.
> 

Nice ;)

>  	       AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6;
> @@ -1310,6 +1318,10 @@ static int ax88179_reset(struct usbnet *dev)
>  
>  	dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
>  				 NETIF_F_RXCSUM;
> +	if (dev->can_dma_sg) {
> +		dev->net->features |= NETIF_F_SG | NETIF_F_TSO;
> +		dev->net->hw_features |= NETIF_F_SG | NETIF_F_TSO;
> +	}
>  

My concern with setting TSO on reset() is the following :

Admin can disable TSO with

ethtool -K ethX tso off


Then, one hour later, or one month later, a reset happens, and this code
magically re-enables TSO

So, I really think this part should be removed from your patch.

^ permalink raw reply

* Re: [PATCH net-next] bonding: fix send_peer_notif leekage on rtnl lock congestion
From: Veaceslav Falico @ 2013-08-06 12:17 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, fubar, andy
In-Reply-To: <20130805.161212.421332729798966037.davem@davemloft.net>

On Mon, Aug 05, 2013 at 04:12:12PM -0700, David Miller wrote:
>From: Veaceslav Falico <vfalico@redhat.com>
>Date: Mon,  5 Aug 2013 21:47:33 +0200
>
>> @@ -2999,7 +3002,10 @@ void bond_activebackup_arp_mon(struct work_struct *work)
>>  		if (!rtnl_trylock()) {
>>  			read_lock(&bond->lock);
>>  			delta_in_ticks = 1;
>> -			should_notify_peers = false;
>> +			if (should_notify_peers) {
>> +				bond->send_peer_notif++;
>
>I doubt this increment to a shared datastructure is safe with
>the locks you hold here.
>
>You don't hold RTNL and you only have bond->lock as a reader.

You're right, we can race here. This whole locking juggling should be
changed.

Self-NAK for this, I'll rework it.

^ permalink raw reply

* Re: low latency/busy poll feedback and bugs
From: Amir Vadai @ 2013-08-06 12:15 UTC (permalink / raw)
  To: Shawn Bohrer; +Cc: eliezer.tamir, netdev
In-Reply-To: <20130805212257.GB6904@sbohrermbp13-local.rgmadvisors.com>

On 06/08/2013 00:22, Shawn Bohrer wrote:
> I did a little testing of the new low latency/busy poll sockets today
> and found a few things that surprised me and at least one bug.
> 
> 1) I'm testing with a Mellanox ConnectX-3 card.  
Of course :)

> Currently polling
> with mlx4_en is broken when GRO is enabled.  In
> mlx4_en_process_rx_cq() when GRO is enabled skb_mark_napi_id() is
> never called.  It appears like low latency sockets with GRO is
> supposed to work because the following code checks that we are not
> ll_polling:
> 
>  /* This packet is eligible for GRO if it is:
>    * - DIX Ethernet (type interpretation)
>    * - TCP/IP (v4)
>    * - without IP options
>    * - not an IP fragment
>    * - no LLS polling in progress
>    */
>   if (!mlx4_en_cq_ll_polling(cq) &&
>       (dev->features & NETIF_F_GRO)) {
> 
> However since we never call skb_mark_napi_id() mlx4_en_cq_ll_polling()
> will never be true.

Currently GRO and LLS are mutually exclusive, and shouldn't be used
together.
I will send a fix to make the code clearer soon.

Thanks for reporting,
Amir

^ permalink raw reply

* Re: [net-next,v2,2/2] bonding: unwind on bond_add_vlan failure
From: Veaceslav Falico @ 2013-08-06 12:11 UTC (permalink / raw)
  To: nikolay; +Cc: netdev, andy, fubar, davem
In-Reply-To: <1375785616-5349-3-git-send-email-nikolay@redhat.com>

On Tue, Aug 06, 2013 at 12:40:16PM +0200, nikolay@redhat.com wrote:
>From: Nikolay Aleksandrov <Nikolay Aleksandrov nikolay@redhat.com>
>
>In case of bond_add_vlan() failure currently we'll have the vlan's
>refcnt bumped up in all slaves, but it will never go down because it
>failed to get added to the bond, so properly unwind the added vlan if
>bond_add_vlan fails.
>
>Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>

Acked-by: Veaceslav Falico <vfalico@redhat.com>

>
>---
>v2: no changes
>
> drivers/net/bonding/bond_main.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
>index 78b0aeb..4264a76 100644
>--- a/drivers/net/bonding/bond_main.c
>+++ b/drivers/net/bonding/bond_main.c
>@@ -455,13 +455,13 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev,
> 	if (res) {
> 		pr_err("%s: Error: Failed to add vlan id %d\n",
> 		       bond_dev->name, vid);
>-		return res;
>+		goto unwind;
> 	}
>
> 	return 0;
>
> unwind:
>-	/* unwind from head to the slave that failed */
>+	/* unwind from the slave that failed */
> 	bond_for_each_slave_continue_reverse(bond, slave)
> 		vlan_vid_del(slave->dev, proto, vid);
>

^ permalink raw reply

* Re: [net-next, v2, 1/2] bonding: change the bond's vlan syncing functions with the standard ones
From: Veaceslav Falico @ 2013-08-06 12:11 UTC (permalink / raw)
  To: nikolay; +Cc: netdev, andy, fubar, davem
In-Reply-To: <1375785616-5349-2-git-send-email-nikolay@redhat.com>

On Tue, Aug 06, 2013 at 12:40:15PM +0200, nikolay@redhat.com wrote:
>From: Nikolay Aleksandrov <Nikolay Aleksandrov nikolay@redhat.com>
>
>Now we have vlan_vids_add/del_by_dev() which serve the same purpose as
>bond's bond_add/del_vlans_on_slave() with the good side effect of
>reverting the changes if one of the additions fails.
>There's only 1 change in the behaviour of enslave: if adding of the
>vlans to the slave fails, we'll fail the enslaving because otherwise we
>might delete some vlan that wasn't added by the bonding.
>The only way this may happen is with ENOMEM currently, so we're in trouble
>anyway.
>
>Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>

Acked-by: Veaceslav Falico <vfalico@redhat.com>

>
>---
>v2: Fail enslavement with an error message if syncing of vlans fails
>because otherwise we might delete vlans that weren't added by us.
>
> drivers/net/bonding/bond_main.c | 37 +++++++------------------------------
> 1 file changed, 7 insertions(+), 30 deletions(-)
>
>diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
>index 5697043..78b0aeb 100644
>--- a/drivers/net/bonding/bond_main.c
>+++ b/drivers/net/bonding/bond_main.c
>@@ -493,33 +493,6 @@ static int bond_vlan_rx_kill_vid(struct net_device *bond_dev,
> 	return 0;
> }
>
>-static void bond_add_vlans_on_slave(struct bonding *bond, struct net_device *slave_dev)
>-{
>-	struct vlan_entry *vlan;
>-	int res;
>-
>-	list_for_each_entry(vlan, &bond->vlan_list, vlan_list) {
>-		res = vlan_vid_add(slave_dev, htons(ETH_P_8021Q),
>-				   vlan->vlan_id);
>-		if (res)
>-			pr_warning("%s: Failed to add vlan id %d to device %s\n",
>-				   bond->dev->name, vlan->vlan_id,
>-				   slave_dev->name);
>-	}
>-}
>-
>-static void bond_del_vlans_from_slave(struct bonding *bond,
>-				      struct net_device *slave_dev)
>-{
>-	struct vlan_entry *vlan;
>-
>-	list_for_each_entry(vlan, &bond->vlan_list, vlan_list) {
>-		if (!vlan->vlan_id)
>-			continue;
>-		vlan_vid_del(slave_dev, htons(ETH_P_8021Q), vlan->vlan_id);
>-	}
>-}
>-
> /*------------------------------- Link status -------------------------------*/
>
> /*
>@@ -1630,7 +1603,11 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
> 		dev_mc_add(slave_dev, lacpdu_multicast);
> 	}
>
>-	bond_add_vlans_on_slave(bond, slave_dev);
>+	if (vlan_vids_add_by_dev(slave_dev, bond_dev)) {
>+		pr_err("%s: Error: Couldn't add bond vlan ids to %s\n",
>+		       bond_dev->name, slave_dev->name);
>+		goto err_close;
>+	}
>
> 	write_lock_bh(&bond->lock);
>
>@@ -1806,7 +1783,7 @@ err_detach:
> 	if (!USES_PRIMARY(bond->params.mode))
> 		bond_hw_addr_flush(bond_dev, slave_dev);
>
>-	bond_del_vlans_from_slave(bond, slave_dev);
>+	vlan_vids_del_by_dev(slave_dev, bond_dev);
> 	write_lock_bh(&bond->lock);
> 	bond_detach_slave(bond, new_slave);
> 	if (bond->primary_slave == new_slave)
>@@ -2002,7 +1979,7 @@ static int __bond_release_one(struct net_device *bond_dev,
> 	/* must do this from outside any spinlocks */
> 	bond_destroy_slave_symlinks(bond_dev, slave_dev);
>
>-	bond_del_vlans_from_slave(bond, slave_dev);
>+	vlan_vids_del_by_dev(slave_dev, bond_dev);
>
> 	/* If the mode USES_PRIMARY, then this cases was handled above by
> 	 * bond_change_active_slave(..., NULL)

^ permalink raw reply

* Re: [PATCH v3 3/4] USBNET: support DMA SG
From: Oliver Neukum @ 2013-08-06 12:08 UTC (permalink / raw)
  To: Ming Lei
  Cc: David S. Miller, Greg Kroah-Hartman, Sarah Sharp, netdev,
	linux-usb, Eric Dumazet, Ben Hutchings, Grant Grundler,
	Freddy Xin, Alan Stern
In-Reply-To: <1375750370-18194-4-git-send-email-ming.lei@canonical.com>

On Tue, 2013-08-06 at 08:52 +0800, Ming Lei wrote:
> This patch introduces support of DMA SG if the USB host controller
> which usbnet device is attached to is capable of building packet from
> discontinuous buffers.
> 
> The patch supports passing the skb fragment buffers to usb stack directly
> via urb->sg.
> 
> Cc: Eric Dumazet <eric.dumazet@gmail.com>
> Cc: Ben Hutchings <bhutchings@solarflare.com>
> Cc: Grant Grundler <grundler@google.com>
> Cc: Freddy Xin <freddy@asix.com.tw>
> Cc: Oliver Neukum <oneukum@suse.de>
> Cc: Alan Stern <stern@rowland.harvard.edu>
> Signed-off-by: Ming Lei <ming.lei@canonical.com>
Acked-by: Oliver Neukum <oneukum@suse.de>

^ permalink raw reply

* Re: Bug: alx: Atheros AR8131/AR8151/AR8152/AR8161 Ethernet driver
From: Eric Dumazet @ 2013-08-06 12:07 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Kinley Dorji, Stephen Hemminger, netdev
In-Reply-To: <1375788758.8219.13.camel@jlt4.sipsolutions.net>

On Tue, 2013-08-06 at 13:32 +0200, Johannes Berg wrote:

> I don't. There are some stats in the original code at
> https://github.com/erikarn/alx, but I removed them because I didn't
> really understand what was going on and don't really care much for the
> stats in the system I'm using this device on - and based on the driver
> I'm not sure I'd use the chip for 'serious' work anyway :)
> 

OK, their code seems clean and should be copied/pasted.


> FWIW, it had ndo_get_stats() but was updating the netdev->stats from
> that handler and then returning them, which seemed a bit questionable.
> 

Its fine, as updates of each field are atomic (unsigned long)

^ permalink raw reply

* [PATCH net-next] tcp:elapsed variable calculated twice while keepalive working
From: Tingwei Liu @ 2013-08-06 12:05 UTC (permalink / raw)
  To: netdev, kuznet, davem; +Cc: Tingwei Liu

---
 net/ipv4/tcp_timer.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 4b85e6f..03091d9 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -591,11 +591,11 @@ static void tcp_keepalive_timer (unsigned long data)
 	if (!sock_flag(sk, SOCK_KEEPOPEN) || sk->sk_state == TCP_CLOSE)
 		goto out;
 
-	elapsed = keepalive_time_when(tp);
-
 	/* It is alive without keepalive 8) */
-	if (tp->packets_out || tcp_send_head(sk))
+	if (tp->packets_out || tcp_send_head(sk)) {
+		elapsed = keepalive_time_when(tp);
 		goto resched;
+	}
 
 	elapsed = keepalive_time_elapsed(tp);
 
-- 
1.6.0.2

^ permalink raw reply related

* Re: [patch] net: remove an unneeded check
From: Dan Carpenter @ 2013-08-06 12:04 UTC (permalink / raw)
  To: Rustad, Mark D
  Cc: David S. Miller, Alexey Kuznetsov, James Morris,
	Hideaki YOSHIFUJI, Patrick McHardy,
	<netdev@vger.kernel.org>,
	<kernel-janitors@vger.kernel.org>
In-Reply-To: <F3E01662-FC33-4FB8-AF30-47DF44252296@intel.com>

On Mon, Aug 05, 2013 at 06:18:01PM +0000, Rustad, Mark D wrote:
> On Jul 29, 2013, at 12:15 PM, Dan Carpenter <dan.carpenter@oracle.com> wrote:
> 
> > "ifa->ifa_label" is an array inside the in_ifaddr struct.  It can never
> > be NULL so we can remove this check.
> > 
> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> > 
> > diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
> > index 8d48c39..1b7f7ae 100644
> > --- a/net/ipv4/devinet.c
> > +++ b/net/ipv4/devinet.c
> > @@ -1124,10 +1124,7 @@ static int inet_gifconf(struct net_device *dev, char __user *buf, int len)
> > 		if (len < (int) sizeof(ifr))
> > 			break;
> > 		memset(&ifr, 0, sizeof(struct ifreq));
> > -		if (ifa->ifa_label)
> 
> Is there any possibility that this was meant to check ifa->ifa_label[0]?

It has been this way for almost 16 years and no one has complained.
I should have put that into the changelog though, you are right.

regards,
dan carpenter

^ permalink raw reply

* Re: Linux IPV6_SUBTREES not functioning
From: Hannes Frederic Sowa @ 2013-08-06 11:43 UTC (permalink / raw)
  To: Teco Boot, netdev, boutier
In-Reply-To: <20130806085307.GD2941@order.stressinduktion.org>

On Tue, Aug 06, 2013 at 10:53:07AM +0200, Hannes Frederic Sowa wrote:
> On Tue, Aug 06, 2013 at 10:46:43AM +0200, Teco Boot wrote:
> > Hi Hannes,
> > 
> > Yes problems with real traffic, with CORE (open source mobile ad hoc network emulator currently maintained by NRL and Boeing).
> > Mattieu had same problems and therefore stepped to the ip rule. Most, if not all, take this ip rule hack. But then, for each and every source prefix a complete routing table is needed. This is a bad thing and shall be avoided.
> > 
> > Do you think it should work? Have it working? If so, I want to reproduce.
> 
> Definitely, that should work. I can reproduce the same output with your
> script on net-next and am looking how to fix this. This could take a
> bit because I have another patch in my pipeline for testing. But maybe
> it is just a nit. ;)

Could you test if this patch fixes your problems? It does fix the output of
your script at least. ;)

diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index ed828d6..2eaf4a8 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -993,8 +993,12 @@ static struct fib6_node * fib6_lookup_1(struct fib6_node *root,
 
 			if (ipv6_prefix_equal(&key->addr, args->addr, key->plen)) {
 #ifdef CONFIG_IPV6_SUBTREES
-				if (fn->subtree)
-					fn = fib6_lookup_1(fn->subtree, args + 1);
+				if (fn->subtree) {
+					struct fib6_node *sfn;
+					sfn = fib6_lookup_1(fn->subtree,
+							    args + 1);
+					fn = sfn ? : fn;
+				}
 #endif
 				if (!fn || fn->fn_flags & RTN_RTINFO)
 					return fn;

^ permalink raw reply related

* [PATCH] rndis_host: do not use stack as URB transfer_buffer
From: Jussi Kivilinna @ 2013-08-06 11:42 UTC (permalink / raw)
  To: netdev-u79uwXL29TY76Z2rM5mHXA; +Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA

Patch fixes rndis_host not to use stack as URB transfer_buffer. URB buffers need
to be DMA-able, which stack is not.

Patch is only compile tested.

Cc: stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Signed-off-by: Jussi Kivilinna <jussi.kivilinna-X3B1VOXEql0@public.gmane.org>
---
 drivers/net/usb/rndis_host.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index cc49aac..2f232c3 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -105,7 +105,6 @@ static void rndis_msg_indicate(struct usbnet *dev, struct rndis_indicate *msg,
 int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf, int buflen)
 {
 	struct cdc_state	*info = (void *) &dev->data;
-	struct usb_cdc_notification notification;
 	int			master_ifnum;
 	int			retval;
 	int			partial;
@@ -140,12 +139,17 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf, int buflen)
 	/* Some devices don't respond on the control channel until
 	 * polled on the status channel, so do that first. */
 	if (dev->driver_info->data & RNDIS_DRIVER_DATA_POLL_STATUS) {
+		struct usb_cdc_notification *notification;
+		notification = kmalloc(sizeof(*notification), GFP_KERNEL);
+		if (!notification)
+			return -ENOMEM;
 		retval = usb_interrupt_msg(
 			dev->udev,
 			usb_rcvintpipe(dev->udev,
 				       dev->status->desc.bEndpointAddress),
-			&notification, sizeof(notification), &partial,
+			notification, sizeof(*notification), &partial,
 			RNDIS_CONTROL_TIMEOUT_MS);
+		kfree(notification);
 		if (unlikely(retval < 0))
 			return retval;
 	}

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox