--- a/drivers/scsi/elx/efct/efct_hw.c
+++ b/drivers/scsi/elx/efct/efct_hw.c
@@ -529,15 +529,12 @@ efct_hw_setup_io(struct efct_hw *hw)
 		}

 		/* Create WQE buffs for IO */
-		hw->wqe_buffs = kmalloc((hw->config.n_io *
-					     hw->sli.wqe_size),
-					     GFP_ATOMIC);
+		hw->wqe_buffs = kzalloc((hw->config.n_io * hw->sli.wqe_size),
+					GFP_ATOMIC);
 		if (!hw->wqe_buffs) {
 			kfree(hw->io);
 			return EFCT_HW_RTN_NO_MEMORY;
 		}
-		memset(hw->wqe_buffs, 0, (hw->config.n_io *
-					hw->sli.wqe_size));

 	} else {
 		/* re-use existing IOs, including SGLs */
@@ -3119,11 +3116,9 @@ efct_hw_get_sfp(struct efct_hw *hw, u16
 	struct efc_dma *dma;

 	/* mbxdata holds the header of the command */
-	mbxdata = kmalloc(SLI4_BMBX_SIZE, GFP_KERNEL);
+	mbxdata = kzalloc(SLI4_BMBX_SIZE, GFP_KERNEL);
 	if (!mbxdata)
 		return EFCT_HW_RTN_NO_MEMORY;
-
-	memset(mbxdata, 0, SLI4_BMBX_SIZE);
 	/*
 	 * cb_arg holds the data that will be passed to the callback on
 	 * completion
@@ -3226,12 +3221,10 @@ efct_hw_get_temperature(struct efct_hw *
 	struct efct_hw_temp_cb_arg *cb_arg;
 	u8 *mbxdata;

-	mbxdata = kmalloc(SLI4_BMBX_SIZE, GFP_KERNEL);
+	mbxdata = kzalloc(SLI4_BMBX_SIZE, GFP_KERNEL);
 	if (!mbxdata)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(mbxdata, 0, SLI4_BMBX_SIZE);
-
 	cb_arg = kmalloc(sizeof(*cb_arg), GFP_KERNEL);
 	if (!cb_arg) {
 		kfree(mbxdata);
@@ -3382,12 +3375,10 @@ efct_hw_get_link_stats(struct efct_hw *h
 	struct efct_hw_link_stat_cb_arg *cb_arg;
 	u8 *mbxdata;

-	mbxdata = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+	mbxdata = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 	if (!mbxdata)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(mbxdata, 0, SLI4_BMBX_SIZE);
-
 	cb_arg = kmalloc(sizeof(*cb_arg), GFP_ATOMIC);
 	if (!cb_arg) {
 		kfree(mbxdata);
@@ -3481,12 +3472,10 @@ efct_hw_get_host_stats(struct efct_hw *h
 	struct efct_hw_host_stat_cb_arg *cb_arg;
 	u8 *mbxdata;

-	mbxdata = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+	mbxdata = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 	if (!mbxdata)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(mbxdata, 0, SLI4_BMBX_SIZE);
-
 	cb_arg = kmalloc(sizeof(*cb_arg), GFP_ATOMIC);
 	if (!cb_arg) {
 		kfree(mbxdata);
@@ -3879,11 +3868,10 @@ efct_hw_async_call(struct efct_hw *hw,
 	 * we need this to be persistent as the mbox cmd submission may be
 	 * queued and executed later execution.
 	 */
-	ctx = kmalloc(sizeof(*ctx), GFP_ATOMIC);
+	ctx = kzalloc(sizeof(*ctx), GFP_ATOMIC);
 	if (!ctx)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(ctx, 0, sizeof(*ctx));
 	ctx->callback = callback;
 	ctx->arg = arg;

@@ -3974,14 +3962,13 @@ efct_hw_port_free_unreg_vpi(struct efc_s

 	/* Allocate memory and send unreg_vpi */
 	if (!data) {
-		data = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+		data = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 		if (!data) {
 			efct_hw_port_free_resources(sport,
 						    EFC_HW_PORT_FREE_FAIL,
 						    data);
 			return;
 		}
-		memset(data, 0, SLI4_BMBX_SIZE);
 	}

 	rc = sli_cmd_unreg_vpi(&hw->sli, data, SLI4_BMBX_SIZE,
@@ -4178,12 +4165,11 @@ efct_hw_port_alloc(struct efc *efc, stru
 	}

 	if (domain) {
-		cmd = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+		cmd = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 		if (!cmd) {
 			rc = EFCT_HW_RTN_NO_MEMORY;
 			goto efct_hw_port_alloc_out;
 		}
-		memset(cmd, 0, SLI4_BMBX_SIZE);

 		/*
 		 * If the WWPN is NULL, fetch the default
@@ -4260,11 +4246,10 @@ efct_hw_port_attach(struct efc *efc, str
 		return EFCT_HW_RTN_ERROR;
 	}

-	buf = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+	buf = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 	if (!buf)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(buf, 0, SLI4_BMBX_SIZE);
 	sport->fc_id = fc_id;

 	rc = sli_cmd_reg_vpi(&hw->sli, buf, SLI4_BMBX_SIZE, sport->fc_id,
@@ -4506,12 +4491,10 @@ efct_hw_domain_alloc(struct efc *efc, st
 		return EFCT_HW_RTN_ERROR;
 	}

-	cmd = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+	cmd = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 	if (!cmd)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(cmd, 0, SLI4_BMBX_SIZE);
-
 	/* allocate memory for the service parameters */
 	domain->dma.size = 112;
 	domain->dma.virt = dma_alloc_coherent(&efct->pcidev->dev,
@@ -4592,11 +4575,10 @@ efct_hw_domain_attach(struct efc *efc,
 		return EFCT_HW_RTN_ERROR;
 	}

-	buf = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+	buf = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 	if (!buf)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(buf, 0, SLI4_BMBX_SIZE);
 	domain->sport->fc_id = fc_id;

 	rc = sli_cmd_reg_vfi(&hw->sli, buf, SLI4_BMBX_SIZE, domain->indicator,
@@ -4824,11 +4806,9 @@ efct_hw_node_attach(struct efc *efc, str
 		return EFCT_HW_RTN_ERROR;
 	}

-	buf = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+	buf = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 	if (!buf)
 		return EFCT_HW_RTN_NO_MEMORY;
-
-	memset(buf, 0, SLI4_BMBX_SIZE);
 	/*
 	 * If the attach count is non-zero, this RPI has already been reg'd.
 	 * Otherwise, register the RPI
@@ -5000,11 +4980,10 @@ efct_hw_node_detach(struct efc *efc, str
 		if (!rnode->attached)
 			return EFCT_HW_RTN_SUCCESS_SYNC;

-		buf = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+		buf = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 		if (!buf)
 			return EFCT_HW_RTN_NO_MEMORY;

-		memset(buf, 0, SLI4_BMBX_SIZE);
 		count = atomic_sub_return(1, &hw->rpi_ref[index].rpi_count);
 		count++;
 		if (count <= 1) {
@@ -5093,12 +5072,10 @@ efct_hw_node_free_all(struct efct_hw *hw
 		return EFCT_HW_RTN_ERROR;
 	}

-	buf = kmalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
+	buf = kzalloc(SLI4_BMBX_SIZE, GFP_ATOMIC);
 	if (!buf)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(buf, 0, SLI4_BMBX_SIZE);
-
 	if (!sli_cmd_unreg_rpi(&hw->sli, buf, SLI4_BMBX_SIZE, 0xffff,
 			      SLI_RSRC_FCFI, U32_MAX))
 		rc = efct_hw_command(hw, buf, EFCT_CMD_NOWAIT,
@@ -5159,12 +5136,10 @@ efct_hw_get_nvparms(struct efct_hw *hw,
 	enum efct_hw_rtn rc = EFCT_HW_RTN_SUCCESS;

 	/* mbxdata holds the header of the command */
-	mbxdata = kmalloc(SLI4_BMBX_SIZE, GFP_KERNEL);
+	mbxdata = kzalloc(SLI4_BMBX_SIZE, GFP_KERNEL);
 	if (!mbxdata)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(mbxdata, 0, SLI4_BMBX_SIZE);
-
 	/*
 	 * cb_arg holds the data that will be passed to the callback on
 	 * completion
@@ -5303,12 +5278,10 @@ efct_hw_firmware_write_sli4_intf_2(struc
 	struct efct_hw_fw_wr_cb_arg *cb_arg;
 	int noc = 0;

-	mbxdata = kmalloc(SLI4_BMBX_SIZE, GFP_KERNEL);
+	mbxdata = kzalloc(SLI4_BMBX_SIZE, GFP_KERNEL);
 	if (!mbxdata)
 		return EFCT_HW_RTN_NO_MEMORY;

-	memset(mbxdata, 0, SLI4_BMBX_SIZE);
-
 	cb_arg = kmalloc(sizeof(*cb_arg), GFP_KERNEL);
 	if (!cb_arg) {
 		kfree(mbxdata);
