[PATCH] remove all useless-if-before-kfree tests, and those before free

From: Jim Meyering
Date: Sat May 22 2010 - 16:49:54 EST



I've been using tools to automate the detection and removal of useless
if-before-free tests for some time, and have applied them to numerous
projects. Here's a sampling of those discussions, with justification:

http://thread.gmane.org/gmane.comp.version-control.git/74187
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/12712
http://thread.gmane.org/gmane.emacs.devel/98144
http://thread.gmane.org/gmane.comp.lib.glibc.alpha/13092

Quick summary:

This patch replaces code like this:

if (copy)
kfree (copy);

with this:

kfree (copy);

The patch converts other variants, too, like "if (copy != NULL) ...".
I've performed the conversion two ways: 1) fully mechanically using spatch,
2) mostly mechanically using gnulib's useless-if-before-free

http://git.sv.gnu.org/cgit/gnulib.git/tree/build-aux/useless-if-before-free

script to detect offenders, and the code in its comments to perform the
conversions. Comparing the results shows nothing surprising,
other than a couple of syntax errors introduced by spatch (from
coccinelle-0.2.0-0.rc1.2.fc13.x86_64).

Here is how I used spatch:

---------------
git ls-files -z \
|xargs -0 ~/w/co/gnulib/build-aux/useless-if-before-free -l --name=kfree \
> knames
tr '\0' '\n' < knames > k; mv k knames
wc -l knames
131 knames
cat > if-before-kfree.cocci <<\EOF
@r@
expression E;
@@
- if (E != NULL) { kfree(E); }
+ kfree(E);
EOF

cat > if-before-free.cocci <<\EOF
@r@
expression E;
@@
- if (E != NULL) { free(E); }
+ free(E);
EOF

git ls-files -z \
|xargs -0 ~/w/co/gnulib/build-aux/useless-if-before-free -l > fnames
tr '\0' '\n' < fnames > k; mv k fnames
wc -l fnames
14 fnames

xargs spatch -inplace -linux_spacing -sp_file if-before-kfree.cocci < knames
xargs spatch -inplace -linux_spacing -sp_file if-before-free.cocci < fnames
---------------

FYI, here are the diffs comparing the spatch-induced changes to
the ones below:

http://meyering.net/code/spatch-vs-semiautomated--if-before-kfree.diff

If you're interested in keeping new useless-if tests from
being introduced into the code, you may want to use code
like this:

http://git.savannah.gnu.org/cgit/gnulib.git/tree/top/maint.mk#n252

Signed-off-by: Jim Meyering <meyering@xxxxxxxxxx>
---
arch/arm/mach-omap2/pm-debug.c | 3 +-
arch/arm/oprofile/common.c | 3 +-
arch/arm/plat-omap/mcbsp.c | 3 +-
arch/um/kernel/skas/mmu.c | 3 +-
crypto/ablkcipher.c | 3 +-
drivers/acpi/processor_core.c | 3 +-
drivers/ata/sata_fsl.c | 3 +-
drivers/block/z2ram.c | 5 +--
drivers/char/hvc_iucv.c | 3 +-
drivers/char/n_hdlc.c | 20 +++----
drivers/char/pcmcia/ipwireless/hardware.c | 3 +-
drivers/crypto/talitos.c | 3 +-
drivers/gpu/drm/i915/intel_dvo.c | 3 +-
drivers/gpu/drm/radeon/atom.c | 3 +-
drivers/gpu/drm/radeon/radeon_connectors.c | 6 +--
drivers/gpu/drm/radeon/radeon_display.c | 4 +-
drivers/hid/hid-prodikeys.c | 3 +-
drivers/hid/hid-zydacron.c | 3 +-
drivers/media/dvb/dvb-usb/cinergyT2-fe.c | 3 +-
drivers/media/dvb/siano/smscoreapi.c | 3 +-
drivers/media/video/ivtv/ivtvfb.c | 3 +-
drivers/message/fusion/mptfc.c | 3 +-
drivers/message/fusion/mptspi.c | 3 +-
drivers/misc/sgi-xp/xpc_partition.c | 3 +-
drivers/mmc/card/queue.c | 15 ++----
drivers/mmc/core/bus.c | 3 +-
drivers/mmc/core/sdio_bus.c | 3 +-
drivers/mtd/chips/cfi_cmdset_0001.c | 3 +-
drivers/mtd/maps/ck804xrom.c | 3 +-
drivers/net/forcedeth.c | 12 ++---
drivers/net/irda/kingsun-sir.c | 4 +-
drivers/net/ixgbe/ixgbe_main.c | 3 +-
drivers/net/myri10ge/myri10ge.c | 3 +-
drivers/net/netxen/netxen_nic_main.c | 3 +-
drivers/net/ppp_mppe.c | 6 +--
drivers/net/qla3xxx.c | 2 +-
drivers/net/qlcnic/qlcnic_main.c | 3 +-
drivers/net/stmmac/stmmac_main.c | 3 +-
drivers/net/usb/hso.c | 3 +-
drivers/net/wireless/ath/ath5k/attach.c | 3 +-
drivers/net/wireless/ipw2x00/libipw_module.c | 3 +-
drivers/net/wireless/orinoco/orinoco_usb.c | 3 +-
drivers/rtc/rtc-m48t59.c | 3 +-
drivers/s390/char/monreader.c | 3 +-
drivers/scsi/aic7xxx/aicasm/aicasm_scan.l | 3 +-
drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c | 12 ++---
drivers/scsi/aic94xx/aic94xx_init.c | 3 +-
drivers/scsi/lpfc/lpfc_bsg.c | 3 +-
drivers/staging/comedi/drivers/cb_das16_cs.c | 3 +-
drivers/staging/comedi/drivers/das08_cs.c | 3 +-
drivers/staging/comedi/drivers/das16.c | 6 +--
drivers/staging/comedi/drivers/ni_at_a2150.c | 3 +-
drivers/staging/comedi/drivers/ni_daq_700.c | 3 +-
drivers/staging/comedi/drivers/ni_daq_dio24.c | 3 +-
drivers/staging/comedi/drivers/ni_labpc.c | 3 +-
drivers/staging/comedi/drivers/quatech_daqp_cs.c | 3 +-
drivers/staging/comedi/drivers/serial2002.c | 16 ++----
drivers/staging/crystalhd/crystalhd_lnx.c | 3 +-
drivers/staging/cx25821/cx25821-audio-upstream.c | 3 +-
.../staging/cx25821/cx25821-video-upstream-ch2.c | 3 +-
drivers/staging/cx25821/cx25821-video-upstream.c | 3 +-
drivers/staging/dream/camera/msm_vfe7x.c | 3 +-
drivers/staging/go7007/go7007-usb.c | 6 +--
drivers/staging/pohmelfs/config.c | 6 +--
drivers/staging/rt2860/common/spectrum.c | 6 +--
drivers/staging/rt2860/rt_linux.c | 6 +--
.../rtl8187se/ieee80211/ieee80211_softmac.c | 3 +-
drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c | 1 -
drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c | 1 -
drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c | 1 -
drivers/staging/rtl8192u/ieee80211/cipher.c | 3 +-
drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c | 1 -
drivers/staging/rtl8192u/r8192U_core.c | 8 +--
drivers/staging/serqt_usb2/serqt_usb2.c | 3 +-
drivers/staging/ti-st/bt_drv.c | 3 +-
drivers/staging/usbip/stub_main.c | 6 +--
drivers/staging/vme/bridges/vme_ca91cx42.c | 3 +-
drivers/staging/vme/bridges/vme_tsi148.c | 3 +-
drivers/staging/vt6655/device_main.c | 3 +-
drivers/staging/vt6655/hostap.c | 3 +-
drivers/staging/vt6655/wpactl.c | 3 +-
drivers/staging/vt6656/firmware.c | 6 +--
drivers/staging/vt6656/hostap.c | 3 +-
drivers/staging/vt6656/main_usb.c | 12 ++---
drivers/staging/vt6656/wpactl.c | 3 +-
drivers/staging/winbond/wb35reg.c | 3 +-
drivers/staging/wlan-ng/prism2fw.c | 3 +-
drivers/usb/serial/mos7840.c | 7 +--
drivers/uwb/wlp/wlp-lc.c | 3 +-
drivers/video/au1200fb.c | 6 +--
drivers/video/console/softcursor.c | 3 +-
drivers/video/uvesafb.c | 18 ++----
fs/btrfs/free-space-cache.c | 6 +--
fs/ceph/crush/crush.c | 2 +-
fs/dlm/memory.c | 3 +-
fs/ecryptfs/keystore.c | 3 +-
fs/ecryptfs/messaging.c | 6 +--
fs/jffs2/acl.c | 3 +-
fs/jffs2/scan.c | 3 +-
fs/jffs2/xattr.c | 3 +-
fs/nfs/nfs4proc.c | 3 +-
fs/ocfs2/alloc.c | 3 +-
fs/ocfs2/cluster/heartbeat.c | 6 +--
fs/ocfs2/cluster/tcp.c | 6 +--
fs/ocfs2/dlm/dlmdomain.c | 3 +-
fs/ocfs2/dlm/dlmrecovery.c | 6 +--
fs/ocfs2/extent_map.c | 3 +-
fs/ocfs2/journal.c | 9 +--
fs/ocfs2/localalloc.c | 6 +--
fs/ocfs2/super.c | 6 +--
include/net/netfilter/nf_conntrack_extend.h | 3 +-
net/caif/cfctrl.c | 3 +-
net/tipc/name_distr.c | 4 +-
scripts/dtc/data.c | 3 +-
scripts/genksyms/lex.c_shipped | 3 +-
scripts/genksyms/lex.l | 3 +-
scripts/kconfig/confdata.c | 3 +-
scripts/kconfig/util.c | 3 +-
sound/aoa/codecs/onyx.c | 3 +-
sound/core/control.c | 3 +-
sound/core/pcm.c | 3 +-
sound/pci/asihpi/hpifunc.c | 3 +-
sound/pci/ctxfi/ctdaio.c | 6 +--
sound/pci/emu10k1/emufx.c | 3 +-
sound/pci/hda/hda_codec.c | 3 +-
tools/perf/util/probe-event.c | 54 +++++++-------------
.../perf/util/scripting-engines/trace-event-perl.c | 3 +-
.../util/scripting-engines/trace-event-python.c | 3 +-
tools/perf/util/thread.c | 6 +--
tools/perf/util/trace-event-parse.c | 9 +--
usr/gen_init_cpio.c | 2 +-
131 files changed, 198 insertions(+), 402 deletions(-)

diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index 723b44e..4d3012b 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -289,8 +289,7 @@ static int pm_dbg_show_regs(struct seq_file *s, void *unused)
i++;
}

- if (store != NULL)
- kfree(store);
+ kfree(store);

return 0;
}
diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c
index 0691176..472e4d9 100644
--- a/arch/arm/oprofile/common.c
+++ b/arch/arm/oprofile/common.c
@@ -413,8 +413,7 @@ void oprofile_arch_exit(void)
}
}

- if (counter_config)
- kfree(counter_config);
+ kfree(counter_config);
}
#else
int __init oprofile_arch_init(struct oprofile_operations *ops)
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index 7e669c9..ff07a9c 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -854,8 +854,7 @@ void omap_mcbsp_free(unsigned int id)
mcbsp->reg_cache = NULL;
spin_unlock(&mcbsp->lock);

- if (reg_cache)
- kfree(reg_cache);
+ kfree(reg_cache);
}
EXPORT_SYMBOL(omap_mcbsp_free);

diff --git a/arch/um/kernel/skas/mmu.c b/arch/um/kernel/skas/mmu.c
index 3d099f9..e36210d 100644
--- a/arch/um/kernel/skas/mmu.c
+++ b/arch/um/kernel/skas/mmu.c
@@ -151,8 +151,7 @@ void arch_exit_mmap(struct mm_struct *mm)
{
pte_t *pte;

- if (mm->context.stub_pages != NULL)
- kfree(mm->context.stub_pages);
+ kfree(mm->context.stub_pages);
pte = virt_to_pte(mm, STUB_CODE);
if (pte != NULL)
pte_clear(mm, STUB_CODE, pte);
diff --git a/crypto/ablkcipher.c b/crypto/ablkcipher.c
index 98a6610..267be46 100644
--- a/crypto/ablkcipher.c
+++ b/crypto/ablkcipher.c
@@ -141,8 +141,7 @@ err:

if (walk->iv != req->info)
memcpy(req->info, walk->iv, tfm->crt_ablkcipher.ivsize);
- if (walk->iv_buffer)
- kfree(walk->iv_buffer);
+ kfree(walk->iv_buffer);

return err;
}
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index 5128435..ee9bd4a 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -164,8 +164,7 @@ static int map_mat_entry(acpi_handle handle, int type, u32 acpi_id)
}

exit:
- if (buffer.pointer)
- kfree(buffer.pointer);
+ kfree(buffer.pointer);
return apic_id;
}

diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index a69192b..627fd95 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -1364,8 +1364,7 @@ error_exit_with_cleanup:

if (hcr_base)
iounmap(hcr_base);
- if (host_priv)
- kfree(host_priv);
+ kfree(host_priv);

return retval;
}
diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c
index 9114654..963d256 100644
--- a/drivers/block/z2ram.c
+++ b/drivers/block/z2ram.c
@@ -397,10 +397,7 @@ static void __exit z2_exit(void)
}
}

- if ( z2ram_map != NULL )
- {
- kfree( z2ram_map );
- }
+ kfree( z2ram_map );
}

return;
diff --git a/drivers/char/hvc_iucv.c b/drivers/char/hvc_iucv.c
index 5a80ad6..8a32d76 100644
--- a/drivers/char/hvc_iucv.c
+++ b/drivers/char/hvc_iucv.c
@@ -1313,8 +1313,7 @@ out_error_memory:
mempool_destroy(hvc_iucv_mempool);
kmem_cache_destroy(hvc_iucv_buffer_cache);
out_error:
- if (hvc_iucv_filter)
- kfree(hvc_iucv_filter);
+ kfree(hvc_iucv_filter);
hvc_iucv_devices = 0; /* ensure that we do not provide any device */
return rc;
}
diff --git a/drivers/char/n_hdlc.c b/drivers/char/n_hdlc.c
index c68118e..414c691 100644
--- a/drivers/char/n_hdlc.c
+++ b/drivers/char/n_hdlc.c
@@ -260,31 +260,27 @@ static void n_hdlc_release(struct n_hdlc *n_hdlc)
/* Release transmit and receive buffers */
for(;;) {
buf = n_hdlc_buf_get(&n_hdlc->rx_free_buf_list);
- if (buf) {
- kfree(buf);
- } else
+ if (!buf)
break;
+ kfree(buf);
}
for(;;) {
buf = n_hdlc_buf_get(&n_hdlc->tx_free_buf_list);
- if (buf) {
- kfree(buf);
- } else
+ if (!buf)
break;
+ kfree(buf);
}
for(;;) {
buf = n_hdlc_buf_get(&n_hdlc->rx_buf_list);
- if (buf) {
- kfree(buf);
- } else
+ if (!buf)
break;
+ kfree(buf);
}
for(;;) {
buf = n_hdlc_buf_get(&n_hdlc->tx_buf_list);
- if (buf) {
- kfree(buf);
- } else
+ if (!buf)
break;
+ kfree(buf);
}
kfree(n_hdlc->tbuf);
kfree(n_hdlc);
diff --git a/drivers/char/pcmcia/ipwireless/hardware.c b/drivers/char/pcmcia/ipwireless/hardware.c
index 99cffda..e1a703a 100644
--- a/drivers/char/pcmcia/ipwireless/hardware.c
+++ b/drivers/char/pcmcia/ipwireless/hardware.c
@@ -1732,8 +1732,7 @@ void ipwireless_hardware_free(struct ipw_hardware *hw)
flush_scheduled_work();

for (i = 0; i < NL_NUM_OF_ADDRESSES; i++)
- if (hw->packet_assembler[i] != NULL)
- kfree(hw->packet_assembler[i]);
+ kfree(hw->packet_assembler[i]);

for (i = 0; i < NL_NUM_OF_PRIORITIES; i++)
list_for_each_entry_safe(tp, tq, &hw->tx_queue[i], queue) {
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index 6a0f59d..df4995d 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -2326,8 +2326,7 @@ static int talitos_remove(struct of_device *ofdev)
talitos_unregister_rng(dev);

for (i = 0; i < priv->num_channels; i++)
- if (priv->chan[i].fifo)
- kfree(priv->chan[i].fifo);
+ kfree(priv->chan[i].fifo);

kfree(priv->chan);

diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index 227feca..b3955bc 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -283,8 +283,7 @@ static void intel_dvo_enc_destroy(struct drm_encoder *encoder)
if (dvo) {
if (dvo->dev_ops->destroy)
dvo->dev_ops->destroy(dvo);
- if (dvo->panel_fixed_mode)
- kfree(dvo->panel_fixed_mode);
+ kfree(dvo->panel_fixed_mode);
}
if (intel_encoder->i2c_bus)
intel_i2c_destroy(intel_encoder->i2c_bus);
diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
index 1d56983..8a5b15d 100644
--- a/drivers/gpu/drm/radeon/atom.c
+++ b/drivers/gpu/drm/radeon/atom.c
@@ -1304,8 +1304,7 @@ int atom_asic_init(struct atom_context *ctx)

void atom_destroy(struct atom_context *ctx)
{
- if (ctx->iio)
- kfree(ctx->iio);
+ kfree(ctx->iio);
kfree(ctx);
}

diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index 0c7ccc6..c25f361 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -506,8 +506,7 @@ static void radeon_connector_destroy(struct drm_connector *connector)

if (radeon_connector->ddc_bus)
radeon_i2c_destroy(radeon_connector->ddc_bus);
- if (radeon_connector->edid)
- kfree(radeon_connector->edid);
+ kfree(radeon_connector->edid);
kfree(radeon_connector->con_priv);
drm_sysfs_connector_remove(connector);
drm_connector_cleanup(connector);
@@ -946,8 +945,7 @@ static void radeon_dp_connector_destroy(struct drm_connector *connector)

if (radeon_connector->ddc_bus)
radeon_i2c_destroy(radeon_connector->ddc_bus);
- if (radeon_connector->edid)
- kfree(radeon_connector->edid);
+ kfree(radeon_connector->edid);
if (radeon_dig_connector->dp_i2c_bus)
radeon_i2c_destroy(radeon_dig_connector->dp_i2c_bus);
kfree(radeon_connector->con_priv);
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index 1006549..46beef9 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -429,9 +429,7 @@ static int radeon_ddc_dump(struct drm_connector *connector)
if (!radeon_connector->ddc_bus)
return -1;
edid = drm_get_edid(connector, &radeon_connector->ddc_bus->adapter);
- if (edid) {
- kfree(edid);
- }
+ kfree(edid);
return ret;
}

diff --git a/drivers/hid/hid-prodikeys.c b/drivers/hid/hid-prodikeys.c
index 845f428..3e72cea 100644
--- a/drivers/hid/hid-prodikeys.c
+++ b/drivers/hid/hid-prodikeys.c
@@ -848,8 +848,7 @@ static int pk_probe(struct hid_device *hdev, const struct hid_device_id *id)
err_stop:
hid_hw_stop(hdev);
err_free:
- if (pm != NULL)
- kfree(pm);
+ kfree(pm);

kfree(pk);
return ret;
diff --git a/drivers/hid/hid-zydacron.c b/drivers/hid/hid-zydacron.c
index 9e8d35a..c9d71c8 100644
--- a/drivers/hid/hid-zydacron.c
+++ b/drivers/hid/hid-zydacron.c
@@ -202,8 +202,7 @@ static void zc_remove(struct hid_device *hdev)

hid_hw_stop(hdev);

- if (NULL != zc)
- kfree(zc);
+ kfree(zc);
}

static const struct hid_device_id zc_devices[] = {
diff --git a/drivers/media/dvb/dvb-usb/cinergyT2-fe.c b/drivers/media/dvb/dvb-usb/cinergyT2-fe.c
index 9cd51ac..17919eb 100644
--- a/drivers/media/dvb/dvb-usb/cinergyT2-fe.c
+++ b/drivers/media/dvb/dvb-usb/cinergyT2-fe.c
@@ -295,8 +295,7 @@ static int cinergyt2_fe_get_frontend(struct dvb_frontend *fe,
static void cinergyt2_fe_release(struct dvb_frontend *fe)
{
struct cinergyt2_fe_state *state = fe->demodulator_priv;
- if (state != NULL)
- kfree(state);
+ kfree(state);
}

static struct dvb_frontend_ops cinergyt2_fe_ops;
diff --git a/drivers/media/dvb/siano/smscoreapi.c b/drivers/media/dvb/siano/smscoreapi.c
index 0c87a3c..97a8668 100644
--- a/drivers/media/dvb/siano/smscoreapi.c
+++ b/drivers/media/dvb/siano/smscoreapi.c
@@ -724,8 +724,7 @@ void smscore_unregister_device(struct smscore_device_t *coredev)
dma_free_coherent(NULL, coredev->common_buffer_size,
coredev->common_buffer, coredev->common_buffer_phys);

- if (coredev->fw_buf != NULL)
- kfree(coredev->fw_buf);
+ kfree(coredev->fw_buf);

list_del(&coredev->entry);
kfree(coredev);
diff --git a/drivers/media/video/ivtv/ivtvfb.c b/drivers/media/video/ivtv/ivtvfb.c
index 49e1a28..3edf881 100644
--- a/drivers/media/video/ivtv/ivtvfb.c
+++ b/drivers/media/video/ivtv/ivtvfb.c
@@ -1125,8 +1125,7 @@ static void ivtvfb_release_buffers (struct ivtv *itv)
fb_dealloc_cmap(&oi->ivtvfb_info.cmap);

/* Release pseudo palette */
- if (oi->ivtvfb_info.pseudo_palette)
- kfree(oi->ivtvfb_info.pseudo_palette);
+ kfree(oi->ivtvfb_info.pseudo_palette);

#ifdef CONFIG_MTRR
if (oi->fb_end_aligned_physaddr) {
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c
index b5f03ad..f4501dc 100644
--- a/drivers/message/fusion/mptfc.c
+++ b/drivers/message/fusion/mptfc.c
@@ -526,8 +526,7 @@ mptfc_target_destroy(struct scsi_target *starget)
if (ri) /* better be! */
ri->starget = NULL;
}
- if (starget->hostdata)
- kfree(starget->hostdata);
+ kfree(starget->hostdata);
starget->hostdata = NULL;
}

diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
index 1abaa5d..5c81e35 100644
--- a/drivers/message/fusion/mptspi.c
+++ b/drivers/message/fusion/mptspi.c
@@ -461,8 +461,7 @@ static int mptspi_target_alloc(struct scsi_target *starget)
static void
mptspi_target_destroy(struct scsi_target *starget)
{
- if (starget->hostdata)
- kfree(starget->hostdata);
+ kfree(starget->hostdata);
starget->hostdata = NULL;
}

diff --git a/drivers/misc/sgi-xp/xpc_partition.c b/drivers/misc/sgi-xp/xpc_partition.c
index d551f09..533b386 100644
--- a/drivers/misc/sgi-xp/xpc_partition.c
+++ b/drivers/misc/sgi-xp/xpc_partition.c
@@ -98,8 +98,7 @@ xpc_get_rsvd_page_pa(int nasid)
len = L1_CACHE_ALIGN(len);

if (len > buf_len) {
- if (buf_base != NULL)
- kfree(buf_base);
+ kfree(buf_base);
buf_len = L1_CACHE_ALIGN(len);
buf = xpc_kmalloc_cacheline_aligned(buf_len, GFP_KERNEL,
&buf_base);
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index d6ded24..8336a6f 100644
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -204,15 +204,12 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock

return 0;
free_bounce_sg:
- if (mq->bounce_sg)
- kfree(mq->bounce_sg);
+ kfree(mq->bounce_sg);
mq->bounce_sg = NULL;
cleanup_queue:
- if (mq->sg)
- kfree(mq->sg);
+ kfree(mq->sg);
mq->sg = NULL;
- if (mq->bounce_buf)
- kfree(mq->bounce_buf);
+ kfree(mq->bounce_buf);
mq->bounce_buf = NULL;
blk_cleanup_queue(mq->queue);
return ret;
@@ -235,15 +232,13 @@ void mmc_cleanup_queue(struct mmc_queue *mq)
blk_start_queue(q);
spin_unlock_irqrestore(q->queue_lock, flags);

- if (mq->bounce_sg)
- kfree(mq->bounce_sg);
+ kfree(mq->bounce_sg);
mq->bounce_sg = NULL;

kfree(mq->sg);
mq->sg = NULL;

- if (mq->bounce_buf)
- kfree(mq->bounce_buf);
+ kfree(mq->bounce_buf);
mq->bounce_buf = NULL;

mq->card = NULL;
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c
index 49d9dca..cbb72f4 100644
--- a/drivers/mmc/core/bus.c
+++ b/drivers/mmc/core/bus.c
@@ -188,8 +188,7 @@ static void mmc_release_card(struct device *dev)

sdio_free_common_cis(card);

- if (card->info)
- kfree(card->info);
+ kfree(card->info);

kfree(card);
}
diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c
index 4a890dc..5dda49e 100644
--- a/drivers/mmc/core/sdio_bus.c
+++ b/drivers/mmc/core/sdio_bus.c
@@ -202,8 +202,7 @@ static void sdio_release_func(struct device *dev)

sdio_free_func_cis(func);

- if (func->info)
- kfree(func->info);
+ kfree(func->info);

kfree(func);
}
diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c
index 62f3ea9..aab7b65 100644
--- a/drivers/mtd/chips/cfi_cmdset_0001.c
+++ b/drivers/mtd/chips/cfi_cmdset_0001.c
@@ -2607,8 +2607,7 @@ static void cfi_intelext_destroy(struct mtd_info *mtd)
kfree(cfi);
for (i = 0; i < mtd->numeraseregions; i++) {
region = &mtd->eraseregions[i];
- if (region->lockmap)
- kfree(region->lockmap);
+ kfree(region->lockmap);
}
kfree(mtd->eraseregions);
}
diff --git a/drivers/mtd/maps/ck804xrom.c b/drivers/mtd/maps/ck804xrom.c
index ddb462b..bb79315 100644
--- a/drivers/mtd/maps/ck804xrom.c
+++ b/drivers/mtd/maps/ck804xrom.c
@@ -311,8 +311,7 @@ static int __devinit ck804xrom_init_one (struct pci_dev *pdev,

out:
/* Free any left over map structures */
- if (map)
- kfree(map);
+ kfree(map);

/* See if I have any map structures */
if (list_empty(&window->maps)) {
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 268ea4d..bee1869 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -1013,10 +1013,8 @@ static void free_rings(struct net_device *dev)
pci_free_consistent(np->pci_dev, sizeof(struct ring_desc_ex) * (np->rx_ring_size + np->tx_ring_size),
np->rx_ring.ex, np->ring_addr);
}
- if (np->rx_skb)
- kfree(np->rx_skb);
- if (np->tx_skb)
- kfree(np->tx_skb);
+ kfree(np->rx_skb);
+ kfree(np->tx_skb);
}

static int using_multi_irqs(struct net_device *dev)
@@ -4465,10 +4463,8 @@ static int nv_set_ringparam(struct net_device *dev, struct ethtool_ringparam* ri
pci_free_consistent(np->pci_dev, sizeof(struct ring_desc_ex) * (ring->rx_pending + ring->tx_pending),
rxtx_ring, ring_addr);
}
- if (rx_skbuff)
- kfree(rx_skbuff);
- if (tx_skbuff)
- kfree(tx_skbuff);
+ kfree(rx_skbuff);
+ kfree(tx_skbuff);
goto exit;
}

diff --git a/drivers/net/irda/kingsun-sir.c b/drivers/net/irda/kingsun-sir.c
index cb90d64..608fa47 100644
--- a/drivers/net/irda/kingsun-sir.c
+++ b/drivers/net/irda/kingsun-sir.c
@@ -544,8 +544,8 @@ static int kingsun_probe(struct usb_interface *intf,
return 0;

free_mem:
- if (kingsun->out_buf) kfree(kingsun->out_buf);
- if (kingsun->in_buf) kfree(kingsun->in_buf);
+ kfree(kingsun->out_buf);
+ kfree(kingsun->in_buf);
free_netdev(net);
err_out1:
return ret;
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 9551cbb..55085c0 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -167,8 +167,7 @@ static inline void ixgbe_disable_sriov(struct ixgbe_adapter *adapter)

/* take a breather then clean up driver data */
msleep(100);
- if (adapter->vfinfo)
- kfree(adapter->vfinfo);
+ kfree(adapter->vfinfo);
adapter->vfinfo = NULL;

adapter->num_vfs = 0;
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index e0b47cc..4365156 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -4028,8 +4028,7 @@ static void myri10ge_remove(struct pci_dev *pdev)
mtrr_del(mgp->mtrr, mgp->iomem_base, mgp->board_span);
#endif
myri10ge_free_slices(mgp);
- if (mgp->msix_vectors != NULL)
- kfree(mgp->msix_vectors);
+ kfree(mgp->msix_vectors);
dma_free_coherent(&pdev->dev, sizeof(*mgp->cmd),
mgp->cmd, mgp->cmd_bus);

diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 6ce6ce1..024e5e7 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -183,8 +183,7 @@ netxen_alloc_sds_rings(struct netxen_recv_context *recv_ctx, int count)
static void
netxen_free_sds_rings(struct netxen_recv_context *recv_ctx)
{
- if (recv_ctx->sds_rings != NULL)
- kfree(recv_ctx->sds_rings);
+ kfree(recv_ctx->sds_rings);

recv_ctx->sds_rings = NULL;
}
diff --git a/drivers/net/ppp_mppe.c b/drivers/net/ppp_mppe.c
index 6d1a1b8..8e8cf7e 100644
--- a/drivers/net/ppp_mppe.c
+++ b/drivers/net/ppp_mppe.c
@@ -238,8 +238,7 @@ static void *mppe_alloc(unsigned char *options, int optlen)
return (void *)state;

out_free:
- if (state->sha1_digest)
- kfree(state->sha1_digest);
+ kfree(state->sha1_digest);
if (state->sha1)
crypto_free_hash(state->sha1);
if (state->arc4)
@@ -256,8 +255,7 @@ static void mppe_free(void *arg)
{
struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg;
if (state) {
- if (state->sha1_digest)
- kfree(state->sha1_digest);
+ kfree(state->sha1_digest);
if (state->sha1)
crypto_free_hash(state->sha1);
if (state->arc4)
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index 54ebb65..3b42c57 100644
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -2749,7 +2749,7 @@ static void ql_free_buffer_queues(struct ql3_adapter *qdev)
"%s: Already done.\n", qdev->ndev->name);
return;
}
- if(qdev->lrg_buf) kfree(qdev->lrg_buf);
+ kfree(qdev->lrg_buf);
pci_free_consistent(qdev->pdev,
qdev->lrg_buf_q_alloc_size,
qdev->lrg_buf_q_alloc_virt_addr,
diff --git a/drivers/net/qlcnic/qlcnic_main.c b/drivers/net/qlcnic/qlcnic_main.c
index 23ea9ca..8222944 100644
--- a/drivers/net/qlcnic/qlcnic_main.c
+++ b/drivers/net/qlcnic/qlcnic_main.c
@@ -166,8 +166,7 @@ qlcnic_alloc_sds_rings(struct qlcnic_recv_context *recv_ctx, int count)
static void
qlcnic_free_sds_rings(struct qlcnic_recv_context *recv_ctx)
{
- if (recv_ctx->sds_rings != NULL)
- kfree(recv_ctx->sds_rings);
+ kfree(recv_ctx->sds_rings);

recv_ctx->sds_rings = NULL;
}
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c
index a31d580..df919bf 100644
--- a/drivers/net/stmmac/stmmac_main.c
+++ b/drivers/net/stmmac/stmmac_main.c
@@ -921,8 +921,7 @@ static int stmmac_release(struct net_device *dev)
#ifdef CONFIG_STMMAC_TIMER
/* Stop and release the timer */
stmmac_close_ext_timer();
- if (priv->tm != NULL)
- kfree(priv->tm);
+ kfree(priv->tm);
#endif
napi_disable(&priv->napi);
skb_queue_purge(&priv->rx_recycle);
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 9964df1..a14f8b1 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -2821,8 +2821,7 @@ exit:
tty_unregister_device(tty_drv, serial->minor);
kfree(serial);
}
- if (hso_dev)
- kfree(hso_dev);
+ kfree(hso_dev);
return NULL;

}
diff --git a/drivers/net/wireless/ath/ath5k/attach.c b/drivers/net/wireless/ath/ath5k/attach.c
index e0c244b..47c0faf 100644
--- a/drivers/net/wireless/ath/ath5k/attach.c
+++ b/drivers/net/wireless/ath/ath5k/attach.c
@@ -355,8 +355,7 @@ void ath5k_hw_detach(struct ath5k_hw *ah)

__set_bit(ATH_STAT_INVALID, ah->ah_sc->status);

- if (ah->ah_rf_banks != NULL)
- kfree(ah->ah_rf_banks);
+ kfree(ah->ah_rf_banks);

ath5k_eeprom_detach(ah);

diff --git a/drivers/net/wireless/ipw2x00/libipw_module.c b/drivers/net/wireless/ipw2x00/libipw_module.c
index 5596540..b160d82 100644
--- a/drivers/net/wireless/ipw2x00/libipw_module.c
+++ b/drivers/net/wireless/ipw2x00/libipw_module.c
@@ -99,8 +99,7 @@ static inline void libipw_networks_free(struct libipw_device *ieee)
int i;

for (i = 0; i < MAX_NETWORK_COUNT; i++) {
- if (ieee->networks[i]->ibss_dfs)
- kfree(ieee->networks[i]->ibss_dfs);
+ kfree(ieee->networks[i]->ibss_dfs);
kfree(ieee->networks[i]);
}
}
diff --git a/drivers/net/wireless/orinoco/orinoco_usb.c b/drivers/net/wireless/orinoco/orinoco_usb.c
index 78f089b..92d2fc3 100644
--- a/drivers/net/wireless/orinoco/orinoco_usb.c
+++ b/drivers/net/wireless/orinoco/orinoco_usb.c
@@ -1510,8 +1510,7 @@ static inline void ezusb_delete(struct ezusb_priv *upriv)
mutex_unlock(&upriv->mtx);

kfree(upriv->read_urb->transfer_buffer);
- if (upriv->bap_buf != NULL)
- kfree(upriv->bap_buf);
+ kfree(upriv->bap_buf);
if (upriv->read_urb != NULL)
usb_free_urb(upriv->read_urb);
if (upriv->dev) {
diff --git a/drivers/rtc/rtc-m48t59.c b/drivers/rtc/rtc-m48t59.c
index be8359f..becffa2 100644
--- a/drivers/rtc/rtc-m48t59.c
+++ b/drivers/rtc/rtc-m48t59.c
@@ -506,8 +506,7 @@ out:
free_irq(m48t59->irq, &pdev->dev);
if (m48t59->ioaddr)
iounmap(m48t59->ioaddr);
- if (m48t59)
- kfree(m48t59);
+ kfree(m48t59);
return ret;
}

diff --git a/drivers/s390/char/monreader.c b/drivers/s390/char/monreader.c
index 2ed3f82..b8450e1 100644
--- a/drivers/s390/char/monreader.c
+++ b/drivers/s390/char/monreader.c
@@ -174,8 +174,7 @@ static void mon_free_mem(struct mon_private *monpriv)
int i;

