* Re: [patch] cassini: fix off by one
From: David Miller @ 2010-03-03 9:07 UTC (permalink / raw)
To: error27
Cc: netdev, adobriyan, akpm, yanghy, kaber, linux-kernel,
kernel-janitors
In-Reply-To: <20100303082241.GA32640@bicker>
From: Dan Carpenter <error27@gmail.com>
Date: Wed, 3 Mar 2010 11:22:41 +0300
> There are only 6 link_modes.
>
> Signed-off-by: Dan Carpenter <error27@gmail.com>
Applied.
^ permalink raw reply
* Re: [net-next PATCH] be2net: download NCSI section during firmware update
From: David Miller @ 2010-03-03 9:07 UTC (permalink / raw)
To: sarveshwarb; +Cc: netdev
In-Reply-To: <20100303083718.GA27402@serverengines.com>
From: Sarveshwar Bandi <sarveshwarb@serverengines.com>
Date: Wed, 3 Mar 2010 14:07:28 +0530
> Adding code to update NCSI section while updating firmware on the controller.
> Signed-off-by: Sarveshwar Bandi <sarveshwarb@serverengines.com>
Applied.
^ permalink raw reply
* Re: [patch] cpmac: use after free
From: David Miller @ 2010-03-03 9:07 UTC (permalink / raw)
To: jpirko; +Cc: error27, netdev, florian, ralf, weil, kernel-janitors
In-Reply-To: <20100303085957.GA2961@psychotron.lab.eng.brq.redhat.com>
From: Jiri Pirko <jpirko@redhat.com>
Date: Wed, 3 Mar 2010 09:59:58 +0100
> Wed, Mar 03, 2010 at 09:46:10AM CET, error27@gmail.com wrote:
>>The original code dereferenced "cpmac_mii" after calling
>>"mdiobus_free(cpmac_mii);"
>>
>>Signed-off-by: Dan Carpenter <error27@gmail.com>
>>---
>>Found by a static checker and not tested. Sorry. :/
>>
>>diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c
>>index b85c81f..9d48942 100644
>>--- a/drivers/net/cpmac.c
>>+++ b/drivers/net/cpmac.c
>>@@ -1290,8 +1290,8 @@ void __devexit cpmac_exit(void)
>> {
>> platform_driver_unregister(&cpmac_driver);
>> mdiobus_unregister(cpmac_mii);
>>- mdiobus_free(cpmac_mii);
>> iounmap(cpmac_mii->priv);
>>+ mdiobus_free(cpmac_mii);
>> }
>>
>> module_init(cpmac_init);
>
> Looks good. Thanks.
>
> Reviewed-by: Jiri Pirko <jpirko@redhat.com>
Applied.
^ permalink raw reply
* Re: [RFC PATCH]xfrm: fix perpetual bundles
From: David Miller @ 2010-03-03 9:07 UTC (permalink / raw)
To: hadi
Cc: steffen.klassert, herbert, kaber, yoshfuji, nakam, eric.dumazet,
netdev
In-Reply-To: <1267577222.3540.1.camel@bigi>
From: jamal <hadi@cyberus.ca>
Date: Tue, 02 Mar 2010 19:47:02 -0500
>
>> Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
>
> tested - Looks good.
> Acked-by: Jamal Hadi Salim <hadi@cyberus.ca>
Applied and queued up for -stable, thanks everyone.
^ permalink raw reply
* Re: [PATCH] Bluetooth: Use single_open() for inquiry cache within debugfs
From: David Miller @ 2010-03-03 9:07 UTC (permalink / raw)
To: marcel; +Cc: netdev
In-Reply-To: <1267580903-30946-1-git-send-email-marcel@holtmann.org>
From: Marcel Holtmann <marcel@holtmann.org>
Date: Tue, 2 Mar 2010 17:48:23 -0800
> The inquiry cache information in debugfs should be using seq_file support
> and not allocating memory on the stack for the string. Since the usage of
> these information is really seldom, using single_open() for it is good
> enough.
>
> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Applied, thanks Marcel.
I guess we'll never figure out why my patch didn't work ;-)
^ permalink raw reply
* Re: [net-2.6 PATCH] af_packet: move strict addr_len check right before dev_[mc/unicast]_[add/del]
From: David Miller @ 2010-03-03 9:06 UTC (permalink / raw)
To: jpirko-H+wXaHxf7aLQT0dZR+AlfA
Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA,
tcpdump-workers-YE1jQ5a0g24KACXWX4p+q9i2O/JbrIOy,
proski-mXXj517/zsQ
In-Reply-To: <20100303064001.GB2648-YzwxZg+R7et1/kRsl7OVgNvLeJWuRmrY@public.gmane.org>
From: Jiri Pirko <jpirko-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Date: Wed, 3 Mar 2010 07:40:01 +0100
> Subject: [net-2.6 PATCH] af_packet: move strict addr_len check right before dev_[mc/unicast]_[add/del]
>
> My previous patch 914c8ad2d18b62ad1420f518c0cab0b0b90ab308 incorrectly changed
> the length check in packet_mc_add to be more strict. The problem is that
> userspace is not filling this field (and it stays zeroed) in case of setting
> PACKET_MR_PROMISC or PACKET_MR_ALLMULTI. So move the strict check to the point
> in path where the addr_len must be set correctly.
>
> Signed-off-by: Jiri Pirko <jpirko-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Applied.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" 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: [net-2.6 PATCH] af_packet: move strict addr_len check right before dev_[mc/unicast]_[add/del]
From: David Miller @ 2010-03-03 9:06 UTC (permalink / raw)
To: jpirko-H+wXaHxf7aLQT0dZR+AlfA
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
tcpdump-workers-YE1jQ5a0g24KACXWX4p+q9i2O/JbrIOy,
proski-mXXj517/zsQ, netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20100303090512.GB2961-YzwxZg+R7evMbnheQZGK0N5OCZ2W11yPFxja6HXR22MAvxtiuMwx3w@public.gmane.org>
From: Jiri Pirko <jpirko-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Date: Wed, 3 Mar 2010 10:05:13 +0100
> Wed, Mar 03, 2010 at 07:40:01AM CET, jpirko-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org wrote:
>>Subject: [net-2.6 PATCH] af_packet: move strict addr_len check right before dev_[mc/unicast]_[add/del]
>
> Dave please apply this against net-next-2.6. I see that 914c8ad2d18b is still not in
> net-2.6.
Would you relax?
I just rebased net-2.6 and net-next-2.6 after Linus took in my
changes and I just applied your regression fix to my tree and
was about to let you know I applied it.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" 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: [net-2.6 PATCH] af_packet: move strict addr_len check right before dev_[mc/unicast]_[add/del]
From: Jiri Pirko @ 2010-03-03 9:05 UTC (permalink / raw)
To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
tcpdump-workers-YE1jQ5a0g24KACXWX4p+q9i2O/JbrIOy,
proski-mXXj517/zsQ, netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20100303064001.GB2648-YzwxZg+R7et1/kRsl7OVgNvLeJWuRmrY@public.gmane.org>
Wed, Mar 03, 2010 at 07:40:01AM CET, jpirko-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org wrote:
>Subject: [net-2.6 PATCH] af_packet: move strict addr_len check right before dev_[mc/unicast]_[add/del]
Dave please apply this against net-next-2.6. I see that 914c8ad2d18b is still not in
net-2.6.
Thanks a lot
Jirka
>
>My previous patch 914c8ad2d18b62ad1420f518c0cab0b0b90ab308 incorrectly changed
>the length check in packet_mc_add to be more strict. The problem is that
>userspace is not filling this field (and it stays zeroed) in case of setting
>PACKET_MR_PROMISC or PACKET_MR_ALLMULTI. So move the strict check to the point
>in path where the addr_len must be set correctly.
>
>Signed-off-by: Jiri Pirko <jpirko-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
>
>diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
>index 031a5e6..1612d41 100644
>--- a/net/packet/af_packet.c
>+++ b/net/packet/af_packet.c
>@@ -1688,6 +1688,8 @@ static int packet_dev_mc(struct net_device *dev, struct packet_mclist *i,
> {
> switch (i->type) {
> case PACKET_MR_MULTICAST:
>+ if (i->alen != dev->addr_len)
>+ return -EINVAL;
> if (what > 0)
> return dev_mc_add(dev, i->addr, i->alen, 0);
> else
>@@ -1700,6 +1702,8 @@ static int packet_dev_mc(struct net_device *dev, struct packet_mclist *i,
> return dev_set_allmulti(dev, what);
> break;
> case PACKET_MR_UNICAST:
>+ if (i->alen != dev->addr_len)
>+ return -EINVAL;
> if (what > 0)
> return dev_unicast_add(dev, i->addr);
> else
>@@ -1734,7 +1738,7 @@ static int packet_mc_add(struct sock *sk, struct packet_mreq_max *mreq)
> goto done;
>
> err = -EINVAL;
>- if (mreq->mr_alen != dev->addr_len)
>+ if (mreq->mr_alen > dev->addr_len)
> goto done;
>
> err = -ENOBUFS;
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" 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: [PATCH V2 2/7] tcp: use limited socket backlog
From: Zhu Yi @ 2010-03-03 9:06 UTC (permalink / raw)
To: Eric Dumazet
Cc: netdev@vger.kernel.org, David S. Miller, Alexey Kuznetsov,
Pekka Savola (ipv6), Patrick McHardy
In-Reply-To: <1267606433.2997.4.camel@edumazet-laptop>
On Wed, 2010-03-03 at 16:53 +0800, Eric Dumazet wrote:
> > @@ -1682,8 +1682,10 @@ process:
> > if (!tcp_prequeue(sk, skb))
> > ret = tcp_v4_do_rcv(sk, skb);
> > }
> > - } else
> > - sk_add_backlog(sk, skb);
> > + } else if (sk_add_backlog_limited(sk, skb)) {
> > + bh_unlock_sock(sk);
> > + goto discard_and_relse;
> > + }
> > bh_unlock_sock(sk);
> >
> > sock_put(sk);
>
> So no counter is incremented to reflect this loss, sk->sk_drops (local
> counter) or SNMP ?
I simply follow how the code is originally written. As you can see,
tcp_v4_do_rcv() doesn't always do so. And in the backlog queuing place,
we don't even bother to check.
Thanks,
-yi
^ permalink raw reply
* Re: [patch] cpmac: use after free
From: Jiri Pirko @ 2010-03-03 8:59 UTC (permalink / raw)
To: Dan Carpenter
Cc: netdev, Florian Fainelli, David S. Miller, Ralf Baechle,
Stefan Weil, kernel-janitors
In-Reply-To: <20100303084610.GH5086@bicker>
Wed, Mar 03, 2010 at 09:46:10AM CET, error27@gmail.com wrote:
>The original code dereferenced "cpmac_mii" after calling
>"mdiobus_free(cpmac_mii);"
>
>Signed-off-by: Dan Carpenter <error27@gmail.com>
>---
>Found by a static checker and not tested. Sorry. :/
>
>diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c
>index b85c81f..9d48942 100644
>--- a/drivers/net/cpmac.c
>+++ b/drivers/net/cpmac.c
>@@ -1290,8 +1290,8 @@ void __devexit cpmac_exit(void)
> {
> platform_driver_unregister(&cpmac_driver);
> mdiobus_unregister(cpmac_mii);
>- mdiobus_free(cpmac_mii);
> iounmap(cpmac_mii->priv);
>+ mdiobus_free(cpmac_mii);
> }
>
> module_init(cpmac_init);
Looks good. Thanks.
Reviewed-by: Jiri Pirko <jpirko@redhat.com>
^ permalink raw reply
* Re: [PATCH V2 1/7] net: add limit for socket backlog
From: Zhu Yi @ 2010-03-03 9:01 UTC (permalink / raw)
To: David Miller
Cc: netdev@vger.kernel.org, acme@ghostprotocols.net,
pekkas@netcore.fi, kaber@trash.net, vladislav.yasevich@hp.com,
sri@us.ibm.com, jon.maloy@ericsson.com,
allan.stephens@windriver.com, andrew.hendry@gmail.com,
eric.dumazet@gmail.com
In-Reply-To: <20100303.005428.99358038.davem@davemloft.net>
On Wed, 2010-03-03 at 16:54 +0800, David Miller wrote:
>
> Please don't selectively CC: me only on some of the patches
> in a series that's meant to go into the networking tree.
>
> I handle patch submissions by deleting the copies from my inbox that
> come to me through the mailing list, so if you don't CC: me on all
> of them I'll lose some of them.
OK. The series is not final. I'll do so next time.
Thanks,
-yi
^ permalink raw reply
* Re: 2.6.33 dies on modprobe
From: Américo Wang @ 2010-03-03 8:58 UTC (permalink / raw)
To: Américo Wang, linux-kernel, Linux Kernel Network Developers
Cc: Greg Kroah-Hartman
In-Reply-To: <20100301090708.GF17929@forwiss.uni-passau.de>
[-- Attachment #1: Type: text/plain, Size: 1620 bytes --]
On Mon, Mar 1, 2010 at 5:07 PM, M G Berberich
<berberic@fmi.uni-passau.de> wrote:
> Hello,
>
> Am Montag, den 01. März schrieb Américo Wang:
>> On Mon, Mar 1, 2010 at 6:12 AM, M G Berberich
>> <berberic@fmi.uni-passau.de> wrote:
>
>> > I tried to build a 2.6.33 kernel but on boot it dies on modprobe
>> > (kernel-Oops). This might be the result of faulty config, but I'm
>> > totaly clueless what's the fault.
>> >
>> > The kernel starts up fine and mounts the root-filesystem, but then
>> > dies on the first modprobe executed. I can boot it with init=/bin/bash
>> > and get a working bash (until I do modprobe on any module).
>> >
>> > System is a Gigabyte M55S-S3 rev 2.0 (nForce 550) with an AMD Athlon64
>> > X2 5000+ and amd64-kernel architecture. kernel-sources are from
>> > kernel.org.
>
>> It seems something is wrong with forcedeth code or PCI code.
>> Adding some Cc's.
>
> I don't think it's forcedeth. forcedeth just happens to be the first
> module that get's loaded in startup. It crashes with any other module
> too (I tried ohci_hcd).
>
Ok, below is my patch, I am not sure it could fix the BUG for you,
but it could fix the WARNING. But perhaps they are related.
Please give it a try.
--------------------->
It looks really odd that we do class_put() in non-failure path of
class_register(), shouldn't it be in class_unregister()?
In fact we have this problem long time ago, since commit 7c71448b,
but a recent change (commit 18d19c964) uncovers this.
Signed-off-by: WANG Cong <xiyou.wangcong@gmail.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
---
[-- Attachment #2: drivers-base-class_c-move-class_put.diff --]
[-- Type: text/plain, Size: 621 bytes --]
diff --git a/drivers/base/class.c b/drivers/base/class.c
index 6e2c3b0..ccf312d 100644
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -192,7 +192,6 @@ int __class_register(struct class *cls, struct lock_class_key *key)
return error;
}
error = add_class_attrs(class_get(cls));
- class_put(cls);
return error;
}
EXPORT_SYMBOL_GPL(__class_register);
@@ -200,6 +199,7 @@ EXPORT_SYMBOL_GPL(__class_register);
void class_unregister(struct class *cls)
{
pr_debug("device class '%s': unregistering\n", cls->name);
+ class_put(cls);
remove_class_attrs(cls);
kset_unregister(&cls->p->class_subsys);
}
^ permalink raw reply related
* Re: [PATCH 1/8] net: add limit for socket backlog
From: Zhu Yi @ 2010-03-03 8:59 UTC (permalink / raw)
To: Eric Dumazet
Cc: netdev@vger.kernel.org, David Miller, Arnaldo Carvalho de Melo,
Pekka Savola (ipv6), Patrick McHardy, Vlad Yasevich,
Sridhar Samudrala, Per Liden, Jon Maloy, Allan Stephens,
Andrew Hendry
In-Reply-To: <1267606075.2997.1.camel@edumazet-laptop>
On Wed, 2010-03-03 at 16:47 +0800, Eric Dumazet wrote:
> Le mercredi 03 mars 2010 à 16:14 +0800, Zhu Yi a écrit :
>
> > I want to provide a method for protocols to set its sock backlog limit.
> > For example, the sctp_rmem is 373500 (sysctl_sctp_rmem[1]) which is
> > larger than (sysctl_rmem_default << 1). But I'm not very sure about the
> > actual required size. So I didn't make it in the sctp patch. What do you
> > think?
>
> I think this is not about bug fixes, but followup patches.
>
> We should first address the bug asap, then do further refinements later.
I'm trying not to break the already working protocols which assume the
backlog is unlimited. In your example, apparently define MINBACKLOG to
2048 is too small. Then what should it be? I'm waiting for responses
from individual protocol maintainers. If all of them feel
(sysctl_rmem_default << 1) is OK, I can remove the .limit and use it
instead.
Thanks,
-yi
^ permalink raw reply
* Re: [RFC][ PATCH 0/3] vhost-net: Add mergeable RX buffer support to vhost-net
From: David Stevens @ 2010-03-03 8:54 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: kvm, netdev, rusty, virtualization
In-Reply-To: <20100303075432.GA14034@redhat.com>
"Michael S. Tsirkin" <mst@redhat.com> wrote on 03/02/2010 11:54:32 PM:
> On Tue, Mar 02, 2010 at 04:20:03PM -0800, David Stevens wrote:
> > These patches add support for mergeable receive buffers to
> > vhost-net, allowing it to use multiple virtio buffer heads for a
single
> > receive packet.
> > +-DLS
> >
> >
> > Signed-off-by: David L Stevens <dlstevens@us.ibm.com>
>
> Do you have performance numbers (both with and without mergeable buffers
> in guest)?
Michael,
Nothing formal. I did some TCP single-stream throughput tests
and was seeing 20-25% improvement on a laptop (ie, low-end hardware).
That actually surprised me; I'd think it'd be about the same, except
maybe in a test that has mixed packet sizes. Comparisons with the
net-next kernel these patches are for showed only ~10% improvement.
But I also see a lot of variability both among different
configurations and with the same configuration on different runs.
So, I don't feel like those numbers are very solid, and I haven't
yet done any tests on bigger hardware.
2 notes: I have a modified version of qemu to get the VHOST_FEATURES
flags, including the mergeable RX bufs flag, passed to the guest; I'll
be working with your current qemu git trees next, if any changes are
needed to support it there.
Second, I've found a missing initialization in the patches I
sent on the list, so I'll send an updated patch 2 with the fix, and
qemu patches when they are ready (plus any code-review comments
incorporated).
+-DLS
^ permalink raw reply
* Re: [PATCH V2 1/7] net: add limit for socket backlog
From: David Miller @ 2010-03-03 8:54 UTC (permalink / raw)
To: yi.zhu
Cc: netdev, acme, pekkas, kaber, vladislav.yasevich, sri, jon.maloy,
allan.stephens, andrew.hendry, eric.dumazet
In-Reply-To: <1267605389-7369-1-git-send-email-yi.zhu@intel.com>
Please don't selectively CC: me only on some of the patches
in a series that's meant to go into the networking tree.
I handle patch submissions by deleting the copies from my inbox that
come to me through the mailing list, so if you don't CC: me on all
of them I'll lose some of them.
Thanks.
^ permalink raw reply
* Re: [PATCH V2 2/7] tcp: use limited socket backlog
From: Eric Dumazet @ 2010-03-03 8:53 UTC (permalink / raw)
To: Zhu Yi
Cc: netdev, David S. Miller, Alexey Kuznetsov, Pekka Savola (ipv6),
Patrick McHardy
In-Reply-To: <1267605389-7369-2-git-send-email-yi.zhu@intel.com>
Le mercredi 03 mars 2010 à 16:36 +0800, Zhu Yi a écrit :
> Make tcp adapt to the limited socket backlog change.
>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
> Cc: "Pekka Savola (ipv6)" <pekkas@netcore.fi>
> Cc: Patrick McHardy <kaber@trash.net>
> Signed-off-by: Zhu Yi <yi.zhu@intel.com>
> ---
> net/ipv4/tcp_ipv4.c | 6 ++++--
> net/ipv6/tcp_ipv6.c | 6 ++++--
> 2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
> index c3588b4..4baf194 100644
> --- a/net/ipv4/tcp_ipv4.c
> +++ b/net/ipv4/tcp_ipv4.c
> @@ -1682,8 +1682,10 @@ process:
> if (!tcp_prequeue(sk, skb))
> ret = tcp_v4_do_rcv(sk, skb);
> }
> - } else
> - sk_add_backlog(sk, skb);
> + } else if (sk_add_backlog_limited(sk, skb)) {
> + bh_unlock_sock(sk);
> + goto discard_and_relse;
> + }
> bh_unlock_sock(sk);
>
> sock_put(sk);
So no counter is incremented to reflect this loss, sk->sk_drops (local
counter) or SNMP ?
^ permalink raw reply
* Re: TCP Appropriate Byte Counting per default off
From: David Miller @ 2010-03-03 8:52 UTC (permalink / raw)
To: zimmermann; +Cc: ilpo.jarvinen, netdev
In-Reply-To: <A7D42088-84DC-4991-A8AD-E4000B2974DA@nets.rwth-aachen.de>
From: Alexander Zimmermann <zimmermann@nets.rwth-aachen.de>
Date: Wed, 03 Mar 2010 09:21:44 +0100
> I wonder why ABC is off per default? What are the reasons?
> Should we turn it on per default?
Is it so much work to do some research and look at what
was said when the default was changed to off?
Really?
There are also relevant discussions on this mailing list
during the time period surrounding when this change went
in, Sept 13th, 2006
commit b3a8a40da5751525936c88f60bbc6a007f9eee37
Author: Stephen Hemminger <shemminger@osdl.org>
Date: Wed Sep 13 19:51:02 2006 -0700
[TCP]: Turn ABC off.
Turn Appropriate Byte Count off by default because it unfairly
penalizes applications that do small writes. Add better documentation
to describe what it is so users will understand why they might want to
turn it on.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 3e0c017..90ed781 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -102,9 +102,15 @@ inet_peer_gc_maxtime - INTEGER
TCP variables:
tcp_abc - INTEGER
- Controls Appropriate Byte Count defined in RFC3465. If set to
- 0 then does congestion avoid once per ack. 1 is conservative
- value, and 2 is more agressive.
+ Controls Appropriate Byte Count (ABC) defined in RFC3465.
+ ABC is a way of increasing congestion window (cwnd) more slowly
+ in response to partial acknowledgments.
+ Possible values are:
+ 0 increase cwnd once per acknowledgment (no ABC)
+ 1 increase cwnd once per acknowledgment of full sized segment
+ 2 allow increase cwnd by two if acknowledgment is
+ of two segments to compensate for delayed acknowledgments.
+ Default: 0 (off)
tcp_syn_retries - INTEGER
Number of times initial SYNs for an active TCP connection attempt
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 111ff39..159fa3f 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -89,7 +89,7 @@ int sysctl_tcp_frto;
int sysctl_tcp_nometrics_save;
int sysctl_tcp_moderate_rcvbuf = 1;
-int sysctl_tcp_abc = 1;
+int sysctl_tcp_abc;
#define FLAG_DATA 0x01 /* Incoming frame contained data. */
#define FLAG_WIN_UPDATE 0x02 /* Incoming ACK was a window update. */
^ permalink raw reply related
* Re: TCP Appropriate Byte Counting per default off
From: Ilpo Järvinen @ 2010-03-03 8:48 UTC (permalink / raw)
To: Alexander Zimmermann
Cc: David Miller, ilpo.jarvinen@helsinki.fi J?rvinen, Netdev
In-Reply-To: <A7D42088-84DC-4991-A8AD-E4000B2974DA@nets.rwth-aachen.de>
On Wed, 3 Mar 2010, Alexander Zimmermann wrote:
> Hi David, hi Ilpo,
>
> I wonder why ABC is off per default? What are the reasons?
> Should we turn it on per default?
>
> From algorithmic point of view I see no flaws just
> benefits.
>
> With RFC5681 ABC is recommended.
> OSX uses ABC per default.
As Alexey once put it, ABC is very BSD specific algorithm.
Out of two goals of ABC, protection against split ACKs is achieved in
Linux by other means (see tcp_clean_rtx_queue and flags it gives to
elsewhere). Thus, you can kind of think that we do APC already :-). The
other part, faster increase during slow start, isn't currently done though
it would be relatively simple to implement (I think I even have some,
possibly unfinished, patch to do that lying around somewhere I wrote
someday).
ABC is not that necessary when window is counted in packets. And besides
that, it was found to somewhat hurt small segment flows. There are some
messages in archives in the timeframe ABC was disabled (plus there might
have been some even older than that).
--
i.
^ permalink raw reply
* Re: [PATCH 1/8] net: add limit for socket backlog
From: Eric Dumazet @ 2010-03-03 8:47 UTC (permalink / raw)
To: Zhu Yi
Cc: netdev@vger.kernel.org, David Miller, Arnaldo Carvalho de Melo,
Pekka Savola (ipv6), Patrick McHardy, Vlad Yasevich,
Sridhar Samudrala, Per Liden, Jon Maloy, Allan Stephens,
Andrew Hendry
In-Reply-To: <1267604053.2370.102.camel@debian>
Le mercredi 03 mars 2010 à 16:14 +0800, Zhu Yi a écrit :
> I want to provide a method for protocols to set its sock backlog limit.
> For example, the sctp_rmem is 373500 (sysctl_sctp_rmem[1]) which is
> larger than (sysctl_rmem_default << 1). But I'm not very sure about the
> actual required size. So I didn't make it in the sctp patch. What do you
> think?
I think this is not about bug fixes, but followup patches.
We should first address the bug asap, then do further refinements later.
^ permalink raw reply
* [patch] cpmac: use after free
From: Dan Carpenter @ 2010-03-03 8:46 UTC (permalink / raw)
To: netdev
Cc: Florian Fainelli, David S. Miller, Ralf Baechle, Jiri Pirko,
Stefan Weil, kernel-janitors
The original code dereferenced "cpmac_mii" after calling
"mdiobus_free(cpmac_mii);"
Signed-off-by: Dan Carpenter <error27@gmail.com>
---
Found by a static checker and not tested. Sorry. :/
diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c
index b85c81f..9d48942 100644
--- a/drivers/net/cpmac.c
+++ b/drivers/net/cpmac.c
@@ -1290,8 +1290,8 @@ void __devexit cpmac_exit(void)
{
platform_driver_unregister(&cpmac_driver);
mdiobus_unregister(cpmac_mii);
- mdiobus_free(cpmac_mii);
iounmap(cpmac_mii->priv);
+ mdiobus_free(cpmac_mii);
}
module_init(cpmac_init);
^ permalink raw reply related
* Re: [RFC] ppp: Bridge Control Protocol
From: Denys Fedorysychenko @ 2010-03-03 8:45 UTC (permalink / raw)
To: Stephen Hemminger
Cc: David, David Miller, Paul Mackerras, linux-ppp, bridge, netdev,
dane
In-Reply-To: <20100301145915.2ecaac89@nehalam>
On Tuesday 02 March 2010 00:59:15 Stephen Hemminger wrote:
> This is a port of an old patch to provide BCP support.
> BCP allows bridging PPP tunnels, it useful to do bridging between
> virtualized environments. Original patch was done by
> Dan Eble but was for 2.4.21.
Mikrotik has, when pppd patch will be ready - i can try to test.
P.S. They are also based on Linux, but i guess they have their own version of
patch.
^ permalink raw reply
* [net-next PATCH] be2net: download NCSI section during firmware update
From: Sarveshwar Bandi @ 2010-03-03 8:37 UTC (permalink / raw)
To: netdev; +Cc: davem
Adding code to update NCSI section while updating firmware on the controller.
Signed-off-by: Sarveshwar Bandi <sarveshwarb@serverengines.com>
---
drivers/net/benet/be_hw.h | 5 +++--
drivers/net/benet/be_main.c | 14 +++++++++++---
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/net/benet/be_hw.h b/drivers/net/benet/be_hw.h
index 5ffb149..2d4a4b8 100644
--- a/drivers/net/benet/be_hw.h
+++ b/drivers/net/benet/be_hw.h
@@ -114,8 +114,7 @@ #define IMG_TYPE_FCOE_BIOS 8
#define IMG_TYPE_ISCSI_BACKUP 9
#define IMG_TYPE_FCOE_FW_ACTIVE 10
#define IMG_TYPE_FCOE_FW_BACKUP 11
-#define IMG_TYPE_NCSI_BITFILE 13
-#define IMG_TYPE_NCSI_8051 14
+#define IMG_TYPE_NCSI_FW 13
#define FLASHROM_OPER_FLASH 1
#define FLASHROM_OPER_SAVE 2
@@ -127,6 +126,7 @@ #define FLASH_REDBOOT_IMAGE_MAX_SIZE_g2
#define FLASH_IMAGE_MAX_SIZE_g3 (2097152) /* Max fw image size */
#define FLASH_BIOS_IMAGE_MAX_SIZE_g3 (524288) /* Max OPTION ROM img sz */
#define FLASH_REDBOOT_IMAGE_MAX_SIZE_g3 (1048576) /* Max Redboot image sz */
+#define FLASH_NCSI_IMAGE_MAX_SIZE_g3 (262144) /* Max NSCI image sz */
#define FLASH_NCSI_MAGIC (0x16032009)
#define FLASH_NCSI_DISABLED (0)
@@ -144,6 +144,7 @@ #define FLASH_PXE_BIOS_START_g2
#define FLASH_FCoE_BIOS_START_g2 (524288)
#define FLASH_REDBOOT_START_g2 (0)
+#define FLASH_NCSI_START_g3 (15990784)
#define FLASH_iSCSI_PRIMARY_IMAGE_START_g3 (2097152)
#define FLASH_iSCSI_BACKUP_IMAGE_START_g3 (4194304)
#define FLASH_FCoE_PRIMARY_IMAGE_START_g3 (6291456)
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index a703ed8..22f787f 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -1880,8 +1880,9 @@ static int be_flash_data(struct be_adapt
const u8 *p = fw->data;
struct be_cmd_write_flashrom *req = flash_cmd->va;
struct flash_comp *pflashcomp;
+ int num_comp;
- struct flash_comp gen3_flash_types[8] = {
+ struct flash_comp gen3_flash_types[9] = {
{ FLASH_iSCSI_PRIMARY_IMAGE_START_g3, IMG_TYPE_ISCSI_ACTIVE,
FLASH_IMAGE_MAX_SIZE_g3},
{ FLASH_REDBOOT_START_g3, IMG_TYPE_REDBOOT,
@@ -1897,7 +1898,9 @@ static int be_flash_data(struct be_adapt
{ FLASH_FCoE_PRIMARY_IMAGE_START_g3, IMG_TYPE_FCOE_FW_ACTIVE,
FLASH_IMAGE_MAX_SIZE_g3},
{ FLASH_FCoE_BACKUP_IMAGE_START_g3, IMG_TYPE_FCOE_FW_BACKUP,
- FLASH_IMAGE_MAX_SIZE_g3}
+ FLASH_IMAGE_MAX_SIZE_g3},
+ { FLASH_NCSI_START_g3, IMG_TYPE_NCSI_FW,
+ FLASH_NCSI_IMAGE_MAX_SIZE_g3}
};
struct flash_comp gen2_flash_types[8] = {
{ FLASH_iSCSI_PRIMARY_IMAGE_START_g2, IMG_TYPE_ISCSI_ACTIVE,
@@ -1921,11 +1924,16 @@ static int be_flash_data(struct be_adapt
if (adapter->generation == BE_GEN3) {
pflashcomp = gen3_flash_types;
filehdr_size = sizeof(struct flash_file_hdr_g3);
+ num_comp = 9;
} else {
pflashcomp = gen2_flash_types;
filehdr_size = sizeof(struct flash_file_hdr_g2);
+ num_comp = 8;
}
- for (i = 0; i < 8; i++) {
+ for (i = 0; i < num_comp; i++) {
+ if ((pflashcomp[i].optype == IMG_TYPE_NCSI_FW) &&
+ memcmp(adapter->fw_ver, "3.102.148.0", 11) < 0)
+ continue;
if ((pflashcomp[i].optype == IMG_TYPE_REDBOOT) &&
(!be_flash_redboot(adapter, fw->data,
pflashcomp[i].offset, pflashcomp[i].size,
--
1.4.0
^ permalink raw reply related
* [PATCH V2 7/7] net: backlog functions rename
From: Zhu Yi @ 2010-03-03 8:36 UTC (permalink / raw)
To: netdev; +Cc: Zhu Yi
In-Reply-To: <1267605389-7369-6-git-send-email-yi.zhu@intel.com>
sk_add_backlog -> __sk_add_backlog
sk_add_backlog_limited -> sk_add_backlog
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
include/net/sock.h | 6 +++---
net/core/sock.c | 2 +-
net/dccp/minisocks.c | 2 +-
net/ipv4/tcp_ipv4.c | 2 +-
net/ipv4/tcp_minisocks.c | 2 +-
net/ipv4/udp.c | 2 +-
net/ipv6/tcp_ipv6.c | 2 +-
net/ipv6/udp.c | 4 ++--
net/llc/llc_c_ac.c | 2 +-
net/llc/llc_conn.c | 2 +-
net/sctp/input.c | 4 ++--
net/tipc/socket.c | 2 +-
net/x25/x25_dev.c | 2 +-
13 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/include/net/sock.h b/include/net/sock.h
index 2516d76..170353d 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -592,7 +592,7 @@ static inline int sk_stream_memory_free(struct sock *sk)
}
/* OOB backlog add */
-static inline void sk_add_backlog(struct sock *sk, struct sk_buff *skb)
+static inline void __sk_add_backlog(struct sock *sk, struct sk_buff *skb)
{
if (!sk->sk_backlog.tail) {
sk->sk_backlog.head = sk->sk_backlog.tail = skb;
@@ -604,12 +604,12 @@ static inline void sk_add_backlog(struct sock *sk, struct sk_buff *skb)
}
/* The per-socket spinlock must be held here. */
-static inline int sk_add_backlog_limited(struct sock *sk, struct sk_buff *skb)
+static inline int sk_add_backlog(struct sock *sk, struct sk_buff *skb)
{
if (sk->sk_backlog.len >= max(sk->sk_backlog.limit, sk->sk_rcvbuf << 1))
return -ENOBUFS;
- sk_add_backlog(sk, skb);
+ __sk_add_backlog(sk, skb);
sk->sk_backlog.len += skb->truesize;
return 0;
}
diff --git a/net/core/sock.c b/net/core/sock.c
index 6e22dc9..61a65a2 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -340,7 +340,7 @@ int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested)
rc = sk_backlog_rcv(sk, skb);
mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
- } else if (sk_add_backlog_limited(sk, skb)) {
+ } else if (sk_add_backlog(sk, skb)) {
bh_unlock_sock(sk);
atomic_inc(&sk->sk_drops);
goto discard_and_relse;
diff --git a/net/dccp/minisocks.c b/net/dccp/minisocks.c
index af226a0..0d508c3 100644
--- a/net/dccp/minisocks.c
+++ b/net/dccp/minisocks.c
@@ -254,7 +254,7 @@ int dccp_child_process(struct sock *parent, struct sock *child,
* in main socket hash table and lock on listening
* socket does not protect us more.
*/
- sk_add_backlog(child, skb);
+ __sk_add_backlog(child, skb);
}
bh_unlock_sock(child);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 4baf194..1915f7d 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1682,7 +1682,7 @@ process:
if (!tcp_prequeue(sk, skb))
ret = tcp_v4_do_rcv(sk, skb);
}
- } else if (sk_add_backlog_limited(sk, skb)) {
+ } else if (sk_add_backlog(sk, skb)) {
bh_unlock_sock(sk);
goto discard_and_relse;
}
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index f206ee5..4199bc6 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -728,7 +728,7 @@ int tcp_child_process(struct sock *parent, struct sock *child,
* in main socket hash table and lock on listening
* socket does not protect us more.
*/
- sk_add_backlog(child, skb);
+ __sk_add_backlog(child, skb);
}
bh_unlock_sock(child);
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index e7eb47f..7af756d 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1371,7 +1371,7 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
bh_lock_sock(sk);
if (!sock_owned_by_user(sk))
rc = __udp_queue_rcv_skb(sk, skb);
- else if (sk_add_backlog_limited(sk, skb)) {
+ else if (sk_add_backlog(sk, skb)) {
bh_unlock_sock(sk);
goto drop;
}
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index c4ea9d5..2c378b1 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1740,7 +1740,7 @@ process:
if (!tcp_prequeue(sk, skb))
ret = tcp_v6_do_rcv(sk, skb);
}
- } else if (sk_add_backlog_limited(sk, skb)) {
+ } else if (sk_add_backlog(sk, skb)) {
bh_unlock_sock(sk);
goto discard_and_relse;
}
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 6480491..3c0c9c7 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -583,7 +583,7 @@ static void flush_stack(struct sock **stack, unsigned int count,
bh_lock_sock(sk);
if (!sock_owned_by_user(sk))
udpv6_queue_rcv_skb(sk, skb1);
- else if (sk_add_backlog_limited(sk, skb1)) {
+ else if (sk_add_backlog(sk, skb1)) {
kfree_skb(skb1);
bh_unlock_sock(sk);
goto drop;
@@ -758,7 +758,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
bh_lock_sock(sk);
if (!sock_owned_by_user(sk))
udpv6_queue_rcv_skb(sk, skb);
- else if (sk_add_backlog_limited(sk, skb)) {
+ else if (sk_add_backlog(sk, skb)) {
atomic_inc(&sk->sk_drops);
bh_unlock_sock(sk);
sock_put(sk);
diff --git a/net/llc/llc_c_ac.c b/net/llc/llc_c_ac.c
index 019c780..86d6985 100644
--- a/net/llc/llc_c_ac.c
+++ b/net/llc/llc_c_ac.c
@@ -1437,7 +1437,7 @@ static void llc_process_tmr_ev(struct sock *sk, struct sk_buff *skb)
llc_conn_state_process(sk, skb);
else {
llc_set_backlog_type(skb, LLC_EVENT);
- sk_add_backlog(sk, skb);
+ __sk_add_backlog(sk, skb);
}
}
}
diff --git a/net/llc/llc_conn.c b/net/llc/llc_conn.c
index c0539ff..a12144d 100644
--- a/net/llc/llc_conn.c
+++ b/net/llc/llc_conn.c
@@ -827,7 +827,7 @@ void llc_conn_handler(struct llc_sap *sap, struct sk_buff *skb)
else {
dprintk("%s: adding to backlog...\n", __func__);
llc_set_backlog_type(skb, LLC_PACKET);
- if (sk_add_backlog_limited(sk, skb))
+ if (sk_add_backlog(sk, skb))
goto drop_unlock;
}
out:
diff --git a/net/sctp/input.c b/net/sctp/input.c
index 20e69c3..ca42181 100644
--- a/net/sctp/input.c
+++ b/net/sctp/input.c
@@ -340,7 +340,7 @@ int sctp_backlog_rcv(struct sock *sk, struct sk_buff *skb)
sctp_bh_lock_sock(sk);
if (sock_owned_by_user(sk)) {
- sk_add_backlog(sk, skb);
+ __sk_add_backlog(sk, skb);
backloged = 1;
} else
sctp_inq_push(inqueue, chunk);
@@ -381,7 +381,7 @@ static int sctp_add_backlog(struct sock *sk, struct sk_buff *skb)
else
BUG();
- return sk_add_backlog_limited(sk, skb);
+ return sk_add_backlog(sk, skb);
}
/* Handle icmp frag needed error. */
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 22bfbc3..4b235fc 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -1322,7 +1322,7 @@ static u32 dispatch(struct tipc_port *tport, struct sk_buff *buf)
if (!sock_owned_by_user(sk)) {
res = filter_rcv(sk, buf);
} else {
- if (sk_add_backlog_limited(sk, buf))
+ if (sk_add_backlog(sk, buf))
res = TIPC_ERR_OVERLOAD;
else
res = TIPC_OK;
diff --git a/net/x25/x25_dev.c b/net/x25/x25_dev.c
index 3e1efe5..5688123 100644
--- a/net/x25/x25_dev.c
+++ b/net/x25/x25_dev.c
@@ -53,7 +53,7 @@ static int x25_receive_data(struct sk_buff *skb, struct x25_neigh *nb)
if (!sock_owned_by_user(sk)) {
queued = x25_process_rx_frame(sk, skb);
} else {
- sk_add_backlog(sk, skb);
+ __sk_add_backlog(sk, skb);
}
bh_unlock_sock(sk);
sock_put(sk);
--
1.6.3.3
^ permalink raw reply related
* [PATCH V2 6/7] tipc: use limited socket backlog
From: Zhu Yi @ 2010-03-03 8:36 UTC (permalink / raw)
To: netdev; +Cc: Zhu Yi, Jon Maloy, Allan Stephens
In-Reply-To: <1267605389-7369-5-git-send-email-yi.zhu@intel.com>
Make tipc adapt to the limited socket backlog change.
Cc: Jon Maloy <jon.maloy@ericsson.com>
Cc: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
net/tipc/socket.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 1ea64f0..22bfbc3 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -1322,8 +1322,10 @@ static u32 dispatch(struct tipc_port *tport, struct sk_buff *buf)
if (!sock_owned_by_user(sk)) {
res = filter_rcv(sk, buf);
} else {
- sk_add_backlog(sk, buf);
- res = TIPC_OK;
+ if (sk_add_backlog_limited(sk, buf))
+ res = TIPC_ERR_OVERLOAD;
+ else
+ res = TIPC_OK;
}
bh_unlock_sock(sk);
--
1.6.3.3
^ permalink raw reply related
* [PATCH V2 5/7] sctp: use limited socket backlog
From: Zhu Yi @ 2010-03-03 8:36 UTC (permalink / raw)
To: netdev; +Cc: Zhu Yi, Vlad Yasevich, Sridhar Samudrala
In-Reply-To: <1267605389-7369-4-git-send-email-yi.zhu@intel.com>
Make sctp adapt to the limited socket backlog change.
Cc: Vlad Yasevich <vladislav.yasevich@hp.com>
Cc: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
net/sctp/input.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/net/sctp/input.c b/net/sctp/input.c
index c0c973e..20e69c3 100644
--- a/net/sctp/input.c
+++ b/net/sctp/input.c
@@ -75,7 +75,7 @@ static struct sctp_association *__sctp_lookup_association(
const union sctp_addr *peer,
struct sctp_transport **pt);
-static void sctp_add_backlog(struct sock *sk, struct sk_buff *skb);
+static int sctp_add_backlog(struct sock *sk, struct sk_buff *skb);
/* Calculate the SCTP checksum of an SCTP packet. */
@@ -265,8 +265,12 @@ int sctp_rcv(struct sk_buff *skb)
}
if (sock_owned_by_user(sk)) {
+ if (sctp_add_backlog(sk, skb)) {
+ sctp_bh_unlock_sock(sk);
+ sctp_chunk_free(chunk);
+ goto discard_release;
+ }
SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG);
- sctp_add_backlog(sk, skb);
} else {
SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_SOFTIRQ);
sctp_inq_push(&chunk->rcvr->inqueue, chunk);
@@ -362,7 +366,7 @@ done:
return 0;
}
-static void sctp_add_backlog(struct sock *sk, struct sk_buff *skb)
+static int sctp_add_backlog(struct sock *sk, struct sk_buff *skb)
{
struct sctp_chunk *chunk = SCTP_INPUT_CB(skb)->chunk;
struct sctp_ep_common *rcvr = chunk->rcvr;
@@ -377,7 +381,7 @@ static void sctp_add_backlog(struct sock *sk, struct sk_buff *skb)
else
BUG();
- sk_add_backlog(sk, skb);
+ return sk_add_backlog_limited(sk, skb);
}
/* Handle icmp frag needed error. */
--
1.6.3.3
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox