Cleanup patch from Denis Vlasenko.  Mostly variants of removing the if(x)
from before "if(x) free(x)".
diff --git a/archival/dpkg.c b/archival/dpkg.c
index 70eaefb..74d3a83 100644
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -544,8 +544,7 @@
 		for (i = 0; i < node->num_of_edges; i++) {
 			free(node->edge[i]);
 		}
-		if ( node->edge )
-			free(node->edge);
+		free(node->edge);
 		free(node);
 	}
 }
diff --git a/archival/libunarchive/decompress_bunzip2.c b/archival/libunarchive/decompress_bunzip2.c
index df6fa07..7f700ca 100644
--- a/archival/libunarchive/decompress_bunzip2.c
+++ b/archival/libunarchive/decompress_bunzip2.c
@@ -714,7 +714,7 @@
 	} else {
 		bb_error_msg("Decompression failed");
 	}
-	if(bd->dbuf) free(bd->dbuf);
+	free(bd->dbuf);
 	free(bd);
 	free(outbuf);
 
diff --git a/archival/unzip.c b/archival/unzip.c
index ff2b1a2..7e0d107 100644
--- a/archival/unzip.c
+++ b/archival/unzip.c
@@ -393,7 +393,7 @@
 			goto _check_file;
 
 		default:
-			printf("error:  invalid response [%c]\n",(char)i);
+			printf("error: invalid response [%c]\n",(char)i);
 			goto _check_file;
 		}
 
@@ -405,8 +405,8 @@
 	}
 
 	if (verbosity == v_list) {
-		printf(" --------                   -------\n");
-		printf("%9d                   %d files\n", total_size, total_entries);
+		printf(" --------                   -------\n"
+		       "%9d                   %d files\n", total_size, total_entries);
 	}
 
 	return(EXIT_SUCCESS);
diff --git a/e2fsprogs/blkid/cache.c b/e2fsprogs/blkid/cache.c
index 87be126..daccb30 100644
--- a/e2fsprogs/blkid/cache.c
+++ b/e2fsprogs/blkid/cache.c
@@ -88,8 +88,7 @@
 		}
 		blkid_free_tag(tag);
 	}
-	if (cache->bic_filename)
-		free(cache->bic_filename);
+	free(cache->bic_filename);
 
 	free(cache);
 }
diff --git a/e2fsprogs/blkid/devno.c b/e2fsprogs/blkid/devno.c
index 7d083e7..2979280 100644
--- a/e2fsprogs/blkid/devno.c
+++ b/e2fsprogs/blkid/devno.c
@@ -218,8 +218,7 @@
 	}
 	printf("Looking for device 0x%04Lx\n", devno);
 	devname = blkid_devno_to_devname(devno);
-	if (devname)
-		free(devname);
+	free(devname);
 	return 0;
 }
 #endif
diff --git a/e2fsprogs/blkid/resolve.c b/e2fsprogs/blkid/resolve.c
index 591b630..40d999a 100644
--- a/e2fsprogs/blkid/resolve.c
+++ b/e2fsprogs/blkid/resolve.c
@@ -96,10 +96,8 @@
 	ret = blkid_strdup(blkid_dev_devname(dev));
 
 errout:
-	if (t)
-		free(t);
-	if (v)
-		free(v);
+	free(t);
+	free(v);
 	if (!cache) {
 		blkid_put_cache(c);
 	}
diff --git a/e2fsprogs/blkid/save.c b/e2fsprogs/blkid/save.c
index cc406eb..98d8d02 100644
--- a/e2fsprogs/blkid/save.c
+++ b/e2fsprogs/blkid/save.c
@@ -148,8 +148,7 @@
 	}
 
 errout:
-	if (tmp)
-		free(tmp);
+	free(tmp);
 	return ret;
 }
 
diff --git a/e2fsprogs/blkid/tag.c b/e2fsprogs/blkid/tag.c
index e2c785c..95112eb 100644
--- a/e2fsprogs/blkid/tag.c
+++ b/e2fsprogs/blkid/tag.c
@@ -41,11 +41,8 @@
 	list_del(&tag->bit_tags);	/* list of tags for this device */
 	list_del(&tag->bit_names);	/* list of tags with this type */
 
-	if (tag->bit_name)
-		free(tag->bit_name);
-	if (tag->bit_val)
-		free(tag->bit_val);
-
+	free(tag->bit_name);
+	free(tag->bit_val);
 	free(tag);
 }
 
@@ -112,8 +109,7 @@
 		return -BLKID_ERR_MEM;
 	t = blkid_find_tag_dev(dev, name);
 	if (!value) {
-		if (t)
-			blkid_free_tag(t);
+		blkid_free_tag(t);
 	} else if (t) {
 		if (!strcmp(t->bit_val, val)) {
 			/* Same thing, exit */
@@ -165,12 +161,10 @@
 	return 0;
 
 errout:
-	if (t)
-		blkid_free_tag(t);
-	else if (val)
+	blkid_free_tag(t);
+	if (!t)
 		free(val);
-	if (head)
-		blkid_free_tag(head);
+	blkid_free_tag(head);
 	return -BLKID_ERR_MEM;
 }
 
diff --git a/e2fsprogs/e2fsck.c b/e2fsprogs/e2fsck.c
index 1c97cf4..489d2a8 100644
--- a/e2fsprogs/e2fsck.c
+++ b/e2fsprogs/e2fsck.c
@@ -2036,10 +2036,7 @@
  */
 static void e2fsck_free_dir_info(e2fsck_t ctx)
 {
-	if (ctx->dir_info) {
-		ext2fs_free_mem(&ctx->dir_info);
-		ctx->dir_info = 0;
-	}
+	ext2fs_free_mem(&ctx->dir_info);
 	ctx->dir_info_size = 0;
 	ctx->dir_info_count = 0;
 }
@@ -2178,13 +2175,9 @@
 	if (ctx->dx_dir_info) {
 		dir = ctx->dx_dir_info;
 		for (i=0; i < ctx->dx_dir_info_count; i++) {
-			if (dir->dx_block) {
-				ext2fs_free_mem(&dir->dx_block);
-				dir->dx_block = 0;
-			}
+			ext2fs_free_mem(&dir->dx_block);
 		}
 		ext2fs_free_mem(&ctx->dx_dir_info);
-		ctx->dx_dir_info = 0;
 	}
 	ctx->dx_dir_info_size = 0;
 	ctx->dx_dir_info_count = 0;
@@ -2245,8 +2238,7 @@
 	if (!refcount)
 		return;
 
-	if (refcount->list)
-		ext2fs_free_mem(&refcount->list);
+	ext2fs_free_mem(&refcount->list);
 	ext2fs_free_mem(&refcount);
 }
 
@@ -2259,32 +2251,22 @@
 	ctx->flags = 0;
 	ctx->lost_and_found = 0;
 	ctx->bad_lost_and_found = 0;
-	if (ctx->inode_used_map) {
-		ext2fs_free_inode_bitmap(ctx->inode_used_map);
-		ctx->inode_used_map = 0;
-	}
-	if (ctx->inode_dir_map) {
-		ext2fs_free_inode_bitmap(ctx->inode_dir_map);
-		ctx->inode_dir_map = 0;
-	}
-	if (ctx->inode_reg_map) {
-		ext2fs_free_inode_bitmap(ctx->inode_reg_map);
-		ctx->inode_reg_map = 0;
-	}
-	if (ctx->block_found_map) {
-		ext2fs_free_block_bitmap(ctx->block_found_map);
-		ctx->block_found_map = 0;
-	}
-	if (ctx->inode_link_info) {
-		ext2fs_free_icount(ctx->inode_link_info);
-		ctx->inode_link_info = 0;
-	}
+	ext2fs_free_inode_bitmap(ctx->inode_used_map);
+	ctx->inode_used_map = 0;
+	ext2fs_free_inode_bitmap(ctx->inode_dir_map);
+	ctx->inode_dir_map = 0;
+	ext2fs_free_inode_bitmap(ctx->inode_reg_map);
+	ctx->inode_reg_map = 0;
+	ext2fs_free_block_bitmap(ctx->block_found_map);
+	ctx->block_found_map = 0;
+	ext2fs_free_icount(ctx->inode_link_info);
+	ctx->inode_link_info = 0;
 	if (ctx->journal_io) {
 		if (ctx->fs && ctx->fs->io != ctx->journal_io)
 			io_channel_close(ctx->journal_io);
 		ctx->journal_io = 0;
 	}
-	if (ctx->fs && ctx->fs->dblist) {
+	if (ctx->fs) {
 		ext2fs_free_dblist(ctx->fs->dblist);
 		ctx->fs->dblist = 0;
 	}
@@ -2292,54 +2274,29 @@
 #ifdef ENABLE_HTREE
 	e2fsck_free_dx_dir_info(ctx);
 #endif
-	if (ctx->refcount) {
-		ea_refcount_free(ctx->refcount);
-		ctx->refcount = 0;
-	}
-	if (ctx->refcount_extra) {
-		ea_refcount_free(ctx->refcount_extra);
-		ctx->refcount_extra = 0;
-	}
-	if (ctx->block_dup_map) {
-		ext2fs_free_block_bitmap(ctx->block_dup_map);
-		ctx->block_dup_map = 0;
-	}
-	if (ctx->block_ea_map) {
-		ext2fs_free_block_bitmap(ctx->block_ea_map);
-		ctx->block_ea_map = 0;
-	}
-	if (ctx->inode_bb_map) {
-		ext2fs_free_inode_bitmap(ctx->inode_bb_map);
-		ctx->inode_bb_map = 0;
-	}
-	if (ctx->inode_bad_map) {
-		ext2fs_free_inode_bitmap(ctx->inode_bad_map);
-		ctx->inode_bad_map = 0;
-	}
-	if (ctx->inode_imagic_map) {
-		ext2fs_free_inode_bitmap(ctx->inode_imagic_map);
-		ctx->inode_imagic_map = 0;
-	}
-	if (ctx->dirs_to_hash) {
-		ext2fs_u32_list_free(ctx->dirs_to_hash);
-		ctx->dirs_to_hash = 0;
-	}
+	ea_refcount_free(ctx->refcount);
+	ctx->refcount = 0;
+	ea_refcount_free(ctx->refcount_extra);
+	ctx->refcount_extra = 0;
+	ext2fs_free_block_bitmap(ctx->block_dup_map);
+	ctx->block_dup_map = 0;
+	ext2fs_free_block_bitmap(ctx->block_ea_map);
+	ctx->block_ea_map = 0;
+	ext2fs_free_inode_bitmap(ctx->inode_bb_map);
+	ctx->inode_bb_map = 0;
+	ext2fs_free_inode_bitmap(ctx->inode_bad_map);
+	ctx->inode_bad_map = 0;
+	ext2fs_free_inode_bitmap(ctx->inode_imagic_map);
+	ctx->inode_imagic_map = 0;
+	ext2fs_u32_list_free(ctx->dirs_to_hash);
+	ctx->dirs_to_hash = 0;
 
 	/*
 	 * Clear the array of invalid meta-data flags
 	 */
-	if (ctx->invalid_inode_bitmap_flag) {
-		ext2fs_free_mem(&ctx->invalid_inode_bitmap_flag);
-		ctx->invalid_inode_bitmap_flag = 0;
-	}
-	if (ctx->invalid_block_bitmap_flag) {
-		ext2fs_free_mem(&ctx->invalid_block_bitmap_flag);
-		ctx->invalid_block_bitmap_flag = 0;
-	}
-	if (ctx->invalid_inode_table_flag) {
-		ext2fs_free_mem(&ctx->invalid_inode_table_flag);
-		ctx->invalid_inode_table_flag = 0;
-	}
+	ext2fs_free_mem(&ctx->invalid_inode_bitmap_flag);
+	ext2fs_free_mem(&ctx->invalid_block_bitmap_flag);
+	ext2fs_free_mem(&ctx->invalid_inode_table_flag);
 
 	/* Clear statistic counters */
 	ctx->fs_directory_count = 0;
@@ -3118,20 +3075,16 @@
 	journal->j_superblock = (journal_superblock_t *)bh->b_data;
 
 #ifdef USE_INODE_IO
-	if (j_inode)
-		ext2fs_free_mem(&j_inode);
+	ext2fs_free_mem(&j_inode);
 #endif
 
 	*ret_journal = journal;
 	return 0;
 
 errout:
-	if (dev_fs)
-		ext2fs_free_mem(&dev_fs);
-	if (j_inode)
-		ext2fs_free_mem(&j_inode);
-	if (journal)
-		ext2fs_free_mem(&journal);
+	ext2fs_free_mem(&dev_fs);
+	ext2fs_free_mem(&j_inode);
+	ext2fs_free_mem(&journal);
 	return retval;
 
 }
@@ -3368,11 +3321,9 @@
 	}
 
 #ifndef USE_INODE_IO
-	if (journal->j_inode)
-		ext2fs_free_mem(&journal->j_inode);
+	ext2fs_free_mem(&journal->j_inode);
 #endif
-	if (journal->j_fs_dev)
-		ext2fs_free_mem(&journal->j_fs_dev);
+	ext2fs_free_mem(&journal->j_fs_dev);
 	ext2fs_free_mem(&journal);
 }
 
@@ -4346,7 +4297,6 @@
 static void unwind_pass1(void)
 {
 	ext2fs_free_mem(&inodes_to_process);
-	inodes_to_process = 0;
 }
 
 /*
@@ -5086,10 +5036,8 @@
 		handle_fs_bad_blocks(ctx);
 
 	/* We don't need the block_ea_map any more */
-	if (ctx->block_ea_map) {
-		ext2fs_free_block_bitmap(ctx->block_ea_map);
-		ctx->block_ea_map = 0;
-	}
+	ext2fs_free_block_bitmap(ctx->block_ea_map);
+	ctx->block_ea_map = 0;
 
 	if (ctx->flags & E2F_FLAG_RESIZE_INODE) {
 		ext2fs_block_bitmap save_bmap;
@@ -7359,14 +7307,10 @@
 	ext2fs_free_mem(&buf);
 	ext2fs_free_dblist(fs->dblist);
 
-	if (ctx->inode_bad_map) {
-		ext2fs_free_inode_bitmap(ctx->inode_bad_map);
-		ctx->inode_bad_map = 0;
-	}
-	if (ctx->inode_reg_map) {
-		ext2fs_free_inode_bitmap(ctx->inode_reg_map);
-		ctx->inode_reg_map = 0;
-	}
+	ext2fs_free_inode_bitmap(ctx->inode_bad_map);
+	ctx->inode_bad_map = 0;
+	ext2fs_free_inode_bitmap(ctx->inode_reg_map);
+	ctx->inode_reg_map = 0;
 
 	clear_problem_context(&pctx);
 	if (ctx->large_files) {
@@ -8665,14 +8609,10 @@
 
 abort_exit:
 	e2fsck_free_dir_info(ctx);
-	if (inode_loop_detect) {
-		ext2fs_free_inode_bitmap(inode_loop_detect);
-		inode_loop_detect = 0;
-	}
-	if (inode_done_map) {
-		ext2fs_free_inode_bitmap(inode_done_map);
-		inode_done_map = 0;
-	}
+	ext2fs_free_inode_bitmap(inode_loop_detect);
+	inode_loop_detect = 0;
+	ext2fs_free_inode_bitmap(inode_done_map);
+	inode_done_map = 0;
 
 #ifdef RESOURCE_TRACK
 	if (ctx->options & E2F_OPT_TIME2) {
@@ -9497,8 +9437,7 @@
 	ctx->inode_bb_map = 0;
 	ext2fs_free_inode_bitmap(ctx->inode_imagic_map);
 	ctx->inode_imagic_map = 0;
-	if (buf)
-		ext2fs_free_mem(&buf);
+	ext2fs_free_mem(&buf);
 #ifdef RESOURCE_TRACK
 	if (ctx->options & E2F_OPT_TIME2) {
 		e2fsck_clear_progbar(ctx);
@@ -12360,10 +12299,8 @@
 
 static void free_out_dir(struct out_dir *outdir)
 {
-	if (outdir->buf)
-		free(outdir->buf);
-	if (outdir->hashes)
-		free(outdir->hashes);
+	free(outdir->buf);
+	free(outdir->hashes);
 	outdir->max = 0;
 	outdir->num =0;
 }
@@ -12872,14 +12809,10 @@
 	}
 
 	retval = write_directory(ctx, fs, &outdir, ino, fd.compress);
-	if (retval)
-		goto errout;
 
 errout:
-	if (dir_buf)
-		free(dir_buf);
-	if (fd.harray)
-		free(fd.harray);
+	free(dir_buf);
+	free(fd.harray);
 
 	free_out_dir(&outdir);
 	return retval;
@@ -12957,8 +12890,7 @@
 	if (!all_dirs)
 		ext2fs_u32_list_iterate_end(iter);
 
-	if (ctx->dirs_to_hash)
-		ext2fs_u32_list_free(ctx->dirs_to_hash);
+	ext2fs_u32_list_free(ctx->dirs_to_hash);
 	ctx->dirs_to_hash = 0;
 
 #ifdef RESOURCE_TRACK
@@ -13676,8 +13608,7 @@
 	}
 
 cleanup:
-	if (dind_buf)
-		ext2fs_free_mem(&dind_buf);
+	ext2fs_free_mem(&dind_buf);
 
  }
 
@@ -14639,8 +14570,7 @@
 cleanup:
 	if (io)
 		io_channel_close(io);
-	if (buf)
-		ext2fs_free_mem(&buf);
+	ext2fs_free_mem(&buf);
 	return (ret_sb);
 }
 
diff --git a/e2fsprogs/ext2fs/bmap.c b/e2fsprogs/ext2fs/bmap.c
index 45d49f9..4a53ebc 100644
--- a/e2fsprogs/ext2fs/bmap.c
+++ b/e2fsprogs/ext2fs/bmap.c
@@ -257,8 +257,7 @@
 	retval = block_tind_bmap(fs, bmap_flags, b, block_buf,
 				 &blocks_alloc, block, phys_blk);
 done:
-	if (buf)
-		ext2fs_free_mem(&buf);
+	ext2fs_free_mem(&buf);
 	if ((retval == 0) && (blocks_alloc || inode_dirty)) {
 		inode->i_blocks += (blocks_alloc * fs->blocksize) / 512;
 		retval = ext2fs_write_inode(fs, ino, inode);
diff --git a/e2fsprogs/ext2fs/bmove.c b/e2fsprogs/ext2fs/bmove.c
index fb319f8..7e98c0f 100644
--- a/e2fsprogs/ext2fs/bmove.c
+++ b/e2fsprogs/ext2fs/bmove.c
@@ -119,10 +119,8 @@
 	 * block move.
 	 */
 	if (flags & EXT2_BMOVE_GET_DBLIST) {
-		if (fs->dblist) {
-			ext2fs_free_dblist(fs->dblist);
-			fs->dblist = NULL;
-		}
+		ext2fs_free_dblist(fs->dblist);
+		fs->dblist = NULL;
 		retval = ext2fs_init_dblist(fs, 0);
 		if (retval)
 			return retval;
diff --git a/e2fsprogs/ext2fs/brel_ma.c b/e2fsprogs/ext2fs/brel_ma.c
index 4dcfded..557143d 100644
--- a/e2fsprogs/ext2fs/brel_ma.c
+++ b/e2fsprogs/ext2fs/brel_ma.c
@@ -186,12 +186,10 @@
 	ma = brel->priv_data;
 
 	if (ma) {
-		if (ma->entries)
-			ext2fs_free_mem(&ma->entries);
+		ext2fs_free_mem(&ma->entries);
 		ext2fs_free_mem(&ma);
 	}
-	if (brel->name)
-		ext2fs_free_mem(&brel->name);
+	ext2fs_free_mem(&brel->name);
 	ext2fs_free_mem(&brel);
 	return 0;
 }
diff --git a/e2fsprogs/ext2fs/dblist.c b/e2fsprogs/ext2fs/dblist.c
index 0cf5698..73313fa 100644
--- a/e2fsprogs/ext2fs/dblist.c
+++ b/e2fsprogs/ext2fs/dblist.c
@@ -99,8 +99,7 @@
 		fs->dblist = dblist;
 	return 0;
 cleanup:
-	if (dblist)
-		ext2fs_free_mem(&dblist);
+	ext2fs_free_mem(&dblist);
 	return retval;
 }
 