for (i = 0; i < MON_MSGLIM; i++)
- if (monpriv->msg_array[i])
- kfree(monpriv->msg_array[i]);
+ kfree(monpriv->msg_array[i]);
kfree(monpriv);
}

diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm_scan.l b/drivers/scsi/aic7xxx/aicasm/aicasm_scan.l
index 93c8667..1ffe8fa 100644
--- a/drivers/scsi/aic7xxx/aicasm/aicasm_scan.l
+++ b/drivers/scsi/aic7xxx/aicasm/aicasm_scan.l
@@ -606,8 +606,7 @@ yywrap()

yy_delete_buffer(YY_CURRENT_BUFFER);
(void)fclose(yyin);
- if (yyfilename != NULL)
- free(yyfilename);
+ free(yyfilename);
yyfilename = NULL;
include = include_stack.slh_first;
if (include != NULL) {
diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c b/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c
index 078ed60..5b9edb6 100644
--- a/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c
+++ b/drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c
@@ -95,12 +95,10 @@ symbol_delete(symbol_t *symbol)
case SCBLOC:
case SRAMLOC:
case REGISTER:
- if (symbol->info.rinfo != NULL)
- free(symbol->info.rinfo);
+ free(symbol->info.rinfo);
break;
case ALIAS:
- if (symbol->info.ainfo != NULL)
- free(symbol->info.ainfo);
+ free(symbol->info.ainfo);
break;
case MASK:
case FIELD:
@@ -113,12 +111,10 @@ symbol_delete(symbol_t *symbol)
break;
case DOWNLOAD_CONST:
case CONST:
- if (symbol->info.cinfo != NULL)
- free(symbol->info.cinfo);
+ free(symbol->info.cinfo);
break;
case LABEL:
- if (symbol->info.linfo != NULL)
- free(symbol->info.linfo);
+ free(symbol->info.linfo);
break;
case UNINITIALIZED:
default:
diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
index 24ac231..d6b3959 100644
--- a/drivers/scsi/aic94xx/aic94xx_init.c
+++ b/drivers/scsi/aic94xx/aic94xx_init.c
@@ -599,8 +599,7 @@ static void asd_destroy_ha_caches(struct asd_ha_struct *asd_ha)
if (asd_ha->hw_prof.scb_ext)
asd_free_coherent(asd_ha, asd_ha->hw_prof.scb_ext);

- if (asd_ha->hw_prof.ddb_bitmap)
- kfree(asd_ha->hw_prof.ddb_bitmap);
+ kfree(asd_ha->hw_prof.ddb_bitmap);
asd_ha->hw_prof.ddb_bitmap = NULL;

for (i = 0; i < ASD_MAX_PHYS; i++) {
diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c
index dcf0882..f1e44af 100644
--- a/drivers/scsi/lpfc/lpfc_bsg.c
+++ b/drivers/scsi/lpfc/lpfc_bsg.c
@@ -1070,8 +1070,7 @@ lpfc_bsg_hba_set_event(struct fc_bsg_job *job)
return 0; /* call job done later */

job_error:
- if (dd_data != NULL)
- kfree(dd_data);
+ kfree(dd_data);

job->dd_data = NULL;
return rc;
diff --git a/drivers/staging/comedi/drivers/cb_das16_cs.c b/drivers/staging/comedi/drivers/cb_das16_cs.c
index cfeb11f..d8d4ed6 100644
--- a/drivers/staging/comedi/drivers/cb_das16_cs.c
+++ b/drivers/staging/comedi/drivers/cb_das16_cs.c
@@ -719,8 +719,7 @@ static void das16cs_pcmcia_detach(struct pcmcia_device *link)
((struct local_info_t *)link->priv)->stop = 1;
das16cs_pcmcia_release(link);
/* This points to the parent struct local_info_t struct */
- if (link->priv)
- kfree(link->priv);
+ kfree(link->priv);
} /* das16cs_pcmcia_detach */


diff --git a/drivers/staging/comedi/drivers/das08_cs.c b/drivers/staging/comedi/drivers/das08_cs.c
index 8761a6d..fb561ab 100644
--- a/drivers/staging/comedi/drivers/das08_cs.c
+++ b/drivers/staging/comedi/drivers/das08_cs.c
@@ -206,8 +206,7 @@ static void das08_pcmcia_detach(struct pcmcia_device *link)
das08_pcmcia_release(link);

/* This points to the parent struct local_info_t struct */
- if (link->priv)
- kfree(link->priv);
+ kfree(link->priv);

} /* das08_pcmcia_detach */

diff --git a/drivers/staging/comedi/drivers/das16.c b/drivers/staging/comedi/drivers/das16.c
index ccee4f1..72df3d5 100644
--- a/drivers/staging/comedi/drivers/das16.c
+++ b/drivers/staging/comedi/drivers/das16.c
@@ -1695,10 +1695,8 @@ static int das16_detach(struct comedi_device *dev)
}
if (devpriv->dma_chan)
free_dma(devpriv->dma_chan);
- if (devpriv->user_ai_range_table)
- kfree(devpriv->user_ai_range_table);
- if (devpriv->user_ao_range_table)
- kfree(devpriv->user_ao_range_table);
+ kfree(devpriv->user_ai_range_table);
+ kfree(devpriv->user_ao_range_table);
}

if (dev->irq)
diff --git a/drivers/staging/comedi/drivers/ni_at_a2150.c b/drivers/staging/comedi/drivers/ni_at_a2150.c
index 9bff34c..5a636a1 100644
--- a/drivers/staging/comedi/drivers/ni_at_a2150.c
+++ b/drivers/staging/comedi/drivers/ni_at_a2150.c
@@ -468,8 +468,7 @@ static int a2150_detach(struct comedi_device *dev)
if (devpriv) {
if (devpriv->dma)
free_dma(devpriv->dma);
- if (devpriv->dma_buffer)
- kfree(devpriv->dma_buffer);
+ kfree(devpriv->dma_buffer);
}

return 0;
diff --git a/drivers/staging/comedi/drivers/ni_daq_700.c b/drivers/staging/comedi/drivers/ni_daq_700.c
index 6ec77bf..701abd9 100644
--- a/drivers/staging/comedi/drivers/ni_daq_700.c
+++ b/drivers/staging/comedi/drivers/ni_daq_700.c
@@ -537,8 +537,7 @@ static void dio700_cs_detach(struct pcmcia_device *link)
dio700_release(link);

/* This points to the parent struct local_info_t struct */
- if (link->priv)
- kfree(link->priv);
+ kfree(link->priv);

} /* dio700_cs_detach */

diff --git a/drivers/staging/comedi/drivers/ni_daq_dio24.c b/drivers/staging/comedi/drivers/ni_daq_dio24.c
index e4865b1..0b65f24 100644
--- a/drivers/staging/comedi/drivers/ni_daq_dio24.c
+++ b/drivers/staging/comedi/drivers/ni_daq_dio24.c
@@ -289,8 +289,7 @@ static void dio24_cs_detach(struct pcmcia_device *link)
dio24_release(link);

/* This points to the parent local_info_t struct */
- if (link->priv)
- kfree(link->priv);
+ kfree(link->priv);

} /* dio24_cs_detach */

diff --git a/drivers/staging/comedi/drivers/ni_labpc.c b/drivers/staging/comedi/drivers/ni_labpc.c
index 67c8a53..2e77946 100644
--- a/drivers/staging/comedi/drivers/ni_labpc.c
+++ b/drivers/staging/comedi/drivers/ni_labpc.c
@@ -790,8 +790,7 @@ int labpc_common_detach(struct comedi_device *dev)
subdev_8255_cleanup(dev, dev->subdevices + 2);

/* only free stuff if it has been allocated by _attach */
- if (devpriv->dma_buffer)
- kfree(devpriv->dma_buffer);
+ kfree(devpriv->dma_buffer);
if (devpriv->dma_chan)
free_dma(devpriv->dma_chan);
if (dev->irq)
diff --git a/drivers/staging/comedi/drivers/quatech_daqp_cs.c b/drivers/staging/comedi/drivers/quatech_daqp_cs.c
index a91db6c..78eb254 100644
--- a/drivers/staging/comedi/drivers/quatech_daqp_cs.c
+++ b/drivers/staging/comedi/drivers/quatech_daqp_cs.c
@@ -1076,8 +1076,7 @@ static void daqp_cs_detach(struct pcmcia_device *link)

/* Unlink device structure, and free it */
dev_table[dev->table_index] = NULL;
- if (dev)
- kfree(dev);
+ kfree(dev);

} /* daqp_cs_detach */

diff --git a/drivers/staging/comedi/drivers/serial2002.c b/drivers/staging/comedi/drivers/serial2002.c
index 0792617..95f975c 100644
--- a/drivers/staging/comedi/drivers/serial2002.c
+++ b/drivers/staging/comedi/drivers/serial2002.c
@@ -632,15 +632,11 @@ static void serial_2002_open(struct comedi_device *dev)
s = &dev->subdevices[i];
s->n_chan = chan;
s->maxdata = 0;
- if (s->maxdata_list) {
- kfree(s->maxdata_list);
- }
+ kfree(s->maxdata_list);
s->maxdata_list = maxdata_list =
kmalloc(sizeof(unsigned int) * s->n_chan,
GFP_KERNEL);
- if (s->range_table_list) {
- kfree(s->range_table_list);
- }
+ kfree(s->range_table_list);
if (range) {
s->range_table = 0;
s->range_table_list = range_table_list =
@@ -881,12 +877,8 @@ static int serial2002_detach(struct comedi_device *dev)
printk("comedi%d: serial2002: remove\n", dev->minor);
for (i = 0; i < 4; i++) {
s = &dev->subdevices[i];
- if (s->maxdata_list) {
- kfree(s->maxdata_list);
- }
- if (s->range_table_list) {
- kfree(s->range_table_list);
- }
+ kfree(s->maxdata_list);
+ kfree(s->range_table_list);
}
return 0;
}
diff --git a/drivers/staging/crystalhd/crystalhd_lnx.c b/drivers/staging/crystalhd/crystalhd_lnx.c
index a4ec891..da77bc6 100644
--- a/drivers/staging/crystalhd/crystalhd_lnx.c
+++ b/drivers/staging/crystalhd/crystalhd_lnx.c
@@ -435,8 +435,7 @@ static void __devexit chd_dec_release_chdev(struct crystalhd_adp *adp)
/* Clear iodata pool.. */
do {
temp = chd_dec_alloc_iodata(adp, 0);
- if (temp)
- kfree(temp);
+ kfree(temp);
} while (temp);

crystalhd_delete_elem_pool(adp);
diff --git a/drivers/staging/cx25821/cx25821-audio-upstream.c b/drivers/staging/cx25821/cx25821-audio-upstream.c
index eb39d13..6a1b4a8 100644
--- a/drivers/staging/cx25821/cx25821-audio-upstream.c
+++ b/drivers/staging/cx25821/cx25821-audio-upstream.c
@@ -248,8 +248,7 @@ void cx25821_stop_upstream_audio(struct cx25821_dev *dev)
dev->_irq_audio_queues = NULL;
}

- if (dev->_audiofilename != NULL)
- kfree(dev->_audiofilename);
+ kfree(dev->_audiofilename);
}

void cx25821_free_mem_upstream_audio(struct cx25821_dev *dev)
diff --git a/drivers/staging/cx25821/cx25821-video-upstream-ch2.c b/drivers/staging/cx25821/cx25821-video-upstream-ch2.c
index 343df66..ce381fc 100644
--- a/drivers/staging/cx25821/cx25821-video-upstream-ch2.c
+++ b/drivers/staging/cx25821/cx25821-video-upstream-ch2.c
@@ -235,8 +235,7 @@ void cx25821_stop_upstream_video_ch2(struct cx25821_dev *dev)
dev->_irq_queues_ch2 = NULL;
}

