Message ID | alpine.LNX.2.00.1102132142460.18930@swampdragon.chaosbits.net |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Jesper Juhl <jj@chaosbits.net> Date: Sun, 13 Feb 2011 21:49:32 +0100 (CET) > If alloc_skb() fails to allocate memory and returns NULL then we want to > return -ENOMEM from drivers/atm/solos-pci.c::popen() regardless of the > value of net_ratelimit(). The way the code is today, we may not return if > net_ratelimit() returns 0, then we'll proceed to pass a NULL pointer to > skb_put() which will blow up in our face. > This patch ensures that we always return -ENOMEM on alloc_skb() failure > and only let the dev_warn() be controlled by the value of net_ratelimit(). > > Signed-off-by: Jesper Juhl <jj@chaosbits.net> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c index 73fb1c4..25ef1a4 100644 --- a/drivers/atm/solos-pci.c +++ b/drivers/atm/solos-pci.c @@ -866,8 +866,9 @@ static int popen(struct atm_vcc *vcc) } skb = alloc_skb(sizeof(*header), GFP_ATOMIC); - if (!skb && net_ratelimit()) { - dev_warn(&card->dev->dev, "Failed to allocate sk_buff in popen()\n"); + if (!skb) { + if (net_ratelimit()) + dev_warn(&card->dev->dev, "Failed to allocate sk_buff in popen()\n"); return -ENOMEM; } header = (void *)skb_put(skb, sizeof(*header));
If alloc_skb() fails to allocate memory and returns NULL then we want to return -ENOMEM from drivers/atm/solos-pci.c::popen() regardless of the value of net_ratelimit(). The way the code is today, we may not return if net_ratelimit() returns 0, then we'll proceed to pass a NULL pointer to skb_put() which will blow up in our face. This patch ensures that we always return -ENOMEM on alloc_skb() failure and only let the dev_warn() be controlled by the value of net_ratelimit(). Signed-off-by: Jesper Juhl <jj@chaosbits.net> --- solos-pci.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)