diff --git a/e2fsprogs/ext2fs/fileio.c b/e2fsprogs/ext2fs/fileio.c
index 669e80c..da349fe 100644
--- a/e2fsprogs/ext2fs/fileio.c
+++ b/e2fsprogs/ext2fs/fileio.c
@@ -73,8 +73,7 @@
 	return 0;
 
 fail:
-	if (file->buf)
-		ext2fs_free_mem(&file->buf);
+	ext2fs_free_mem(&file->buf);
 	ext2fs_free_mem(&file);
 	return retval;
 }
@@ -197,8 +196,7 @@
 
 	retval = ext2fs_file_flush(file);
 
-	if (file->buf)
-		ext2fs_free_mem(&file->buf);
+	ext2fs_free_mem(&file->buf);
 	ext2fs_free_mem(&file);
 
 	return retval;
diff --git a/e2fsprogs/ext2fs/freefs.c b/e2fsprogs/ext2fs/freefs.c
index 3fd51f2..f0f7b3e 100644
--- a/e2fsprogs/ext2fs/freefs.c
+++ b/e2fsprogs/ext2fs/freefs.c
@@ -30,25 +30,17 @@
 	if (fs->io) {
 		io_channel_close(fs->io);
 	}
-	if (fs->device_name)
-		ext2fs_free_mem(&fs->device_name);
-	if (fs->super)
-		ext2fs_free_mem(&fs->super);
-	if (fs->orig_super)
-		ext2fs_free_mem(&fs->orig_super);
-	if (fs->group_desc)
-		ext2fs_free_mem(&fs->group_desc);
-	if (fs->block_map)
-		ext2fs_free_block_bitmap(fs->block_map);
-	if (fs->inode_map)
-		ext2fs_free_inode_bitmap(fs->inode_map);
+	ext2fs_free_mem(&fs->device_name);
+	ext2fs_free_mem(&fs->super);
+	ext2fs_free_mem(&fs->orig_super);
+	ext2fs_free_mem(&fs->group_desc);
+	ext2fs_free_block_bitmap(fs->block_map);
+	ext2fs_free_inode_bitmap(fs->inode_map);
 
-	if (fs->badblocks)
-		ext2fs_badblocks_list_free(fs->badblocks);
+	ext2fs_badblocks_list_free(fs->badblocks);
 	fs->badblocks = 0;
 
-	if (fs->dblist)
-		ext2fs_free_dblist(fs->dblist);
+	ext2fs_free_dblist(fs->dblist);
 
 	if (fs->icache)
 		ext2fs_free_inode_cache(fs->icache);
@@ -64,14 +56,8 @@
 		return;
 
 	bitmap->magic = 0;
-	if (bitmap->description) {
-		ext2fs_free_mem(&bitmap->description);
-		bitmap->description = 0;
-	}
-	if (bitmap->bitmap) {
-		ext2fs_free_mem(&bitmap->bitmap);
-		bitmap->bitmap = 0;
-	}
+	ext2fs_free_mem(&bitmap->description);
+	ext2fs_free_mem(&bitmap->bitmap);
 	ext2fs_free_mem(&bitmap);
 }
 
@@ -100,10 +86,8 @@
 {
 	if (--icache->refcount)
 		return;
-	if (icache->buffer)
-		ext2fs_free_mem(&icache->buffer);
-	if (icache->cache)
-		ext2fs_free_mem(&icache->cache);
+	ext2fs_free_mem(&icache->buffer);
+	ext2fs_free_mem(&icache->cache);
 	icache->buffer_blk = 0;
 	ext2fs_free_mem(&icache);
 }
@@ -113,12 +97,10 @@
  */
 void ext2fs_u32_list_free(ext2_u32_list bb)
 {
-	if (bb->magic != EXT2_ET_MAGIC_BADBLOCKS_LIST)
+	if (!bb || bb->magic != EXT2_ET_MAGIC_BADBLOCKS_LIST)
 		return;
 
-	if (bb->list)
-		ext2fs_free_mem(&bb->list);
-	bb->list = 0;
+	ext2fs_free_mem(&bb->list);
 	ext2fs_free_mem(&bb);
 }
 
@@ -136,9 +118,7 @@
 	if (!dblist || (dblist->magic != EXT2_ET_MAGIC_DBLIST))
 		return;
 
-	if (dblist->list)
-		ext2fs_free_mem(&dblist->list);
-	dblist->list = 0;
+	ext2fs_free_mem(&dblist->list);
 	if (dblist->fs && dblist->fs->dblist == dblist)
 		dblist->fs->dblist = 0;
 	dblist->magic = 0;
