lkml.org 
[lkml]   [1999]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: rtl8139.c lacks a free_irq().
On Wed, 14 Jul 1999, Donald Becker wrote:

> On Wed, 14 Jul 1999, Daniel Kobras wrote:
>
> > The Realtek 8139 driver in 2.3.11pre4 (driver version 1.07) is missing a
> > free_irq() in case the kmalloc()s in rtl8129_open() fail. The patch below
> > applies to 2.3.11pre4, a similar fix is required in 2.2.x (driver version
> > 1.04).
> ...
> > tp->rx_ring = kmalloc(RX_BUF_LEN + 16, GFP_KERNEL);
> > if (tp->tx_bufs == NULL || tp->rx_ring == NULL) {
> > + free_irq(dev->irq, dev);
> > if (tp->tx_bufs)
>
> Yes, nominally this appears to be a bug.
> But the kmalloc(... GFP_KERNEL); should never fail. It might hang forever
> waiting for memory, but it won't fail.
> The check is here is only to prevent disaster should the semantics of
> GFP_KERNEL change.

While this is probably true for Linux proper, I came across this glitch
running a Mach kernel that uses the Linux net drivers through a glue
layer. The glue layer currently can only handle kmalloc()s up to 64K minus
a few bytes, so given the default rx buffer size of 64K, the kmalloc
actually will _always_ fail.

> [[ Hmmm, now why do I have a kfree() there, if it's just a last-ditch check.
> Errrrmmm... uhmmmm.. ]]

Because you're such a nice guy who writes code that behaves well even
on different OSs than the one it was supposed to run on??? ;-)

Regards,

Daniel.



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:52    [W:0.057 / U:0.332 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site