Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit daf72f40 authored by Jean Delvare's avatar Jean Delvare Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (3568c): zoran: Init cleanups



Cleanups to the zr36057 initialization:
* Drop intermediate local variables.
* Single error path.
Also drop a needless cast on kfree.

Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 6eb5d9ca
Loading
Loading
Loading
Loading
+17 −21
Original line number Diff line number Diff line
@@ -995,10 +995,7 @@ test_interrupts (struct zoran *zr)
static int __devinit
zr36057_init (struct zoran *zr)
{
	u32 *mem;
	void *vdev;
	unsigned mem_needed;
	int j;
	int j, err;
	int two = 2;
	int zero = 0;

@@ -1049,19 +1046,16 @@ zr36057_init (struct zoran *zr)

	/* allocate memory *before* doing anything to the hardware
	 * in case allocation fails */
	mem_needed = BUZ_NUM_STAT_COM * 4;
	mem = kzalloc(mem_needed, GFP_KERNEL);
	vdev = (void *) kmalloc(sizeof(struct video_device), GFP_KERNEL);
	if (!mem || !vdev) {
	zr->stat_com = kzalloc(BUZ_NUM_STAT_COM * 4, GFP_KERNEL);
	zr->video_dev = kmalloc(sizeof(struct video_device), GFP_KERNEL);
	if (!zr->stat_com || !zr->video_dev) {
		dprintk(1,
			KERN_ERR
			"%s: zr36057_init() - kmalloc (STAT_COM) failed\n",
			ZR_DEVNAME(zr));
		kfree(vdev);
		kfree(mem);
		return -ENOMEM;
		err = -ENOMEM;
		goto exit_free;
	}
	zr->stat_com = mem;
	for (j = 0; j < BUZ_NUM_STAT_COM; j++) {
		zr->stat_com[j] = 1;	/* mark as unavailable to zr36057 */
	}
@@ -1069,16 +1063,11 @@ zr36057_init (struct zoran *zr)
	/*
	 *   Now add the template and register the device unit.
	 */
	zr->video_dev = vdev;
	memcpy(zr->video_dev, &zoran_template, sizeof(zoran_template));
	strcpy(zr->video_dev->name, ZR_DEVNAME(zr));
	if (video_register_device(zr->video_dev, VFL_TYPE_GRABBER,
				  video_nr) < 0) {
		zoran_unregister_i2c(zr);
		kfree((void *) zr->stat_com);
		kfree(vdev);
		return -1;
	}
	err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr);
	if (err < 0)
		goto exit_unregister;

	zoran_init_hardware(zr);
	if (*zr_debug > 2)
@@ -1092,6 +1081,13 @@ zr36057_init (struct zoran *zr)
	zr->zoran_proc = NULL;
	zr->initialized = 1;
	return 0;

exit_unregister:
	zoran_unregister_i2c(zr);
exit_free:
	kfree(zr->stat_com);
	kfree(zr->video_dev);
	return err;
}

static void
@@ -1121,7 +1117,7 @@ zoran_release (struct zoran *zr)
	btwrite(0, ZR36057_SPGPPCR);
	free_irq(zr->pci_dev->irq, zr);
	/* unmap and free memory */
	kfree((void *) zr->stat_com);
	kfree(zr->stat_com);
	zoran_proc_cleanup(zr);
	iounmap(zr->zr36057_mem);
	pci_disable_device(zr->pci_dev);