[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <200704260727.l3Q7RZr7023981@shell0.pdx.osdl.net>
Date: Thu, 26 Apr 2007 00:27:35 -0700
From: akpm@...ux-foundation.org
To: davem@...emloft.net
Cc: netdev@...r.kernel.org, akpm@...ux-foundation.org,
matthias.kaehlcke@...il.com, samuel@...tiz.org
Subject: [patch 13/15] irda_device_dongle_init: fix kzalloc(GFP_KERNEL) in spinlock
From: Andrew Morton <akpm@...ux-foundation.org>
Fix http://bugzilla.kernel.org/show_bug.cgi?id=8343
Cc: Samuel Ortiz <samuel@...tiz.org>
Cc: <matthias.kaehlcke@...il.com>
Signed-off-by: Andrew Morton <akpm@...ux-foundation.org>
---
net/irda/irda_device.c | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff -puN net/irda/irda_device.c~irda_device_dongle_init-fix-kzallocgfp_kernel-in-spinlock net/irda/irda_device.c
--- a/net/irda/irda_device.c~irda_device_dongle_init-fix-kzallocgfp_kernel-in-spinlock
+++ a/net/irda/irda_device.c
@@ -375,7 +375,7 @@ EXPORT_SYMBOL(alloc_irdadev);
dongle_t *irda_device_dongle_init(struct net_device *dev, int type)
{
struct dongle_reg *reg;
- dongle_t *dongle = NULL;
+ dongle_t *dongle = kzalloc(sizeof(dongle_t), GFP_KERNEL);
might_sleep();
@@ -397,19 +397,14 @@ dongle_t *irda_device_dongle_init(struct
if (!reg || !try_module_get(reg->owner) ) {
IRDA_ERROR("IrDA: Unable to find requested dongle type %x\n",
type);
- goto out;
+ kfree(dongle);
+ dongle = NULL;
+ }
+ if (dongle) {
+ /* Bind the registration info to this particular instance */
+ dongle->issue = reg;
+ dongle->dev = dev;
}
-
- /* Allocate dongle info for this instance */
- dongle = kzalloc(sizeof(dongle_t), GFP_KERNEL);
- if (!dongle)
- goto out;
-
- /* Bind the registration info to this particular instance */
- dongle->issue = reg;
- dongle->dev = dev;
-
- out:
spin_unlock(&dongles->hb_spinlock);
return dongle;
}
_
-
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