From: Eric Sesterhenn <snakebyte@gmx.de>
To: linux-kernel@vger.kernel.org
Subject: Possible leaks in network drivers
Date: Wed, 21 Jun 2006 18:28:37 +0200 [thread overview]
Message-ID: <1150907317.8320.0.camel@alice> (raw)
hi,
Coverity complains about several pretty similar resource leaks
inside the net drivers, and i am not sure if those are real
name coverity #id
drivers/net/8390.c 623
drivers/net/pcmcia/xirc2ps_cs.c 627
drivers/net/sis190.c 628
drivers/net/wireless/wavelan.c 634
drivers/net/wireless/orinoco.c 661
drivers/net/depca.c 1246
drivers/net/hp100.c 1247
drivers/net/smc9194.c 1248
drivers/net/skge.c 1249
Its always in the hard_start_xmit() function
of the driver. Where we call skb=skb_padto(skb, ETH_ZLEN),
and dont free the skb later when something goes wrong.
Here is the output from the sis190.c case:
------------snip--8<-------------
1158 if (unlikely(skb->len < ETH_ZLEN)) {
Event alloc_fn: Called allocation function "skb_padto" [model]
Event var_assign: Assigned variable "skb" to storage returned from "skb_padto"
Also see events: [var_assign][leaked_storage]
1159 skb = skb_padto(skb, ETH_ZLEN);
At conditional (1): "skb == 0" taking false path
1160 if (!skb) {
1161 tp->stats.tx_dropped++;
1162 goto out;
1163 }
1164 len = ETH_ZLEN;
1165 } else {
1166 len = skb->len;
1167 }
1168
1169 entry = tp->cur_tx % NUM_TX_DESC;
1170 desc = tp->TxDescRing + entry;
1171
At conditional (2): "(desc)->status & 2147483648 != 0" taking true path
1172 if (unlikely(le32_to_cpu(desc->status) & OWNbit)) {
1173 netif_stop_queue(dev);
At conditional (3): "(tp)->msg_enable & 128 != 0" taking true path
1174 net_tx_err(tp, KERN_ERR PFX
1175 "%s: BUG! Tx Ring full when queue awake!\n",
1176 dev->name);
Event leaked_storage: Returned without freeing storage "skb"
Also see events: [alloc_fn][var_assign]
1177 return NETDEV_TX_BUSY;
1178 }
------------snip--8<-------------
As far as i can see, skb_put() might return a fresh allocated skb,
so adding a kfree_skb() here should fix these, or am i missing
something?
Thanks Eric
next reply other threads:[~2006-06-21 16:28 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-21 16:28 Eric Sesterhenn [this message]
2006-06-21 17:05 ` Possible leaks in network drivers Randy.Dunlap
2006-06-21 17:13 ` Memory corruption in 8390.c ? (was Re: Possible leaks in network drivers) Alan Cox
2006-06-21 17:23 ` Memory corruption in 8390.c ? Ben Pfaff
2006-06-21 17:54 ` Alan Cox
2006-06-21 18:03 ` Ben Pfaff
2006-06-21 20:50 ` Alan Cox
2006-06-21 17:59 ` PATCH: Re: Memory corruption in 8390.c ? (and hp100 xirc2ps smc9194 ....) Alan Cox
2006-06-21 19:00 ` Olivier Galibert
2006-06-21 17:50 ` Possible leaks in network drivers Eric Sesterhenn
2006-06-22 1:41 ` Herbert Xu
2006-06-22 0:55 ` Memory corruption in 8390.c ? (was Re: Possible leaks in network drivers) Herbert Xu
2006-06-22 2:30 ` Herbert Xu
2006-06-22 8:22 ` Jeff Garzik
2006-06-22 8:29 ` Herbert Xu
2006-06-22 8:57 ` Jeff Garzik
2006-06-22 9:02 ` Herbert Xu
2006-06-22 9:12 ` Herbert Xu
2006-06-22 8:26 ` Memory corruption in 8390.c ? David Miller
2006-06-22 8:30 ` Herbert Xu
2006-06-22 8:34 ` David Miller
2006-06-22 11:34 ` Alan Cox
2006-06-22 11:29 ` Herbert Xu
2006-06-22 13:25 ` Alan Cox
2006-06-23 3:32 ` Jeff Garzik
2006-06-22 11:33 ` Arjan van de Ven
2006-06-22 12:00 ` Erik Mouw
2006-06-22 13:10 ` Alan Cox
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1150907317.8320.0.camel@alice \
--to=snakebyte@gmx.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox