On Fri, Aug 28, 2009 at 11:58 PM, Guzman Lugo,
> @@ -324,7 +324,7 @@ static int __init bridge_init(void) > if (result < 0) { > GT_1trace(driverTrace, GT_7CLASS, "bridge_init: " > "Can't get Major %d \n", driver_major); > - return result; > + goto err1; > } > > driver_major = MAJOR(dev); > @@ -332,19 +332,17 @@ static int __init bridge_init(void) > bridge_device = kmalloc(sizeof(struct bridge_dev), GFP_KERNEL); > if (!bridge_device) { > result = -ENOMEM; > - unregister_chrdev_region(dev, 1); > - return result; > + goto err2; > } > cdev_init(&bridge_device->cdev, &bridge_fops); > bridge_device->cdev.owner = THIS_MODULE; > bridge_device->cdev.ops = &bridge_fops; > > status = cdev_add(&bridge_device->cdev, dev, 1); > - > if (status) { > GT_0trace(driverTrace, GT_7CLASS, > "Failed to add the bridge device \n"); > - return status; result = status, isn't is? or change status to result on previous lines. > + goto err3; > } > > /* udev support */ > @@ -474,7 +472,17 @@ static int __init bridge_init(void) > DBC_Assert(status == 0); > DBC_Assert(DSP_SUCCEEDED(initStatus)); > GT_0trace(driverTrace, GT_ENTER, " <- driver_init\n"); > - return status; > + > + return 0; > + > +err3: > + kfree(bridge_device); > + > +err2: > + unregister_chrdev_region(dev, 1); > + > +err1: > + return result; > } > > /* This function is invoked during unlinking of the bridge module from the -- With Best Regards, Andy Shevchenko