diff --git a/e2fsprogs/ext2fs/get_pathname.c b/e2fsprogs/ext2fs/get_pathname.c
index 594090d..0004790 100644
--- a/e2fsprogs/ext2fs/get_pathname.c
+++ b/e2fsprogs/ext2fs/get_pathname.c
@@ -132,8 +132,7 @@
 	retval = 0;
 
 cleanup:
-	if (gp.name)
-		ext2fs_free_mem(&gp.name);
+	ext2fs_free_mem(&gp.name);
 	return retval;
 }
 
diff --git a/e2fsprogs/ext2fs/icount.c b/e2fsprogs/ext2fs/icount.c
index 0167777..7ae2a5c 100644
--- a/e2fsprogs/ext2fs/icount.c
+++ b/e2fsprogs/ext2fs/icount.c
@@ -59,12 +59,9 @@
 		return;
 
 	icount->magic = 0;
-	if (icount->list)
-		ext2fs_free_mem(&icount->list);
-	if (icount->single)
-		ext2fs_free_inode_bitmap(icount->single);
-	if (icount->multiple)
-		ext2fs_free_inode_bitmap(icount->multiple);
+	ext2fs_free_mem(&icount->list);
+	ext2fs_free_inode_bitmap(icount->single);
+	ext2fs_free_inode_bitmap(icount->multiple);
 	ext2fs_free_mem(&icount);
 }
 
diff --git a/e2fsprogs/ext2fs/imager.c b/e2fsprogs/ext2fs/imager.c
index 00eb717..ece66fc 100644
--- a/e2fsprogs/ext2fs/imager.c
+++ b/e2fsprogs/ext2fs/imager.c
@@ -371,7 +371,6 @@
 
 	retval = 0;
 errout:
-	if (buf)
-		free(buf);
+	free(buf);
 	return (retval);
 }
diff --git a/e2fsprogs/ext2fs/inode.c b/e2fsprogs/ext2fs/inode.c
index e50bece..4c386c7 100644
--- a/e2fsprogs/ext2fs/inode.c
+++ b/e2fsprogs/ext2fs/inode.c
@@ -123,7 +123,7 @@
 		save_get_blocks = fs->get_blocks;
 		fs->get_blocks = 0;
 		retval = ext2fs_read_bb_inode(fs, &fs->badblocks);
-		if (retval && fs->badblocks) {
+		if (retval) {
 			ext2fs_badblocks_list_free(fs->badblocks);
 			fs->badblocks = 0;
 		}
diff --git a/e2fsprogs/ext2fs/irel_ma.c b/e2fsprogs/ext2fs/irel_ma.c
index d9e73f7..f4fe1e0 100644
--- a/e2fsprogs/ext2fs/irel_ma.c
+++ b/e2fsprogs/ext2fs/irel_ma.c
@@ -309,8 +309,7 @@
 		return ENOENT;
 
 	ma->entries[(unsigned) new] = ma->entries[(unsigned) old];
-	if (ma->ref_entries[(unsigned) new].refs)
-		ext2fs_free_mem(&ma->ref_entries[(unsigned) new].refs);
+	ext2fs_free_mem(&ma->ref_entries[(unsigned) new].refs);
 	ma->ref_entries[(unsigned) new] = ma->ref_entries[(unsigned) old];
 
 	ma->entries[(unsigned) old].new = 0;
@@ -332,8 +331,7 @@
 		return ENOENT;
 
 	ma->entries[old].new = 0;
-	if (ma->ref_entries[(unsigned) old].refs)
-		ext2fs_free_mem(&ma->ref_entries[(unsigned) old].refs);
+	ext2fs_free_mem(&ma->ref_entries[(unsigned) old].refs);
 	ma->orig_map[ma->entries[(unsigned) old].orig] = 0;
 
 	ma->ref_entries[(unsigned) old].num = 0;
@@ -352,21 +350,17 @@
 	ma = irel->priv_data;
 
 	if (ma) {
-		if (ma->orig_map)
-			ext2fs_free_mem(&ma->orig_map);
-		if (ma->entries)
-			ext2fs_free_mem(&ma->entries);
+		ext2fs_free_mem(&ma->orig_map);
+		ext2fs_free_mem(&ma->entries);
 		if (ma->ref_entries) {
 			for (ino = 0; ino <= ma->max_inode; ino++) {
-				if (ma->ref_entries[(unsigned) ino].refs)
-					ext2fs_free_mem(&ma->ref_entries[(unsigned) ino].refs);
+				ext2fs_free_mem(&ma->ref_entries[(unsigned) ino].refs);
 			}
 			ext2fs_free_mem(&ma->ref_entries);
 		}
 		ext2fs_free_mem(&ma);
 	}
-	if (irel->name)
-		ext2fs_free_mem(&irel->name);
+	ext2fs_free_mem(&irel->name);
 	ext2fs_free_mem(&irel);
 	return 0;
 }
diff --git a/e2fsprogs/ext2fs/mkdir.c b/e2fsprogs/ext2fs/mkdir.c
index bf46e50..c3c0371 100644
--- a/e2fsprogs/ext2fs/mkdir.c
+++ b/e2fsprogs/ext2fs/mkdir.c
@@ -133,8 +133,7 @@
 	ext2fs_inode_alloc_stats2(fs, ino, +1, 1);
 
 cleanup:
-	if (block)
-		ext2fs_free_mem(&block);
+	ext2fs_free_mem(&block);
 	return retval;
 
 }
diff --git a/e2fsprogs/ext2fs/namei.c b/e2fsprogs/ext2fs/namei.c
index 6ce4bb3..2c372f4 100644
--- a/e2fsprogs/ext2fs/namei.c
+++ b/e2fsprogs/ext2fs/namei.c
@@ -61,8 +61,7 @@
 		pathname = (char *)&(ei.i_block[0]);
 	retval = open_namei(fs, root, dir, pathname, ei.i_size, 1,
 			    link_count, buf, res_inode);
-	if (buffer)
-		ext2fs_free_mem(&buffer);
+	ext2fs_free_mem(&buffer);
 	return retval;
 }
 
diff --git a/e2fsprogs/ext2fs/rw_bitmaps.c b/e2fsprogs/ext2fs/rw_bitmaps.c
index ae7b6e0..d5698a2 100644
--- a/e2fsprogs/ext2fs/rw_bitmaps.c
+++ b/e2fsprogs/ext2fs/rw_bitmaps.c
@@ -163,8 +163,7 @@
 	if (retval)
 		return retval;
 	if (do_block) {
-		if (fs->block_map)
-			ext2fs_free_block_bitmap(fs->block_map);
+		ext2fs_free_block_bitmap(fs->block_map);
 		sprintf(buf, "block bitmap for %s", fs->device_name);
 		retval = ext2fs_allocate_block_bitmap(fs, buf, &fs->block_map);
 		if (retval)
@@ -172,8 +171,7 @@
 		block_bitmap = fs->block_map->bitmap;
 	}
 	if (do_inode) {
-		if (fs->inode_map)
-			ext2fs_free_inode_bitmap(fs->inode_map);
+		ext2fs_free_inode_bitmap(fs->inode_map);
 		sprintf(buf, "inode bitmap for %s", fs->device_name);
 		retval = ext2fs_allocate_inode_bitmap(fs, buf, &fs->inode_map);
 		if (retval)
@@ -247,14 +245,11 @@
 cleanup:
 	if (do_block) {
 		ext2fs_free_mem(&fs->block_map);
-		fs->block_map = 0;
 	}
 	if (do_inode) {
 		ext2fs_free_mem(&fs->inode_map);
-		fs->inode_map = 0;
 	}
-	if (buf)
-		ext2fs_free_mem(&buf);
+	ext2fs_free_mem(&buf);
 	return retval;
 }
 
diff --git a/e2fsprogs/ext2fs/test_io.c b/e2fsprogs/ext2fs/test_io.c
index d4b3653..45f9090 100644
--- a/e2fsprogs/ext2fs/test_io.c
+++ b/e2fsprogs/ext2fs/test_io.c
@@ -203,10 +203,8 @@
 	return 0;
 
 cleanup:
-	if (io)
-		ext2fs_free_mem(&io);
-	if (data)
-		ext2fs_free_mem(&data);
+	ext2fs_free_mem(&io);
+	ext2fs_free_mem(&data);
 	return retval;
 }
 
@@ -229,8 +227,7 @@
 		fclose(data->outfile);
 
 	ext2fs_free_mem(&channel->private_data);
-	if (channel->name)
-		ext2fs_free_mem(&channel->name);
+	ext2fs_free_mem(&channel->name);
 	ext2fs_free_mem(&channel);
 	return retval;
 }
diff --git a/e2fsprogs/ext2fs/unix_io.c b/e2fsprogs/ext2fs/unix_io.c
index 36b2225..7f57afd 100644
--- a/e2fsprogs/ext2fs/unix_io.c
+++ b/e2fsprogs/ext2fs/unix_io.c
@@ -280,8 +280,7 @@
 		cache->access_time = 0;
 		cache->dirty = 0;
 		cache->in_use = 0;
-		if (cache->buf)
-			ext2fs_free_mem(&cache->buf);
+		ext2fs_free_mem(&cache->buf);
 		cache->buf = 0;
 	}
 }
@@ -461,8 +460,7 @@
 		free_cache(data);
 		ext2fs_free_mem(&data);
 	}
-	if (io)
-		ext2fs_free_mem(&io);
+	ext2fs_free_mem(&io);
 	return retval;
 }
 
@@ -487,8 +485,7 @@
 	free_cache(data);
 
 	ext2fs_free_mem(&channel->private_data);
-	if (channel->name)
-		ext2fs_free_mem(&channel->name);
+	ext2fs_free_mem(&channel->name);
 	ext2fs_free_mem(&channel);
 	return retval;
 }
diff --git a/editors/sed.c b/editors/sed.c
index b08eae4..f58f442 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -556,10 +556,8 @@
 	}
 
 	/* If we glued multiple lines together, free the memory. */
-	if(add_cmd_line) {
-		free(add_cmd_line);
-		add_cmd_line=NULL;
-	}
+	free(add_cmd_line);
+	add_cmd_line=NULL;
 }
 
 /* Append to a string, reallocating memory as necessary. */
diff --git a/modutils/insmod.c b/modutils/insmod.c
index d5d58a1..d40012d 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -4231,9 +4231,8 @@
 #ifdef CONFIG_FEATURE_CLEAN_UP
 	if(fp)
 		fclose(fp);
-	if(tmp1) {
-		free(tmp1);
-	} else {
+	free(tmp1);
+	if(!tmp1) {
 		free(m_name);
 	}
 	free(m_filename);
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 699fa7d..156ceb7 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -1356,16 +1356,15 @@
 			} else {
 				/* Remove an interface from the linked list */
 				if (iface_state) {
-					/* This needs to be done better */
+					const llist_t *link = iface_state->link;
 					free(iface_state->data);
-					free(iface_state->link);
-					if (iface_state->link) {
-						iface_state->data = iface_state->link->data;
-						iface_state->link = iface_state->link->link;
-					} else {
-						iface_state->data = NULL;
-						iface_state->link = NULL;
+					iface_state->data = NULL;
+					iface_state->link = NULL;
+					if (link) {
+						iface_state->data = link->data;
+						iface_state->link = link->link;
 					}
+					free(link);
 				}
 			}
 		}
diff --git a/networking/inetd.c b/networking/inetd.c
index 9f6acdb..931052a 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -413,8 +413,7 @@
   free (cp->se_group);
   free (cp->se_server);
   for (i = 0; i < MAXARGV; i++)
-	if (cp->se_argv[i])
-	  free (cp->se_argv[i]);
+	free (cp->se_argv[i]);
 }
 
 static int bump_nofile (void)
diff --git a/networking/traceroute.c b/networking/traceroute.c
index e6011cc..22d27f2 100644
--- a/networking/traceroute.c
+++ b/networking/traceroute.c
@@ -902,10 +902,8 @@
 static void
 freehostinfo(struct hostinfo *hi)
 {
-	if (hi->name != NULL) {
-		free(hi->name);
-		hi->name = NULL;
-	}
+	free(hi->name);
+	hi->name = NULL;
 	free((char *)hi->addrs);
 	free((char *)hi);
 }
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index e035bd4..7e7f94a 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -217,7 +217,7 @@
 		case 'c':
 			if (no_clientid) show_usage();
 			len = strlen(optarg) > 255 ? 255 : strlen(optarg);
-			if (client_config.clientid) free(client_config.clientid);
+			free(client_config.clientid);
 			client_config.clientid = xmalloc(len + 2);
 			client_config.clientid[OPT_CODE] = DHCP_CLIENT_ID;
 			client_config.clientid[OPT_LEN] = len;
@@ -230,7 +230,7 @@
 			break;
 		case 'V':
 			len = strlen(optarg) > 255 ? 255 : strlen(optarg);
-			if (client_config.vendorclass) free(client_config.vendorclass);
+			free(client_config.vendorclass);
 			client_config.vendorclass = xmalloc(len + 2);
 			client_config.vendorclass[OPT_CODE] = DHCP_VENDOR;
 			client_config.vendorclass[OPT_LEN] = len;
@@ -245,7 +245,7 @@
 		case 'h':
 		case 'H':
 			len = strlen(optarg) > 255 ? 255 : strlen(optarg);
-			if (client_config.hostname) free(client_config.hostname);
+			free(client_config.hostname);
 			client_config.hostname = xmalloc(len + 2);
 			client_config.hostname[OPT_CODE] = DHCP_HOST_NAME;
 			client_config.hostname[OPT_LEN] = len;
@@ -253,7 +253,7 @@
 			break;
 		case 'F':
 			len = strlen(optarg) > 255 ? 255 : strlen(optarg);
-			if (client_config.fqdn) free(client_config.fqdn);
+			free(client_config.fqdn);
 			client_config.fqdn = xmalloc(len + 5);
 			client_config.fqdn[OPT_CODE] = DHCP_FQDN;
 			client_config.fqdn[OPT_LEN] = len + 3;
diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c
index 01534f2..416b1fe 100644
--- a/networking/udhcp/files.c
+++ b/networking/udhcp/files.c
@@ -62,7 +62,7 @@
 {
 	char **dest = arg;
 
-	if (*dest) free(*dest);
+	free(*dest);
 	*dest = strdup(line);
 
 	return 1;
diff --git a/scripts/config/confdata.c b/scripts/config/confdata.c
index c871245..3051702 100644
--- a/scripts/config/confdata.c
+++ b/scripts/config/confdata.c
@@ -102,8 +102,7 @@
 		case S_INT:
 		case S_HEX:
 		case S_STRING:
-			if (sym->user.val)
-				free(sym->user.val);
+			free(sym->user.val);
 		default:
 			sym->user.val = NULL;
 			sym->user.tri = no;