From: Jesper Juhl This patch does a full cleanup of 'NULL checks before vfree', and a partial cleanup of calls to kfree for all of drivers/ - the kfree bit is partial in that I only did the files that also had vfree calls in them. The patch also gets rid of some redundant (void *) casts of pointers being passed to [vk]free, and a some tiny whitespace corrections also crept in. Signed-off-by: Jesper Juhl Signed-off-by: Andrew Morton --- drivers/block/z2ram.c | 2 +- drivers/cdrom/sbpcd.c | 6 ++++-- drivers/char/agp/backend.c | 7 +++---- drivers/isdn/i4l/isdn_bsdcomp.c | 14 +++++--------- drivers/isdn/i4l/isdn_common.c | 3 ++- drivers/md/dm-exception-store.c | 9 +++------ drivers/media/common/saa7146_core.c | 6 ++---- drivers/media/video/cpia_usb.c | 30 ++++++++++-------------------- drivers/media/video/stradis.c | 32 ++++++++++---------------------- drivers/media/video/video-buf.c | 8 ++++---- drivers/media/video/zoran_driver.c | 2 +- drivers/media/video/zr36120.c | 6 ++---- drivers/mtd/devices/mtdram.c | 3 +-- drivers/mtd/ftl.c | 11 ----------- drivers/net/bsd_comp.c | 28 +++++++++++----------------- drivers/scsi/53c7xx.c | 4 ++-- drivers/scsi/cpqfcTSinit.c | 3 +-- drivers/scsi/osst.c | 13 ++++++------- drivers/usb/media/stv680.c | 26 +++++++++++++------------- drivers/video/sis/sis_main.c | 14 +++++++------- drivers/video/vgastate.c | 15 +++++---------- 21 files changed, 93 insertions(+), 149 deletions(-) diff -puN drivers/block/z2ram.c~vfree-and-kfree-cleanup-in-drivers drivers/block/z2ram.c --- devel/drivers/block/z2ram.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/block/z2ram.c 2005-07-25 23:26:03.000000000 -0700 @@ -296,7 +296,7 @@ z2_open( struct inode *inode, struct fil return 0; err_out_kfree: - kfree( z2ram_map ); + kfree(z2ram_map); err_out: return rc; } diff -puN drivers/cdrom/sbpcd.c~vfree-and-kfree-cleanup-in-drivers drivers/cdrom/sbpcd.c --- devel/drivers/cdrom/sbpcd.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/cdrom/sbpcd.c 2005-07-25 23:26:03.000000000 -0700 @@ -4216,7 +4216,8 @@ static int sbpcd_dev_ioctl(struct cdrom_ case CDROMAUDIOBUFSIZ: /* configure the audio buffer size */ msg(DBG_IOC,"ioctl: CDROMAUDIOBUFSIZ entered.\n"); - if (current_drive->sbp_audsiz>0) vfree(current_drive->aud_buf); + if (current_drive->sbp_audsiz>0) + vfree(current_drive->aud_buf); current_drive->aud_buf=NULL; current_drive->sbp_audsiz=arg; @@ -5910,7 +5911,8 @@ static void sbpcd_exit(void) put_disk(D_S[j].disk); devfs_remove("sbp/c0t%d", j); vfree(D_S[j].sbp_buf); - if (D_S[j].sbp_audsiz>0) vfree(D_S[j].aud_buf); + if (D_S[j].sbp_audsiz>0) + vfree(D_S[j].aud_buf); if ((unregister_cdrom(D_S[j].sbpcd_infop) == -EINVAL)) { msg(DBG_INF, "What's that: can't unregister info %s.\n", major_name); diff -puN drivers/char/agp/backend.c~vfree-and-kfree-cleanup-in-drivers drivers/char/agp/backend.c --- devel/drivers/char/agp/backend.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/char/agp/backend.c 2005-07-25 23:26:03.000000000 -0700 @@ -206,10 +206,9 @@ static void agp_backend_cleanup(struct a bridge->driver->cleanup(); if (bridge->driver->free_gatt_table) bridge->driver->free_gatt_table(bridge); - if (bridge->key_list) { - vfree(bridge->key_list); - bridge->key_list = NULL; - } + + vfree(bridge->key_list); + bridge->key_list = NULL; if (bridge->driver->agp_destroy_page && bridge->driver->needs_scratch_page) diff -puN drivers/isdn/i4l/isdn_bsdcomp.c~vfree-and-kfree-cleanup-in-drivers drivers/isdn/i4l/isdn_bsdcomp.c --- devel/drivers/isdn/i4l/isdn_bsdcomp.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/isdn/i4l/isdn_bsdcomp.c 2005-07-25 23:26:03.000000000 -0700 @@ -283,23 +283,19 @@ static void bsd_free (void *state) /* * Release the dictionary */ - if (db->dict) { - vfree (db->dict); - db->dict = NULL; - } + vfree(db->dict); + db->dict = NULL; /* * Release the string buffer */ - if (db->lens) { - vfree (db->lens); - db->lens = NULL; - } + vfree(db->lens); + db->lens = NULL; /* * Finally release the structure itself. */ - kfree (db); + kfree(db); } } diff -puN drivers/isdn/i4l/isdn_common.c~vfree-and-kfree-cleanup-in-drivers drivers/isdn/i4l/isdn_common.c --- devel/drivers/isdn/i4l/isdn_common.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/isdn/i4l/isdn_common.c 2005-07-25 23:26:03.000000000 -0700 @@ -1953,7 +1953,8 @@ isdn_add_channels(isdn_driver_t *d, int kfree(d->rcvcount); if (!(d->rcvcount = kmalloc(sizeof(int) * m, GFP_ATOMIC))) { printk(KERN_WARNING "register_isdn: Could not alloc rcvcount\n"); - if (!adding) kfree(d->rcverr); + if (!adding) + kfree(d->rcverr); return -1; } memset((char *) d->rcvcount, 0, sizeof(int) * m); diff -puN drivers/md/dm-exception-store.c~vfree-and-kfree-cleanup-in-drivers drivers/md/dm-exception-store.c --- devel/drivers/md/dm-exception-store.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/md/dm-exception-store.c 2005-07-25 23:26:03.000000000 -0700 @@ -568,12 +568,9 @@ int dm_create_persistent(struct exceptio bad: dm_io_put(sectors_to_pages(chunk_size)); - if (ps) { - if (ps->area) - free_area(ps); - - kfree(ps); - } + if (ps && ps->area) + free_area(ps); + kfree(ps); return r; } diff -puN drivers/media/common/saa7146_core.c~vfree-and-kfree-cleanup-in-drivers drivers/media/common/saa7146_core.c --- devel/drivers/media/common/saa7146_core.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/media/common/saa7146_core.c 2005-07-25 23:26:03.000000000 -0700 @@ -168,10 +168,8 @@ void saa7146_pgtable_free(struct pci_dev return; pci_free_consistent(pci, pt->size, pt->cpu, pt->dma); pt->cpu = NULL; - if (NULL != pt->slist) { - kfree(pt->slist); - pt->slist = NULL; - } + kfree(pt->slist); + pt->slist = NULL; } int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt) diff -puN drivers/media/video/cpia_usb.c~vfree-and-kfree-cleanup-in-drivers drivers/media/video/cpia_usb.c --- devel/drivers/media/video/cpia_usb.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/media/video/cpia_usb.c 2005-07-25 23:26:03.000000000 -0700 @@ -445,10 +445,8 @@ static void cpia_usb_free_resources(stru ucpia->sbuf[1].urb = NULL; } - if (ucpia->sbuf[1].data) { - kfree(ucpia->sbuf[1].data); - ucpia->sbuf[1].data = NULL; - } + kfree(ucpia->sbuf[1].data); + ucpia->sbuf[1].data = NULL; if (ucpia->sbuf[0].urb) { usb_kill_urb(ucpia->sbuf[0].urb); @@ -456,10 +454,8 @@ static void cpia_usb_free_resources(stru ucpia->sbuf[0].urb = NULL; } - if (ucpia->sbuf[0].data) { - kfree(ucpia->sbuf[0].data); - ucpia->sbuf[0].data = NULL; - } + kfree(ucpia->sbuf[0].data); + ucpia->sbuf[0].data = NULL; } static int cpia_usb_close(void *privdata) @@ -623,20 +619,14 @@ static void cpia_disconnect(struct usb_i ucpia->curbuff = ucpia->workbuff = NULL; - if (ucpia->buffers[2]) { - vfree(ucpia->buffers[2]); - ucpia->buffers[2] = NULL; - } + vfree(ucpia->buffers[2]); + ucpia->buffers[2] = NULL; - if (ucpia->buffers[1]) { - vfree(ucpia->buffers[1]); - ucpia->buffers[1] = NULL; - } + vfree(ucpia->buffers[1]); + ucpia->buffers[1] = NULL; - if (ucpia->buffers[0]) { - vfree(ucpia->buffers[0]); - ucpia->buffers[0] = NULL; - } + vfree(ucpia->buffers[0]); + ucpia->buffers[0] = NULL; cam->lowlevel_data = NULL; kfree(ucpia); diff -puN drivers/media/video/stradis.c~vfree-and-kfree-cleanup-in-drivers drivers/media/video/stradis.c --- devel/drivers/media/video/stradis.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/media/video/stradis.c 2005-07-25 23:26:03.000000000 -0700 @@ -2184,30 +2184,18 @@ static void release_saa(void) vfree(saa->vidbuf); vfree(saa->audbuf); vfree(saa->osdbuf); - if (saa->dmavid2) - kfree((void *) saa->dmavid2); + kfree(saa->dmavid2); saa->audbuf = saa->vidbuf = saa->osdbuf = NULL; saa->dmavid2 = NULL; - if (saa->dmadebi) - kfree((void *) saa->dmadebi); - if (saa->dmavid1) - kfree((void *) saa->dmavid1); - if (saa->dmavid2) - kfree((void *) saa->dmavid2); - if (saa->dmavid3) - kfree((void *) saa->dmavid3); - if (saa->dmaa1in) - kfree((void *) saa->dmaa1in); - if (saa->dmaa1out) - kfree((void *) saa->dmaa1out); - if (saa->dmaa2in) - kfree((void *) saa->dmaa2in); - if (saa->dmaa2out) - kfree((void *) saa->dmaa2out); - if (saa->dmaRPS1) - kfree((void *) saa->dmaRPS1); - if (saa->dmaRPS2) - kfree((void *) saa->dmaRPS2); + kfree(saa->dmadebi); + kfree(saa->dmavid1); + kfree(saa->dmavid3); + kfree(saa->dmaa1in); + kfree(saa->dmaa1out); + kfree(saa->dmaa2in); + kfree(saa->dmaa2out); + kfree(saa->dmaRPS1); + kfree(saa->dmaRPS2); free_irq(saa->irq, saa); if (saa->saa7146_mem) iounmap(saa->saa7146_mem); diff -puN drivers/media/video/video-buf.c~vfree-and-kfree-cleanup-in-drivers drivers/media/video/video-buf.c --- devel/drivers/media/video/video-buf.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/media/video/video-buf.c 2005-07-25 23:26:03.000000000 -0700 @@ -268,10 +268,10 @@ int videobuf_dma_free(struct videobuf_dm kfree(dma->pages); dma->pages = NULL; } - if (dma->vmalloc) { - vfree(dma->vmalloc); - dma->vmalloc = NULL; - } + + vfree(dma->vmalloc); + dma->vmalloc = NULL; + if (dma->bus_addr) { dma->bus_addr = 0; } diff -puN drivers/media/video/zoran_driver.c~vfree-and-kfree-cleanup-in-drivers drivers/media/video/zoran_driver.c --- devel/drivers/media/video/zoran_driver.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/media/video/zoran_driver.c 2005-07-25 23:26:03.000000000 -0700 @@ -650,7 +650,7 @@ jpg_fbuffer_free (struct file *file) off += PAGE_SIZE) ClearPageReserved(MAP_NR (mem + off)); - kfree((void *) mem); + kfree(mem); fh->jpg_buffers.buffer[i].frag_tab[0] = 0; fh->jpg_buffers.buffer[i].frag_tab[1] = 0; } diff -puN drivers/media/video/zr36120.c~vfree-and-kfree-cleanup-in-drivers drivers/media/video/zr36120.c --- devel/drivers/media/video/zr36120.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/media/video/zr36120.c 2005-07-25 23:26:03.000000000 -0700 @@ -820,11 +820,9 @@ void zoran_close(struct video_device* de msleep(100); /* Wait 1/10th of a second */ /* free the allocated framebuffer */ - if (ztv->fbuffer) - bfree( ztv->fbuffer, ZORAN_MAX_FBUFSIZE ); + bfree(ztv->fbuffer, ZORAN_MAX_FBUFSIZE); ztv->fbuffer = 0; - if (ztv->overinfo.overlay) - kfree( ztv->overinfo.overlay ); + kfree(ztv->overinfo.overlay); ztv->overinfo.overlay = 0; } diff -puN drivers/mtd/devices/mtdram.c~vfree-and-kfree-cleanup-in-drivers drivers/mtd/devices/mtdram.c --- devel/drivers/mtd/devices/mtdram.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/mtd/devices/mtdram.c 2005-07-25 23:26:03.000000000 -0700 @@ -91,8 +91,7 @@ static void __exit cleanup_mtdram(void) { if (mtd_info) { del_mtd_device(mtd_info); - if (mtd_info->priv) - vfree(mtd_info->priv); + vfree(mtd_info->priv); kfree(mtd_info); } } diff -puN drivers/mtd/ftl.c~vfree-and-kfree-cleanup-in-drivers drivers/mtd/ftl.c --- devel/drivers/mtd/ftl.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/mtd/ftl.c 2005-07-25 23:26:03.000000000 -0700 @@ -1017,27 +1017,16 @@ static int ftl_writesect(struct mtd_blkt void ftl_freepart(partition_t *part) { - if (part->VirtualBlockMap) { vfree(part->VirtualBlockMap); part->VirtualBlockMap = NULL; - } - if (part->VirtualPageMap) { kfree(part->VirtualPageMap); part->VirtualPageMap = NULL; - } - if (part->EUNInfo) { kfree(part->EUNInfo); part->EUNInfo = NULL; - } - if (part->XferInfo) { kfree(part->XferInfo); part->XferInfo = NULL; - } - if (part->bam_cache) { kfree(part->bam_cache); part->bam_cache = NULL; - } - } /* ftl_freepart */ static void ftl_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd) diff -puN drivers/net/bsd_comp.c~vfree-and-kfree-cleanup-in-drivers drivers/net/bsd_comp.c --- devel/drivers/net/bsd_comp.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/net/bsd_comp.c 2005-07-25 23:26:03.000000000 -0700 @@ -323,33 +323,27 @@ static void bsd_reset (void *state) */ static void bsd_free (void *state) - { - struct bsd_db *db = (struct bsd_db *) state; +{ + struct bsd_db *db = state; - if (db) - { + if (!db) + return; + /* * Release the dictionary */ - if (db->dict) - { - vfree (db->dict); - db->dict = NULL; - } + vfree(db->dict); + db->dict = NULL; /* * Release the string buffer */ - if (db->lens) - { - vfree (db->lens); - db->lens = NULL; - } + vfree(db->lens); + db->lens = NULL; /* * Finally release the structure itself. */ - kfree (db); - } - } + kfree(db); +} /* * Allocate space for a (de) compressor. diff -puN drivers/scsi/53c7xx.c~vfree-and-kfree-cleanup-in-drivers drivers/scsi/53c7xx.c --- devel/drivers/scsi/53c7xx.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/scsi/53c7xx.c 2005-07-25 23:26:03.000000000 -0700 @@ -6090,8 +6090,8 @@ NCR53c7x0_release(struct Scsi_Host *host if (hostdata->num_cmds) printk ("scsi%d : leaked %d NCR53c7x0_cmd structures\n", host->host_no, hostdata->num_cmds); - if (hostdata->events) - vfree ((void *)hostdata->events); + + vfree(hostdata->events); /* XXX This assumes default cache mode to be IOMAP_FULL_CACHING, which * XXX may be invalid (CONFIG_060_WRITETHROUGH) diff -puN drivers/scsi/cpqfcTSinit.c~vfree-and-kfree-cleanup-in-drivers drivers/scsi/cpqfcTSinit.c --- devel/drivers/scsi/cpqfcTSinit.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/scsi/cpqfcTSinit.c 2005-07-25 23:26:03.000000000 -0700 @@ -691,8 +691,7 @@ int cpqfcTS_ioctl( struct scsi_device *S if( copy_to_user( vendor_cmd->bufp, buf, vendor_cmd->len)) result = -EFAULT; - if( buf) - kfree( buf); + kfree(buf); return result; } diff -puN drivers/scsi/osst.c~vfree-and-kfree-cleanup-in-drivers drivers/scsi/osst.c --- devel/drivers/scsi/osst.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/scsi/osst.c 2005-07-25 23:26:03.000000000 -0700 @@ -1377,7 +1377,7 @@ static int osst_read_back_buffer_and_rew if ((STp->buffer)->syscall_result || !SRpnt) { printk(KERN_ERR "%s:E: Failed to read frame back from OnStream buffer\n", name); - vfree((void *)buffer); + vfree(buffer); *aSRpnt = SRpnt; return (-EIO); } @@ -1419,7 +1419,7 @@ static int osst_read_back_buffer_and_rew if (new_frame > frame + 1000) { printk(KERN_ERR "%s:E: Failed to find writable tape media\n", name); - vfree((void *)buffer); + vfree(buffer); return (-EIO); } if ( i >= nframes + pending ) break; @@ -1500,7 +1500,7 @@ static int osst_read_back_buffer_and_rew SRpnt->sr_sense_buffer[12] == 0 && SRpnt->sr_sense_buffer[13] == 2) { printk(KERN_ERR "%s:E: Volume overflow in write error recovery\n", name); - vfree((void *)buffer); + vfree(buffer); return (-EIO); /* hit end of tape = fail */ } i = ((SRpnt->sr_sense_buffer[3] << 24) | @@ -1525,7 +1525,7 @@ static int osst_read_back_buffer_and_rew } if (!pending) osst_copy_to_buffer(STp->buffer, p); /* so buffer content == at entry in all cases */ - vfree((void *)buffer); + vfree(buffer); return 0; } @@ -5852,7 +5852,7 @@ static int osst_remove(struct device *de os_scsi_tapes[i] = NULL; osst_nr_dev--; write_unlock(&os_scsi_tapes_lock); - if (tpnt->header_cache != NULL) vfree(tpnt->header_cache); + vfree(tpnt->header_cache); if (tpnt->buffer) { normalize_buffer(tpnt->buffer); kfree(tpnt->buffer); @@ -5896,8 +5896,7 @@ static void __exit exit_osst (void) for (i=0; i < osst_max_dev; ++i) { if (!(STp = os_scsi_tapes[i])) continue; /* This is defensive, supposed to happen during detach */ - if (STp->header_cache) - vfree(STp->header_cache); + vfree(STp->header_cache); if (STp->buffer) { normalize_buffer(STp->buffer); kfree(STp->buffer); diff -puN drivers/usb/media/stv680.c~vfree-and-kfree-cleanup-in-drivers drivers/usb/media/stv680.c --- devel/drivers/usb/media/stv680.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/usb/media/stv680.c 2005-07-25 23:26:03.000000000 -0700 @@ -260,7 +260,7 @@ static int stv_stop_video (struct usb_st PDEBUG (0, "STV(i): Camera set to original resolution"); } /* origMode */ - kfree (buf); + kfree(buf); return i; } @@ -276,7 +276,7 @@ static int stv_set_video_mode (struct us } if ((i = stv_set_config (dev, 1, 0, 0)) < 0) { - kfree (buf); + kfree(buf); return i; } @@ -301,13 +301,13 @@ static int stv_set_video_mode (struct us goto exit; error: - kfree (buf); + kfree(buf); if (stop_video == 1) stv_stop_video (dev); return -1; exit: - kfree (buf); + kfree(buf); return 0; } @@ -327,7 +327,7 @@ static int stv_init (struct usb_stv *stv /* set config 1, interface 0, alternate 0 */ if ((i = stv_set_config (stv680, 1, 0, 0)) < 0) { - kfree (buffer); + kfree(buffer); PDEBUG (0, "STV(e): set config 1,0,0 failed"); return -1; } @@ -435,11 +435,11 @@ static int stv_init (struct usb_stv *stv error: i = stv_sndctrl (0, stv680, 0x80, 0, buffer, 0x02); /* Get Last Error */ PDEBUG (1, "STV(i): last error: %i, command = 0x%x", buffer[0], buffer[1]); - kfree (buffer); + kfree(buffer); return -1; exit: - kfree (buffer); + kfree(buffer); /* video = 320x240, 352x288 */ if (stv680->CIF == 1) { @@ -708,10 +708,10 @@ static int stv680_stop_stream (struct us usb_kill_urb (stv680->urb[i]); usb_free_urb (stv680->urb[i]); stv680->urb[i] = NULL; - kfree (stv680->sbuf[i].data); + kfree(stv680->sbuf[i].data); } for (i = 0; i < STV680_NUMSCRATCH; i++) { - kfree (stv680->scratch[i].data); + kfree(stv680->scratch[i].data); stv680->scratch[i].data = NULL; } @@ -1068,7 +1068,7 @@ static int stv_close (struct inode *inod stv680->user = 0; if (stv680->removed) { - kfree (stv680); + kfree(stv680); stv680 = NULL; PDEBUG (0, "STV(i): device unregistered"); } @@ -1445,14 +1445,14 @@ static inline void usb_stv680_remove_dis usb_kill_urb (stv680->urb[i]); usb_free_urb (stv680->urb[i]); stv680->urb[i] = NULL; - kfree (stv680->sbuf[i].data); + kfree(stv680->sbuf[i].data); } for (i = 0; i < STV680_NUMSCRATCH; i++) - kfree (stv680->scratch[i].data); + kfree(stv680->scratch[i].data); PDEBUG (0, "STV(i): %s disconnected", stv680->camera_name); /* Free the memory */ - kfree (stv680); + kfree(stv680); } static void stv680_disconnect (struct usb_interface *intf) diff -puN drivers/video/sis/sis_main.c~vfree-and-kfree-cleanup-in-drivers drivers/video/sis/sis_main.c --- devel/drivers/video/sis/sis_main.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/video/sis/sis_main.c 2005-07-25 23:26:03.000000000 -0700 @@ -5121,7 +5121,7 @@ static int __devinit sisfb_probe(struct if(sisfb_get_dram_size(ivideo)) { printk(KERN_INFO "sisfb: Fatal error: Unable to determine RAM size.\n"); - if(ivideo->bios_abase) vfree(ivideo->bios_abase); + vfree(ivideo->bios_abase); pci_set_drvdata(pdev, NULL); kfree(sis_fb_info); return -ENODEV; @@ -5149,7 +5149,7 @@ static int __devinit sisfb_probe(struct if(!request_mem_region(ivideo->video_base, ivideo->video_size, "sisfb FB")) { printk(KERN_ERR "sisfb: Fatal error: Unable to reserve frame buffer memory\n"); printk(KERN_ERR "sisfb: Is there another framebuffer driver active?\n"); - if(ivideo->bios_abase) vfree(ivideo->bios_abase); + vfree(ivideo->bios_abase); pci_set_drvdata(pdev, NULL); kfree(sis_fb_info); return -ENODEV; @@ -5158,7 +5158,7 @@ static int __devinit sisfb_probe(struct if(!request_mem_region(ivideo->mmio_base, ivideo->mmio_size, "sisfb MMIO")) { printk(KERN_ERR "sisfb: Fatal error: Unable to reserve MMIO region\n"); release_mem_region(ivideo->video_base, ivideo->video_size); - if(ivideo->bios_abase) vfree(ivideo->bios_abase); + vfree(ivideo->bios_abase); pci_set_drvdata(pdev, NULL); kfree(sis_fb_info); return -ENODEV; @@ -5170,7 +5170,7 @@ static int __devinit sisfb_probe(struct printk(KERN_ERR "sisfb: Fatal error: Unable to map frame buffer memory\n"); release_mem_region(ivideo->video_base, ivideo->video_size); release_mem_region(ivideo->mmio_base, ivideo->mmio_size); - if(ivideo->bios_abase) vfree(ivideo->bios_abase); + vfree(ivideo->bios_abase); pci_set_drvdata(pdev, NULL); kfree(sis_fb_info); return -ENODEV; @@ -5182,7 +5182,7 @@ static int __devinit sisfb_probe(struct iounmap(ivideo->video_vbase); release_mem_region(ivideo->video_base, ivideo->video_size); release_mem_region(ivideo->mmio_base, ivideo->mmio_size); - if(ivideo->bios_abase) vfree(ivideo->bios_abase); + vfree(ivideo->bios_abase); pci_set_drvdata(pdev, NULL); kfree(sis_fb_info); return -ENODEV; @@ -5472,7 +5472,7 @@ static int __devinit sisfb_probe(struct iounmap(ivideo->mmio_vbase); release_mem_region(ivideo->video_base, ivideo->video_size); release_mem_region(ivideo->mmio_base, ivideo->mmio_size); - if(ivideo->bios_abase) vfree(ivideo->bios_abase); + vfree(ivideo->bios_abase); pci_set_drvdata(pdev, NULL); kfree(sis_fb_info); return -EINVAL; @@ -5595,7 +5595,7 @@ static int __devinit sisfb_probe(struct iounmap(ivideo->mmio_vbase); release_mem_region(ivideo->video_base, ivideo->video_size); release_mem_region(ivideo->mmio_base, ivideo->mmio_size); - if(ivideo->bios_abase) vfree(ivideo->bios_abase); + vfree(ivideo->bios_abase); pci_set_drvdata(pdev, NULL); kfree(sis_fb_info); return -EINVAL; diff -puN drivers/video/vgastate.c~vfree-and-kfree-cleanup-in-drivers drivers/video/vgastate.c --- devel/drivers/video/vgastate.c~vfree-and-kfree-cleanup-in-drivers 2005-07-25 23:26:03.000000000 -0700 +++ devel-akpm/drivers/video/vgastate.c 2005-07-25 23:26:03.000000000 -0700 @@ -342,16 +342,11 @@ static void vga_cleanup(struct vgastate if (state->vidstate != NULL) { struct regstate *saved = (struct regstate *) state->vidstate; - if (saved->vga_font0) - vfree(saved->vga_font0); - if (saved->vga_font1) - vfree(saved->vga_font1); - if (saved->vga_text) - vfree(saved->vga_text); - if (saved->vga_cmap) - vfree(saved->vga_cmap); - if (saved->attr) - vfree(saved->attr); + vfree(saved->vga_font0); + vfree(saved->vga_font1); + vfree(saved->vga_text); + vfree(saved->vga_cmap); + vfree(saved->attr); kfree(saved); state->vidstate = NULL; } _