- if (dev->_filename_ch2 != NULL)
- kfree(dev->_filename_ch2);
+ kfree(dev->_filename_ch2);

tmp = cx_read(VID_CH_MODE_SEL);
cx_write(VID_CH_MODE_SEL, tmp & 0xFFFFFE00);
diff --git a/drivers/staging/cx25821/cx25821-video-upstream.c b/drivers/staging/cx25821/cx25821-video-upstream.c
index 7a3dad9..f6f41f3 100644
--- a/drivers/staging/cx25821/cx25821-video-upstream.c
+++ b/drivers/staging/cx25821/cx25821-video-upstream.c
@@ -283,8 +283,7 @@ void cx25821_stop_upstream_video_ch1(struct cx25821_dev *dev)
dev->_irq_queues = NULL;
}

- if (dev->_filename != NULL)
- kfree(dev->_filename);
+ kfree(dev->_filename);

tmp = cx_read(VID_CH_MODE_SEL);
cx_write(VID_CH_MODE_SEL, tmp & 0xFFFFFE00);
diff --git a/drivers/staging/dream/camera/msm_vfe7x.c b/drivers/staging/dream/camera/msm_vfe7x.c
index 198656a..f3e93dd 100644
--- a/drivers/staging/dream/camera/msm_vfe7x.c
+++ b/drivers/staging/dream/camera/msm_vfe7x.c
@@ -680,8 +680,7 @@ config_send:
cmd_data, vfecmd->length);

config_done:
- if (cmd_data_alloc != NULL)
- kfree(cmd_data_alloc);
+ kfree(cmd_data_alloc);

config_failure:
kfree(scfg);
diff --git a/drivers/staging/go7007/go7007-usb.c b/drivers/staging/go7007/go7007-usb.c
index 20ed930..5918adf 100644
--- a/drivers/staging/go7007/go7007-usb.c
+++ b/drivers/staging/go7007/go7007-usb.c
@@ -1247,15 +1247,13 @@ static void go7007_usb_disconnect(struct usb_interface *intf)
vurb = usb->video_urbs[i];
if (vurb) {
usb_kill_urb(vurb);
- if (vurb->transfer_buffer)
- kfree(vurb->transfer_buffer);
+ kfree(vurb->transfer_buffer);
usb_free_urb(vurb);
}
aurb = usb->audio_urbs[i];
if (aurb) {
usb_kill_urb(aurb);
- if (aurb->transfer_buffer)
- kfree(aurb->transfer_buffer);
+ kfree(aurb->transfer_buffer);
usb_free_urb(aurb);
}
}
diff --git a/drivers/staging/pohmelfs/config.c b/drivers/staging/pohmelfs/config.c
index 8c8d1c2..dbec44d 100644
--- a/drivers/staging/pohmelfs/config.c
+++ b/drivers/staging/pohmelfs/config.c
@@ -603,11 +603,9 @@ void pohmelfs_config_exit(void)

list_del(&g->group_entry);

- if (g->hash_string)
- kfree(g->hash_string);
+ kfree(g->hash_string);

- if (g->cipher_string)
- kfree(g->cipher_string);
+ kfree(g->cipher_string);

kfree(g);
}
diff --git a/drivers/staging/rt2860/common/spectrum.c b/drivers/staging/rt2860/common/spectrum.c
index 2d5f847..bc94679 100644
--- a/drivers/staging/rt2860/common/spectrum.c
+++ b/drivers/staging/rt2860/common/spectrum.c
@@ -416,8 +416,7 @@ void MeasureReqTabExit(struct rt_rtmp_adapter *pAd)
{
NdisFreeSpinLock(&pAd->CommonCfg.MeasureReqTabLock);

- if (pAd->CommonCfg.pMeasureReqTab)
- kfree(pAd->CommonCfg.pMeasureReqTab);
+ kfree(pAd->CommonCfg.pMeasureReqTab);
pAd->CommonCfg.pMeasureReqTab = NULL;

return;
@@ -614,8 +613,7 @@ void TpcReqTabExit(struct rt_rtmp_adapter *pAd)
{
NdisFreeSpinLock(&pAd->CommonCfg.TpcReqTabLock);

- if (pAd->CommonCfg.pTpcReqTab)
- kfree(pAd->CommonCfg.pTpcReqTab);
+ kfree(pAd->CommonCfg.pTpcReqTab);
pAd->CommonCfg.pTpcReqTab = NULL;

return;
diff --git a/drivers/staging/rt2860/rt_linux.c b/drivers/staging/rt2860/rt_linux.c
index 0029b2d..a21d2d6 100644
--- a/drivers/staging/rt2860/rt_linux.c
+++ b/drivers/staging/rt2860/rt_linux.c
@@ -242,8 +242,7 @@ void RTMPFreeAdapter(struct rt_rtmp_adapter *pAd)

os_cookie = (struct os_cookie *)pAd->OS_Cookie;

- if (pAd->BeaconBuf)
- kfree(pAd->BeaconBuf);
+ kfree(pAd->BeaconBuf);

NdisFreeSpinLock(&pAd->MgmtRingLock);

@@ -265,8 +264,7 @@ void RTMPFreeAdapter(struct rt_rtmp_adapter *pAd)
release_firmware(pAd->firmware);

vfree(pAd); /* pci_free_consistent(os_cookie->pci_dev,sizeof(struct rt_rtmp_adapter),pAd,os_cookie->pAd_pa); */
- if (os_cookie)
- kfree(os_cookie);
+ kfree(os_cookie);
}

BOOLEAN OS_Need_Clone_Packet(void)
diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
index 1b838a2..cad25e0 100644
--- a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac.c
@@ -2604,8 +2604,7 @@ void ieee80211_softmac_free(struct ieee80211_device *ieee)
cancel_delayed_work(&ieee->GPIOChangeRFWorkItem);

destroy_workqueue(ieee->wq);
- if(NULL != ieee->pDot11dInfo)
- kfree(ieee->pDot11dInfo);
+ kfree(ieee->pDot11dInfo);
up(&ieee->wx_sem);
}

diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c
index 07d8dbc..ca414a9 100644
--- a/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c
+++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_wx.c
@@ -735,7 +735,6 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len)
ieee->wpa_ie_len = len;
}
else{
- if (ieee->wpa_ie)
kfree(ieee->wpa_ie);
ieee->wpa_ie = NULL;
ieee->wpa_ie_len = 0;
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c
index 4971b1c..d3fa83f 100644
--- a/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c
+++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_wx.c
@@ -987,7 +987,6 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len)
ieee->wpa_ie_len = len;
}
else{
- if (ieee->wpa_ie)
kfree(ieee->wpa_ie);
ieee->wpa_ie = NULL;
ieee->wpa_ie_len = 0;
diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c
index 2ce5bd5..42f699b 100644
--- a/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c
+++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_wx.c
@@ -775,7 +775,6 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len)
ieee->wpa_ie_len = len;
}
else{
- if (ieee->wpa_ie)
kfree(ieee->wpa_ie);
ieee->wpa_ie = NULL;
ieee->wpa_ie_len = 0;
diff --git a/drivers/staging/rtl8192u/ieee80211/cipher.c b/drivers/staging/rtl8192u/ieee80211/cipher.c
index 0b9e8a4..69dcc31 100644
--- a/drivers/staging/rtl8192u/ieee80211/cipher.c
+++ b/drivers/staging/rtl8192u/ieee80211/cipher.c
@@ -294,6 +294,5 @@ out:

void crypto_exit_cipher_ops(struct crypto_tfm *tfm)
{
- if (tfm->crt_cipher.cit_iv)
- kfree(tfm->crt_cipher.cit_iv);
+ kfree(tfm->crt_cipher.cit_iv);
}
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c
index fb78ed2..48ec8fc 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_wx.c
@@ -855,7 +855,6 @@ int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len)
ieee->wpa_ie_len = len;
}
else{
- if (ieee->wpa_ie)
kfree(ieee->wpa_ie);
ieee->wpa_ie = NULL;
ieee->wpa_ie_len = 0;
diff --git a/drivers/staging/rtl8192u/r8192U_core.c b/drivers/staging/rtl8192u/r8192U_core.c
index 2bede27..f0e4dd7 100644
--- a/drivers/staging/rtl8192u/r8192U_core.c
+++ b/drivers/staging/rtl8192u/r8192U_core.c
@@ -2260,12 +2260,8 @@ short rtl8192_usb_initendpoints(struct net_device *dev)


destroy:
- if (priv->pp_rxskb) {
- kfree(priv->pp_rxskb);
- }
- if (priv->rx_urb) {
- kfree(priv->rx_urb);
- }
+ kfree(priv->pp_rxskb);
+ kfree(priv->rx_urb);

priv->pp_rxskb = NULL;
priv->rx_urb = NULL;
diff --git a/drivers/staging/serqt_usb2/serqt_usb2.c b/drivers/staging/serqt_usb2/serqt_usb2.c
index 27841ef..2be2d88 100644
--- a/drivers/staging/serqt_usb2/serqt_usb2.c
+++ b/drivers/staging/serqt_usb2/serqt_usb2.c
@@ -1098,8 +1098,7 @@ static void qt_close(struct usb_serial_port *port)

if (qt_port->write_urb) {
/* if this urb had a transfer buffer already (old tx) free it */
- if (qt_port->write_urb->transfer_buffer != NULL)
- kfree(qt_port->write_urb->transfer_buffer);
+ kfree(qt_port->write_urb->transfer_buffer);
usb_free_urb(qt_port->write_urb);
}

diff --git a/drivers/staging/ti-st/bt_drv.c b/drivers/staging/ti-st/bt_drv.c
index d8420b5..91d18f8 100644
--- a/drivers/staging/ti-st/bt_drv.c
+++ b/drivers/staging/ti-st/bt_drv.c
@@ -376,8 +376,7 @@ static void hci_st_destruct(struct hci_dev *hdev)
BT_DRV_DBG("%s", hdev->name);

/* free hci_st memory */
- if (hdev->driver_data != NULL)
- kfree(hdev->driver_data);
+ kfree(hdev->driver_data);

BTDRV_API_EXIT(0);
return;
diff --git a/drivers/staging/usbip/stub_main.c b/drivers/staging/usbip/stub_main.c
index 6665cef..1d606bd 100644
--- a/drivers/staging/usbip/stub_main.c
+++ b/drivers/staging/usbip/stub_main.c
@@ -224,11 +224,9 @@ void stub_device_cleanup_urbs(struct stub_device *sdev)

kmem_cache_free(stub_priv_cache, priv);

- if (urb->transfer_buffer != NULL)
- kfree(urb->transfer_buffer);
+ kfree(urb->transfer_buffer);

- if (urb->setup_packet != NULL)
- kfree(urb->setup_packet);
+ kfree(urb->setup_packet);

usb_free_urb(urb);
}
diff --git a/drivers/staging/vme/bridges/vme_ca91cx42.c b/drivers/staging/vme/bridges/vme_ca91cx42.c
index 0c82eb4..58e0b92 100644
--- a/drivers/staging/vme/bridges/vme_ca91cx42.c
+++ b/drivers/staging/vme/bridges/vme_ca91cx42.c
@@ -516,8 +516,7 @@ static int ca91cx42_alloc_resource(struct vme_master_resource *image,
if (existing_size != 0) {
iounmap(image->kern_base);
image->kern_base = NULL;
- if (image->bus_resource.name != NULL)
- kfree(image->bus_resource.name);
+ kfree(image->bus_resource.name);
release_resource(&(image->bus_resource));
memset(&(image->bus_resource), 0, sizeof(struct resource));
}
diff --git a/drivers/staging/vme/bridges/vme_tsi148.c b/drivers/staging/vme/bridges/vme_tsi148.c
index abe88a3..7ea2981 100644
--- a/drivers/staging/vme/bridges/vme_tsi148.c
+++ b/drivers/staging/vme/bridges/vme_tsi148.c
@@ -817,8 +817,7 @@ static int tsi148_alloc_resource(struct vme_master_resource *image,
if (existing_size != 0) {
iounmap(image->kern_base);
image->kern_base = NULL;
- if (image->bus_resource.name != NULL)
- kfree(image->bus_resource.name);
+ kfree(image->bus_resource.name);
release_resource(&(image->bus_resource));
memset(&(image->bus_resource), 0, sizeof(struct resource));
}
diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c
index e49bb25..eae6586 100644
--- a/drivers/staging/vt6655/device_main.c
+++ b/drivers/staging/vt6655/device_main.c
@@ -3059,8 +3059,7 @@ else {
}

error1:
- if(buffer)
- kfree(buffer);
+ kfree(buffer);

if(filp_close(filp,NULL))
printk("Config_FileOperation:close file fail\n");
diff --git a/drivers/staging/vt6655/hostap.c b/drivers/staging/vt6655/hostap.c
index 195cc36..8cb5836 100644
--- a/drivers/staging/vt6655/hostap.c
+++ b/drivers/staging/vt6655/hostap.c
@@ -860,8 +860,7 @@ int vt6655_hostap_ioctl(PSDevice pDevice, struct iw_point *p)
}

out:
- if (param != NULL)
- kfree(param);
+ kfree(param);

return ret;
}
diff --git a/drivers/staging/vt6655/wpactl.c b/drivers/staging/vt6655/wpactl.c
index 22c2fab..7d30d80 100644
--- a/drivers/staging/vt6655/wpactl.c
+++ b/drivers/staging/vt6655/wpactl.c
@@ -982,8 +982,7 @@ int wpa_ioctl(PSDevice pDevice, struct iw_point *p)
}

out:
- if (param != NULL)
- kfree(param);
+ kfree(param);

return ret;
}
diff --git a/drivers/staging/vt6656/firmware.c b/drivers/staging/vt6656/firmware.c
index e1f96d7..8df200c 100644
--- a/drivers/staging/vt6656/firmware.c
+++ b/drivers/staging/vt6656/firmware.c
@@ -803,16 +803,14 @@ FIRMWAREbDownload(

DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Download firmware...%d %zu\n", ii, sizeof(abyFirmware));
if (NdisStatus != STATUS_SUCCESS) {
- if (pBuffer)
- kfree(pBuffer);
+ kfree(pBuffer);
spin_lock_irq(&pDevice->lock);
return (FALSE);
}
}
}

- if (pBuffer)
- kfree(pBuffer);
+ kfree(pBuffer);

spin_lock_irq(&pDevice->lock);
return (TRUE);
diff --git a/drivers/staging/vt6656/hostap.c b/drivers/staging/vt6656/hostap.c
index f70e922..51b5adf 100644
--- a/drivers/staging/vt6656/hostap.c
+++ b/drivers/staging/vt6656/hostap.c
@@ -858,8 +858,7 @@ int vt6656_hostap_ioctl(PSDevice pDevice, struct iw_point *p)
}

out:
- if (param != NULL)
- kfree(param);
+ kfree(param);

return ret;
}
diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c
index 098b045..344c245 100644
--- a/drivers/staging/vt6656/main_usb.c
+++ b/drivers/staging/vt6656/main_usb.c
@@ -858,8 +858,7 @@ static void device_free_tx_bufs(PSDevice pDevice)
usb_kill_urb(pTxContext->pUrb);
usb_free_urb(pTxContext->pUrb);
}
- if (pTxContext)
- kfree(pTxContext);
+ kfree(pTxContext);
}
return;
}
@@ -882,8 +881,7 @@ static void device_free_rx_bufs(PSDevice pDevice)
if (pRCB->skb)
dev_kfree_skb(pRCB->skb);
}
- if (pDevice->pRCBMem)
- kfree(pDevice->pRCBMem);
+ kfree(pDevice->pRCBMem);

return;
}
@@ -900,8 +898,7 @@ static void usb_device_reset(PSDevice pDevice)

static void device_free_int_bufs(PSDevice pDevice)
{
- if (pDevice->intBuf.pDataBuf != NULL)
- kfree(pDevice->intBuf.pDataBuf);
+ kfree(pDevice->intBuf.pDataBuf);
return;
}

@@ -1542,8 +1539,7 @@ error2:
*/

if(result!=0) {
- if(buffer)
- kfree(buffer);
+ kfree(buffer);
buffer=NULL;
}
return buffer;
diff --git a/drivers/staging/vt6656/wpactl.c b/drivers/staging/vt6656/wpactl.c
index 961f583..3522b9b 100644
--- a/drivers/staging/vt6656/wpactl.c
+++ b/drivers/staging/vt6656/wpactl.c
@@ -1003,8 +1003,7 @@ int wpa_ioctl(PSDevice pDevice, struct iw_point *p)
}

out:
- if (param != NULL)
- kfree(param);
+ kfree(param);

return ret;
}
diff --git a/drivers/staging/winbond/wb35reg.c b/drivers/staging/winbond/wb35reg.c
index 7707223..72ed8b5 100644
--- a/drivers/staging/winbond/wb35reg.c
+++ b/drivers/staging/winbond/wb35reg.c
@@ -67,8 +67,7 @@ unsigned char Wb35Reg_BurstWrite(struct hw_data *pHwData, u16 RegisterNo, u32 *p
} else {
if (urb)
usb_free_urb(urb);
- if (reg_queue)
- kfree(reg_queue);
+ kfree(reg_queue);
return false;
}
return false;
diff --git a/drivers/staging/wlan-ng/prism2fw.c b/drivers/staging/wlan-ng/prism2fw.c
index d20c879..3446a9d 100644
--- a/drivers/staging/wlan-ng/prism2fw.c
+++ b/drivers/staging/wlan-ng/prism2fw.c
@@ -444,8 +444,7 @@ void free_chunks(imgchunk_t *fchunk, unsigned int *nfchunks)
{
int i;
for (i = 0; i < *nfchunks; i++) {
- if (fchunk[i].data != NULL)
- kfree(fchunk[i].data);
+ kfree(fchunk[i].data);
}
*nfchunks = 0;
memset(fchunk, 0, sizeof(*fchunk));
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
index f8424d1..382738b 100644
--- a/drivers/usb/serial/mos7840.c
+++ b/drivers/usb/serial/mos7840.c
@@ -1215,9 +1215,7 @@ static void mos7840_close(struct usb_serial_port *port)
/* Freeing Write URBs */
for (j = 0; j < NUM_URBS; ++j) {
if (mos7840_port->write_urb_pool[j]) {
- if (mos7840_port->write_urb_pool[j]->transfer_buffer)
- kfree(mos7840_port->write_urb_pool[j]->
- transfer_buffer);
+ kfree(mos7840_port->write_urb_pool[j]->transfer_buffer);

usb_free_urb(mos7840_port->write_urb_pool[j]);
}
@@ -1254,8 +1252,7 @@ static void mos7840_close(struct usb_serial_port *port)

if (mos7840_port->write_urb) {
/* if this urb had a transfer buffer already (old tx) free it */
- if (mos7840_port->write_urb->transfer_buffer != NULL)
- kfree(mos7840_port->write_urb->transfer_buffer);
+ kfree(mos7840_port->write_urb->transfer_buffer);
usb_free_urb(mos7840_port->write_urb);
}

diff --git a/drivers/uwb/wlp/wlp-lc.c b/drivers/uwb/wlp/wlp-lc.c
index 7f6a630..80d6ce8 100644
--- a/drivers/uwb/wlp/wlp-lc.c
+++ b/drivers/uwb/wlp/wlp-lc.c
@@ -539,8 +539,7 @@ void wlp_remove(struct wlp *wlp)
uwb_notifs_deregister(wlp->rc, &wlp->uwb_notifs_handler);
wlp_eda_release(&wlp->eda);
mutex_lock(&wlp->mutex);
- if (wlp->dev_info != NULL)
- kfree(wlp->dev_info);
+ kfree(wlp->dev_info);
mutex_unlock(&wlp->mutex);
wlp->rc = NULL;
}
diff --git a/drivers/video/au1200fb.c b/drivers/video/au1200fb.c
index e77e8e4..58e689b 100644
--- a/drivers/video/au1200fb.c
+++ b/drivers/video/au1200fb.c
@@ -1709,8 +1709,7 @@ failed:
fbdev->fb_mem, fbdev->fb_phys);
if (fbdev->fb_info.cmap.len != 0)
fb_dealloc_cmap(&fbdev->fb_info.cmap);
- if (fbdev->fb_info.pseudo_palette)
- kfree(fbdev->fb_info.pseudo_palette);
+ kfree(fbdev->fb_info.pseudo_palette);
if (plane == 0)
free_irq(AU1200_LCD_INT, (void*)dev);
return ret;
@@ -1739,8 +1738,7 @@ static int au1200fb_drv_remove(struct platform_device *dev)
fbdev->fb_mem, fbdev->fb_phys);
if (fbdev->fb_info.cmap.len != 0)
fb_dealloc_cmap(&fbdev->fb_info.cmap);
- if (fbdev->fb_info.pseudo_palette)
- kfree(fbdev->fb_info.pseudo_palette);
+ kfree(fbdev->fb_info.pseudo_palette);
}

free_irq(AU1200_LCD_INT, (void *)dev);
diff --git a/drivers/video/console/softcursor.c b/drivers/video/console/softcursor.c
index 25f835b..46dd8f5 100644
--- a/drivers/video/console/softcursor.c
+++ b/drivers/video/console/softcursor.c
@@ -35,8 +35,7 @@ int soft_cursor(struct fb_info *info, struct fb_cursor *cursor)
dsize = s_pitch * cursor->image.height;

if (dsize + sizeof(struct fb_image) != ops->cursor_size) {
- if (ops->cursor_src != NULL)
- kfree(ops->cursor_src);
+ kfree(ops->cursor_src);
ops->cursor_size = dsize + sizeof(struct fb_image);

ops->cursor_src = kmalloc(ops->cursor_size, GFP_ATOMIC);
diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
index 7b8839e..23194af 100644
--- a/drivers/video/uvesafb.c
+++ b/drivers/video/uvesafb.c
@@ -236,8 +236,7 @@ out:
static void uvesafb_free(struct uvesafb_ktask *task)
{
if (task) {
- if (task->done)
- kfree(task->done);
+ kfree(task->done);
kfree(task);
}
}
@@ -1319,8 +1318,7 @@ setmode:
FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
info->fix.line_length = mode->bytes_per_scan_line;

-out: if (crtc != NULL)
- kfree(crtc);
+out: kfree(crtc);
uvesafb_free(task);

return err;
@@ -1797,8 +1795,7 @@ out_mode:
fb_destroy_modedb(info->monspecs.modedb);
fb_dealloc_cmap(&info->cmap);
out:
- if (par->vbe_modes)
- kfree(par->vbe_modes);
+ kfree(par->vbe_modes);

framebuffer_release(info);
return err;
@@ -1820,12 +1817,9 @@ static int uvesafb_remove(struct platform_device *dev)
fb_dealloc_cmap(&info->cmap);

if (par) {
- if (par->vbe_modes)
- kfree(par->vbe_modes);
- if (par->vbe_state_orig)
- kfree(par->vbe_state_orig);
- if (par->vbe_state_saved)
- kfree(par->vbe_state_saved);
+ kfree(par->vbe_modes);
+ kfree(par->vbe_state_orig);
+ kfree(par->vbe_state_saved);
}

framebuffer_release(info);
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index f488fac..feea513 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -598,8 +598,7 @@ new_bitmap:

out:
if (info) {
- if (info->bitmap)
- kfree(info->bitmap);
+ kfree(info->bitmap);
kfree(info);
}

@@ -904,8 +903,7 @@ void btrfs_remove_free_space_cache(struct btrfs_block_group_cache *block_group)
while ((node = rb_last(&block_group->free_space_offset)) != NULL) {
info = rb_entry(node, struct btrfs_free_space, offset_index);
unlink_free_space(block_group, info);
- if (info->bitmap)
- kfree(info->bitmap);
+ kfree(info->bitmap);
kfree(info);
if (need_resched()) {
spin_unlock(&block_group->tree_lock);
diff --git a/fs/ceph/crush/crush.c b/fs/ceph/crush/crush.c
index fabd302..acc0a08 100644
--- a/fs/ceph/crush/crush.c
+++ b/fs/ceph/crush/crush.c
@@ -4,7 +4,7 @@
#else
# include <stdlib.h>
# include <assert.h>
-# define kfree(x) do { if (x) free(x); } while (0)
+# define kfree(x) free(x)
# define BUG_ON(x) assert(!(x))
#endif

diff --git a/fs/dlm/memory.c b/fs/dlm/memory.c
index 8e0d00d..6f1edc7 100644
--- a/fs/dlm/memory.c
+++ b/fs/dlm/memory.c
@@ -82,8 +82,7 @@ void dlm_free_lkb(struct dlm_lkb *lkb)
struct dlm_user_args *ua;
ua = lkb->lkb_ua;
if (ua) {
- if (ua->lksb.sb_lvbptr)
- kfree(ua->lksb.sb_lvbptr);
+ kfree(ua->lksb.sb_lvbptr);
kfree(ua);
}
}
diff --git a/fs/ecryptfs/keystore.c b/fs/ecryptfs/keystore.c
index 89c5476..fadc03c 100644
--- a/fs/ecryptfs/keystore.c
+++ b/fs/ecryptfs/keystore.c
@@ -1077,8 +1077,7 @@ decrypt_pki_encrypted_session_key(struct ecryptfs_auth_tok *auth_tok,
crypt_stat->key_size);
}
out:
- if (msg)
- kfree(msg);
+ kfree(msg);
return rc;
}

diff --git a/fs/ecryptfs/messaging.c b/fs/ecryptfs/messaging.c
index 2d8dbce..a74dd34 100644
--- a/fs/ecryptfs/messaging.c
+++ b/fs/ecryptfs/messaging.c
@@ -97,8 +97,7 @@ static void ecryptfs_msg_ctx_free_to_alloc(struct ecryptfs_msg_ctx *msg_ctx)
void ecryptfs_msg_ctx_alloc_to_free(struct ecryptfs_msg_ctx *msg_ctx)
{
list_move(&(msg_ctx->node), &ecryptfs_msg_ctx_free_list);
- if (msg_ctx->msg)
- kfree(msg_ctx->msg);
+ kfree(msg_ctx->msg);
msg_ctx->msg = NULL;
msg_ctx->state = ECRYPTFS_MSG_CTX_STATE_FREE;
}
@@ -541,8 +540,7 @@ void ecryptfs_release_messaging(void)
mutex_lock(&ecryptfs_msg_ctx_lists_mux);
for (i = 0; i < ecryptfs_message_buf_len; i++) {
mutex_lock(&ecryptfs_msg_ctx_arr[i].mux);
- if (ecryptfs_msg_ctx_arr[i].msg)
- kfree(ecryptfs_msg_ctx_arr[i].msg);
+ kfree(ecryptfs_msg_ctx_arr[i].msg);
mutex_unlock(&ecryptfs_msg_ctx_arr[i].mux);
}
kfree(ecryptfs_msg_ctx_arr);
diff --git a/fs/jffs2/acl.c b/fs/jffs2/acl.c
index a33aab6..39d0cbf 100644
--- a/fs/jffs2/acl.c
+++ b/fs/jffs2/acl.c
@@ -190,8 +190,7 @@ static struct posix_acl *jffs2_get_acl(struct inode *inode, int type)
} else {
acl = ERR_PTR(rc);
}
- if (value)
- kfree(value);
+ kfree(value);
if (!IS_ERR(acl))
set_cached_acl(inode, type, acl);
return acl;
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c
index 46f870d..54a9044 100644
--- a/fs/jffs2/scan.c
+++ b/fs/jffs2/scan.c
@@ -272,8 +272,7 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)
else
c->mtd->unpoint(c->mtd, 0, c->mtd->size);
#endif
- if (s)
- kfree(s);
+ kfree(s);

return ret;
}
diff --git a/fs/jffs2/xattr.c b/fs/jffs2/xattr.c
index a2d58c9..6776207 100644
--- a/fs/jffs2/xattr.c
+++ b/fs/jffs2/xattr.c
@@ -744,8 +744,7 @@ void jffs2_clear_xattr_subsystem(struct jffs2_sb_info *c)
for (i=0; i < XATTRINDEX_HASHSIZE; i++) {
list_for_each_entry_safe(xd, _xd, &c->xattrindex[i], xindex) {
list_del(&xd->xindex);
- if (xd->xname)
- kfree(xd->xname);
+ kfree(xd->xname);
jffs2_free_xattr_datum(xd);
}
}
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 70015dd..dd50876 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -2260,8 +2260,7 @@ static int nfs4_get_referral(struct inode *dir, const struct qstr *name, struct
out:
if (page)
__free_page(page);
- if (locations)
- kfree(locations);
+ kfree(locations);
return status;
}

diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
index 215e12c..f91b59e 100644
--- a/fs/ocfs2/alloc.c
+++ b/fs/ocfs2/alloc.c
@@ -6778,8 +6778,7 @@ int ocfs2_zero_range_for_truncate(struct inode *inode, handle_t *handle,
mlog_errno(ret);

out:
- if (pages)
- kfree(pages);
+ kfree(pages);

return ret;
}
diff --git a/fs/ocfs2/cluster/heartbeat.c b/fs/ocfs2/cluster/heartbeat.c
index 41d5f1f..6ca0b69 100644
--- a/fs/ocfs2/cluster/heartbeat.c
+++ b/fs/ocfs2/cluster/heartbeat.c
@@ -1060,8 +1060,7 @@ static void o2hb_region_release(struct config_item *item)
struct page *page;
struct o2hb_region *reg = to_o2hb_region(item);

- if (reg->hr_tmp_block)
- kfree(reg->hr_tmp_block);
+ kfree(reg->hr_tmp_block);

if (reg->hr_slot_data) {
for (i = 0; i < reg->hr_num_pages; i++) {
@@ -1075,8 +1074,7 @@ static void o2hb_region_release(struct config_item *item)
if (reg->hr_bdev)
blkdev_put(reg->hr_bdev, FMODE_READ|FMODE_WRITE);

- if (reg->hr_slots)
- kfree(reg->hr_slots);
+ kfree(reg->hr_slots);

spin_lock(&o2hb_live_lock);
list_del(&reg->hr_all_item);
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c
index aa75ca3..915d462 100644
--- a/fs/ocfs2/cluster/tcp.c
+++ b/fs/ocfs2/cluster/tcp.c
@@ -1083,10 +1083,8 @@ out:
o2net_debug_del_nst(&nst); /* must be before dropping sc and node */
if (sc)
sc_put(sc);
- if (vec)
- kfree(vec);
- if (msg)
- kfree(msg);
+ kfree(vec);
+ kfree(msg);
o2net_complete_nsw(nn, &nsw, 0, 0, 0);
return ret;
}
diff --git a/fs/ocfs2/dlm/dlmdomain.c b/fs/ocfs2/dlm/dlmdomain.c
index 6b5a492..e1de97c 100644
--- a/fs/ocfs2/dlm/dlmdomain.c
+++ b/fs/ocfs2/dlm/dlmdomain.c
@@ -306,8 +306,7 @@ static void dlm_free_ctxt_mem(struct dlm_ctxt *dlm)
if (dlm->master_hash)
dlm_free_pagevec((void **)dlm->master_hash, DLM_HASH_PAGES);

- if (dlm->name)
- kfree(dlm->name);
+ kfree(dlm->name);

kfree(dlm);
}
diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c
index f8b75ce..e2a82c2 100644
--- a/fs/ocfs2/dlm/dlmrecovery.c
+++ b/fs/ocfs2/dlm/dlmrecovery.c
@@ -1492,10 +1492,8 @@ leave:

dlm_put(dlm);
if (ret < 0) {
- if (buf)
- kfree(buf);
- if (item)
- kfree(item);
+ kfree(buf);
+ kfree(item);
}

mlog_exit(ret);
diff --git a/fs/ocfs2/extent_map.c b/fs/ocfs2/extent_map.c
index 09e3fdf..5f2a184 100644
--- a/fs/ocfs2/extent_map.c
+++ b/fs/ocfs2/extent_map.c
@@ -282,8 +282,7 @@ search:
spin_unlock(&oi->ip_lock);

out:
- if (new_emi)
- kfree(new_emi);
+ kfree(new_emi);
}

static int ocfs2_last_eb_is_empty(struct inode *inode,
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
index 47878cf..682f6a0 100644
--- a/fs/ocfs2/journal.c
+++ b/fs/ocfs2/journal.c
@@ -1276,11 +1276,9 @@ static void ocfs2_queue_recovery_completion(struct ocfs2_journal *journal,
/* Though we wish to avoid it, we are in fact safe in
* skipping local alloc cleanup as fsck.ocfs2 is more
* than capable of reclaiming unused space. */
- if (la_dinode)
- kfree(la_dinode);
+ kfree(la_dinode);

- if (tl_dinode)
- kfree(tl_dinode);
+ kfree(tl_dinode);

if (qrec)
ocfs2_free_quota_recovery(qrec);
@@ -1452,8 +1450,7 @@ bail:

mutex_unlock(&osb->recovery_lock);

- if (rm_quota)
- kfree(rm_quota);
+ kfree(rm_quota);

mlog_exit(status);
/* no one is callint kthread_stop() for us so the kthread() api
diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c
index 3d74196..c8c5a75 100644
--- a/fs/ocfs2/localalloc.c
+++ b/fs/ocfs2/localalloc.c
@@ -473,8 +473,7 @@ out:
if (local_alloc_inode)
iput(local_alloc_inode);

- if (alloc_copy)
- kfree(alloc_copy);
+ kfree(alloc_copy);

mlog_exit_void();
}
@@ -1311,8 +1310,7 @@ bail:
if (main_bm_inode)
iput(main_bm_inode);

- if (alloc_copy)
- kfree(alloc_copy);
+ kfree(alloc_copy);

if (ac)
ocfs2_free_alloc_context(ac);
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index 2c26ce2..f021a5f 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -2451,8 +2451,7 @@ static int ocfs2_check_volume(struct ocfs2_super *osb)
mlog_errno(status);

finally:
- if (local_alloc)
- kfree(local_alloc);
+ kfree(local_alloc);

mlog_exit(status);
return status;
@@ -2480,8 +2479,7 @@ static void ocfs2_delete_osb(struct ocfs2_super *osb)
* we free it here.
*/
kfree(osb->journal);
- if (osb->local_alloc_copy)
- kfree(osb->local_alloc_copy);
+ kfree(osb->local_alloc_copy);
kfree(osb->uuid_str);
ocfs2_put_dlm_debug(osb->osb_dlm_debug);
memset(osb, 0, sizeof(struct ocfs2_super));
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h
index 32d15bd..2c8796a 100644
--- a/include/net/netfilter/nf_conntrack_extend.h
+++ b/include/net/netfilter/nf_conntrack_extend.h
@@ -56,8 +56,7 @@ static inline void nf_ct_ext_destroy(struct nf_conn *ct)
*/
static inline void nf_ct_ext_free(struct nf_conn *ct)
{
- if (ct->ext)
- kfree(ct->ext);
+ kfree(ct->ext);
}

/* Add this type, returns pointer to data or NULL. */
diff --git a/net/caif/cfctrl.c b/net/caif/cfctrl.c
index 0ffe1e1..72b41eb 100644
--- a/net/caif/cfctrl.c
+++ b/net/caif/cfctrl.c
@@ -587,8 +587,7 @@ static int cfctrl_recv(struct cflayer *layer, struct cfpkt *pkt)
client_layer : NULL);
}

- if (req != NULL)
- kfree(req);
+ kfree(req);
}
break;
case CFCTRL_CMD_LINK_DESTROY:
diff --git a/net/tipc/name_distr.c b/net/tipc/name_distr.c
index 6ac3c54..adc492a 100644
--- a/net/tipc/name_distr.c
+++ b/net/tipc/name_distr.c
@@ -231,9 +231,7 @@ static void node_is_down(struct publication *publ)
publ->type, publ->lower, publ->node, publ->ref, publ->key);
}

- if (p) {
- kfree(p);
- }
+ kfree(p);
}

/**
diff --git a/scripts/dtc/data.c b/scripts/dtc/data.c
index fe555e8..8373df0 100644
--- a/scripts/dtc/data.c
+++ b/scripts/dtc/data.c
@@ -32,8 +32,7 @@ void data_free(struct data d)
m = nm;
}

- if (d.val)
- free(d.val);
+ free(d.val);
}

struct data data_grow_for(struct data d, int xlen)
diff --git a/scripts/genksyms/lex.c_shipped b/scripts/genksyms/lex.c_shipped
index 2ac23bc..571cabd 100644
--- a/scripts/genksyms/lex.c_shipped
+++ b/scripts/genksyms/lex.c_shipped
@@ -2311,8 +2311,7 @@ repeat:

/* Save the filename and line number for later error messages. */

- if (cur_filename)
- free(cur_filename);
+ free(cur_filename);

file = strchr(yytext, '\"')+1;
e = strchr(file, '\"');
diff --git a/scripts/genksyms/lex.l b/scripts/genksyms/lex.l
index fe50ff9..b120089 100644
--- a/scripts/genksyms/lex.l
+++ b/scripts/genksyms/lex.l
@@ -151,8 +151,7 @@ repeat:

/* Save the filename and line number for later error messages. */

- if (cur_filename)
- free(cur_filename);
+ free(cur_filename);

file = strchr(yytext, '\"')+1;
e = strchr(file, '\"');
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index c4dec80..884058d 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -206,8 +206,7 @@ load:
case S_INT:
case S_HEX:
case S_STRING:
- if (sym->def[def].val)
- free(sym->def[def].val);
+ free(sym->def[def].val);
default:
sym->def[def].val = NULL;
sym->def[def].tri = no;
diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c
index 25d1ec4..f201f8a 100644
--- a/scripts/kconfig/util.c
+++ b/scripts/kconfig/util.c
@@ -94,8 +94,7 @@ struct gstr str_assign(const char *s)
/* Free storage for growable string */
void str_free(struct gstr *gs)
{
- if (gs->s)
- free(gs->s);
+ free(gs->s);
gs->s = NULL;
gs->len = 0;
}
diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c
index 91852e4..ca7f9bc 100644
--- a/sound/aoa/codecs/onyx.c
+++ b/sound/aoa/codecs/onyx.c
@@ -1112,8 +1112,7 @@ static int onyx_i2c_remove(struct i2c_client *client)

aoa_codec_unregister(&onyx->codec);
of_node_put(onyx->codec.node);
- if (onyx->codec_info)
- kfree(onyx->codec_info);
+ kfree(onyx->codec_info);
i2c_set_clientdata(client, onyx);
kfree(onyx);
return 0;
diff --git a/sound/core/control.c b/sound/core/control.c
index 070aab4..2a66e57 100644
--- a/sound/core/control.c
+++ b/sound/core/control.c
@@ -946,8 +946,7 @@ static int snd_ctl_elem_user_tlv(struct snd_kcontrol *kcontrol,
static void snd_ctl_elem_user_free(struct snd_kcontrol *kcontrol)
{
struct user_element *ue = kcontrol->private_data;
- if (ue->tlv_data)
- kfree(ue->tlv_data);
+ kfree(ue->tlv_data);
kfree(ue);
}

diff --git a/sound/core/pcm.c b/sound/core/pcm.c
index cbe815d..bb4bd8e 100644
--- a/sound/core/pcm.c
+++ b/sound/core/pcm.c
@@ -920,8 +920,7 @@ void snd_pcm_detach_substream(struct snd_pcm_substream *substream)
PAGE_ALIGN(sizeof(struct snd_pcm_mmap_control)));
kfree(runtime->hw_constraints.rules);
#ifdef CONFIG_SND_PCM_XRUN_DEBUG
- if (runtime->hwptr_log)
- kfree(runtime->hwptr_log);
+ kfree(runtime->hwptr_log);
#endif
kfree(runtime);
substream->runtime = NULL;
diff --git a/sound/pci/asihpi/hpifunc.c b/sound/pci/asihpi/hpifunc.c
index eda26b3..b4bddce 100644
--- a/sound/pci/asihpi/hpifunc.c
+++ b/sound/pci/asihpi/hpifunc.c
@@ -3266,8 +3266,7 @@ u16 hpi_entity_find_next(struct hpi_entity *container_entity,

void hpi_entity_free(struct hpi_entity *entity)
{
- if (entity != NULL)
- kfree(entity);
+ kfree(entity);
}

static u16 hpi_entity_alloc_and_copy(struct hpi_entity *src,
diff --git a/sound/pci/ctxfi/ctdaio.c b/sound/pci/ctxfi/ctdaio.c
index af56eb9..0bc1c8e 100644
--- a/sound/pci/ctxfi/ctdaio.c
+++ b/sound/pci/ctxfi/ctdaio.c
@@ -583,10 +583,8 @@ static int get_daio_rsc(struct daio_mgr *mgr,
return 0;

error:
- if (dao)
- kfree(dao);
- else if (dai)
- kfree(dai);
+ kfree(dao);
+ kfree(dai);

spin_lock_irqsave(&mgr->mgr_lock, flags);
daio_mgr_put_rsc(&mgr->mgr, desc->type);
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
index 4b302d8..7b7e57b 100644
--- a/sound/pci/emu10k1/emufx.c
+++ b/sound/pci/emu10k1/emufx.c
@@ -768,8 +768,7 @@ static void snd_emu10k1_ctl_private_free(struct snd_kcontrol *kctl)
kctl->private_value = 0;
list_del(&ctl->list);
kfree(ctl);
- if (kctl->tlv.p)
- kfree(kctl->tlv.p);
+ kfree(kctl->tlv.p);
}

static int snd_emu10k1_add_controls(struct snd_emu10k1 *emu,
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index a3d638c..b14a40d 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -510,8 +510,7 @@ static int snd_hda_bus_free(struct hda_bus *bus)
return 0;
if (bus->workq)
flush_workqueue(bus->workq);
- if (bus->unsol)
- kfree(bus->unsol);
+ kfree(bus->unsol);
list_for_each_entry_safe(codec, n, &bus->codec_list, list) {
snd_hda_codec_free(codec);
}
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 914c670..b8effd0 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -847,8 +847,7 @@ static char *synthesize_perf_probe_point(struct perf_probe_point *pp)
error:
pr_debug("Failed to synthesize perf probe point: %s",
strerror(-ret));
- if (buf)
- free(buf);
+ free(buf);
return NULL;
}

@@ -1028,34 +1027,24 @@ void clear_perf_probe_event(struct perf_probe_event *pev)
struct perf_probe_arg_field *field, *next;
int i;

- if (pev->event)
- free(pev->event);
- if (pev->group)
- free(pev->group);
- if (pp->file)
- free(pp->file);
- if (pp->function)
- free(pp->function);
- if (pp->lazy_line)
- free(pp->lazy_line);
+ free(pev->event);
+ free(pev->group);
+ free(pp->file);
+ free(pp->function);
+ free(pp->lazy_line);
for (i = 0; i < pev->nargs; i++) {
- if (pev->args[i].name)
- free(pev->args[i].name);
- if (pev->args[i].var)
- free(pev->args[i].var);
- if (pev->args[i].type)
- free(pev->args[i].type);
+ free(pev->args[i].name);
+ free(pev->args[i].var);
+ free(pev->args[i].type);
field = pev->args[i].field;
while (field) {
next = field->next;
- if (field->name)
- free(field->name);
+ free(field->name);
free(field);
field = next;
}
}
- if (pev->args)
- free(pev->args);
+ free(pev->args);
memset(pev, 0, sizeof(*pev));
}

@@ -1064,19 +1053,13 @@ void clear_kprobe_trace_event(struct kprobe_trace_event *tev)
struct kprobe_trace_arg_ref *ref, *next;
int i;

- if (tev->event)
- free(tev->event);
- if (tev->group)
- free(tev->group);
- if (tev->point.symbol)
- free(tev->point.symbol);
+ free(tev->event);
+ free(tev->group);
+ free(tev->point.symbol);
for (i = 0; i < tev->nargs; i++) {
- if (tev->args[i].name)
- free(tev->args[i].name);
- if (tev->args[i].value)
- free(tev->args[i].value);
- if (tev->args[i].type)
- free(tev->args[i].type);
+ free(tev->args[i].name);
+ free(tev->args[i].value);
+ free(tev->args[i].type);
ref = tev->args[i].ref;
while (ref) {
next = ref->next;
@@ -1084,8 +1067,7 @@ void clear_kprobe_trace_event(struct kprobe_trace_event *tev)
ref = next;
}
}
- if (tev->args)
- free(tev->args);
+ free(tev->args);
memset(tev, 0, sizeof(*tev));
}

diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index b059dc5..7ec19bd 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -191,8 +191,7 @@ static void define_event_symbols(struct event *event,
zero_flag_atom = 0;
break;
case PRINT_FIELD:
- if (cur_field_name)
- free(cur_field_name);
+ free(cur_field_name);
cur_field_name = strdup(args->field.name);
break;
case PRINT_FLAGS:
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index 81f39ca..8b81c26 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -148,8 +148,7 @@ static void define_event_symbols(struct event *event,
zero_flag_atom = 0;
break;
case PRINT_FIELD:
- if (cur_field_name)
- free(cur_field_name);
+ free(cur_field_name);
cur_field_name = strdup(args->field.name);
break;
case PRINT_FLAGS:
diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c
index 1f7ecd4..ec6c4fd 100644
--- a/tools/perf/util/thread.c
+++ b/tools/perf/util/thread.c
@@ -57,8 +57,7 @@ int thread__set_comm(struct thread *self, const char *comm)
{
int err;

- if (self->comm)
- free(self->comm);
+ free(self->comm);
self->comm = strdup(comm);
err = self->comm == NULL ? -ENOMEM : 0;
if (!err) {
@@ -135,8 +134,7 @@ int thread__fork(struct thread *self, struct thread *parent)
int i;

if (parent->comm_set) {
- if (self->comm)
- free(self->comm);
+ free(self->comm);
self->comm = strdup(parent->comm);
if (!self->comm)
return -ENOMEM;
diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
index 73a0222..33cd08b 100644
--- a/tools/perf/util/trace-event-parse.c
+++ b/tools/perf/util/trace-event-parse.c
@@ -386,8 +386,7 @@ static void free_arg(struct print_arg *arg)

switch (arg->type) {
case PRINT_ATOM:
- if (arg->atom.atom)
- free(arg->atom.atom);
+ free(arg->atom.atom);
break;
case PRINT_NULL:
case PRINT_FIELD ... PRINT_OP:
@@ -583,8 +582,7 @@ static enum event_type __read_token(char **tok)

static void free_token(char *tok)
{
- if (tok)
- free(tok);
+ free(tok);
}

static enum event_type read_token(char **tok)
@@ -981,8 +979,7 @@ static int event_read_fields(struct event *event, struct format_field **fields)
fail:
free_token(token);
fail_expect:
- if (field)
- free(field);
+ free(field);
return -1;
}

diff --git a/usr/gen_init_cpio.c b/usr/gen_init_cpio.c
index b2b3c2d..eb530b4 100644
--- a/usr/gen_init_cpio.c
+++ b/usr/gen_init_cpio.c
@@ -368,7 +368,7 @@ static int cpio_mkfile(const char *name, const char *location,
rc = 0;

error:
- if (filebuf) free(filebuf);
+ free(filebuf);
if (file >= 0) close(file);
return rc;
}
--
1.7.1.342.g1c280

Attachment: pgp00000.pgp
Description: PGP signature