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

Commit ccad254c authored by Ilia Lin's avatar Ilia Lin
Browse files

ipa: Null persistent pointers after free



Assign NULL to pointers that may be used later
after calling kfree on them.

Change-Id: I3298eb484c92ee2373f0bc41aae8ae45fb373cf0
Signed-off-by: default avatarIlia Lin <ilialin@codeaurora.org>
parent 86100918
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -356,6 +356,7 @@ static int ipa_uc_ntn_alloc_conn_smmu_info(struct ipa_ntn_setup_info *dest,
		source->buff_pool_base_sgt);
	if (result) {
		kfree(dest->data_buff_list);
		dest->data_buff_list = NULL;
		return result;
	}

@@ -363,6 +364,7 @@ static int ipa_uc_ntn_alloc_conn_smmu_info(struct ipa_ntn_setup_info *dest,
		source->ring_base_sgt);
	if (result) {
		kfree(dest->data_buff_list);
		dest->data_buff_list = NULL;
		ipa_smmu_free_sgt(&dest->buff_pool_base_sgt);
		return result;
	}
@@ -373,6 +375,7 @@ static int ipa_uc_ntn_alloc_conn_smmu_info(struct ipa_ntn_setup_info *dest,
static void ipa_uc_ntn_free_conn_smmu_info(struct ipa_ntn_setup_info *params)
{
	kfree(params->data_buff_list);
	params->data_buff_list = NULL;
	ipa_smmu_free_sgt(&params->buff_pool_base_sgt);
	ipa_smmu_free_sgt(&params->ring_base_sgt);
}
+5 −0
Original line number Diff line number Diff line
@@ -689,6 +689,7 @@ static void ipa3_active_clients_log_destroy(void)
	kfree(active_clients_table_buf);
	active_clients_table_buf = NULL;
	kfree(ipa3_ctx->ipa3_active_clients_logging.log_buffer[0]);
	ipa3_ctx->ipa3_active_clients_logging.log_buffer[0] = NULL;
	ipa3_ctx->ipa3_active_clients_logging.log_head = 0;
	ipa3_ctx->ipa3_active_clients_logging.log_tail =
			IPA3_ACTIVE_CLIENTS_LOG_BUFFER_SIZE_LINES - 1;
@@ -7867,13 +7868,16 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
fail_init_mem_partition:
fail_bind:
	kfree(ipa3_ctx->ctrl);
	ipa3_ctx->ctrl = NULL;
fail_mem_ctrl:
	kfree(ipa3_ctx->ipa_tz_unlock_reg);
	ipa3_ctx->ipa_tz_unlock_reg = NULL;
fail_tz_unlock_reg:
	if (ipa3_ctx->logbuf)
		ipc_log_context_destroy(ipa3_ctx->logbuf);
fail_uc_file_alloc:
	kfree(ipa3_ctx->gsi_fw_file_name);
	ipa3_ctx->gsi_fw_file_name = NULL;
fail_gsi_file_alloc:
fail_mem_ctx:
	return result;
@@ -8561,6 +8565,7 @@ static int get_ipa_dts_configuration(struct platform_device *pdev,
			IPAERR("failed to read register addresses\n");
			kfree(ipa_tz_unlock_reg);
			kfree(ipa_drv_res->ipa_tz_unlock_reg);
			ipa_drv_res->ipa_tz_unlock_reg = NULL;
			return -EFAULT;
		}

+4 −0
Original line number Diff line number Diff line
@@ -1383,10 +1383,12 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
	ep->sys->repl_hdlr = ipa3_replenish_rx_cache;
	ep->sys->repl->capacity = 0;
	kfree(ep->sys->repl);
	ep->sys->repl = NULL;
fail_page_recycle_repl:
	if (ep->sys->page_recycle_repl) {
		ep->sys->page_recycle_repl->capacity = 0;
		kfree(ep->sys->page_recycle_repl);
		ep->sys->page_recycle_repl = NULL;
	}
fail_napi:
	/* Delete NAPI TX object. */
@@ -2827,6 +2829,7 @@ static void ipa3_cleanup_rx(struct ipa3_sys_context *sys)

		kfree(sys->repl->cache);
		kfree(sys->repl);
		sys->repl = NULL;
	}
	if (sys->page_recycle_repl) {
		for (i = 0; i < sys->page_recycle_repl->capacity; i++) {
@@ -2845,6 +2848,7 @@ static void ipa3_cleanup_rx(struct ipa3_sys_context *sys)
		}
		kfree(sys->page_recycle_repl->cache);
		kfree(sys->page_recycle_repl);
		sys->page_recycle_repl = NULL;
	}
}

+1 −0
Original line number Diff line number Diff line
@@ -762,6 +762,7 @@ int ipa_odl_init(void)
	class_destroy(odl_cdev[0].class);
create_char_dev0_fail:
	kfree(ipa3_odl_ctx);
	ipa3_odl_ctx = NULL;
fail_mem_ctx:
	return result;
}
+1 −0
Original line number Diff line number Diff line
@@ -641,6 +641,7 @@ int ipa_pm_init(struct ipa_pm_init_params *params)
	if (!ipa_pm_ctx->wq) {
		IPA_PM_ERR("create workqueue failed\n");
		kfree(ipa_pm_ctx);
		ipa_pm_ctx = NULL;
		return -ENOMEM;
	}

Loading