lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 30 Jan 2007 16:24:40 -0800 From: Joe Perches <joe@...ches.com> To: David Miller <davem@...emloft.net> Cc: jgarzik@...ox.com, netdev@...r.kernel.org, m.kozlowski@...land.pl, akpm@...l.org, torvalds@...ux-foundation.org Subject: Re: buggy IFB driver change On Tue, 2007-01-30 at 14:12 -0800, David Miller wrote: > > > Therefore we must decrement "i" twice before the first > > > free during the cleanup. One to "undo" the for() loop > > > increment, and one to "skip" the ifb_init_one() case which > > > failed. Perhaps putting the error unwind inside the for loop is simpler and more intelligible. diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c index ca2b21f..0b24c31 100644 --- a/drivers/net/ifb.c +++ b/drivers/net/ifb.c @@ -264,19 +264,20 @@ static void ifb_free_one(int index) static int __init ifb_init_module(void) { - int i, err = 0; + int i, err; ifbs = kmalloc(numifbs * sizeof(void *), GFP_KERNEL); if (!ifbs) return -ENOMEM; - for (i = 0; i < numifbs && !err; i++) + for (i = 0; i < numifbs; i++) { err = ifb_init_one(i); - if (err) { - i--; - while (--i >= 0) - ifb_free_one(i); + if (err) { + while (i > 0) + ifb_free_one(--i); + return err; + } } - return err; + return 0; } static void __exit ifb_cleanup_module(void) - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists