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

Commit 2afb5bf2 authored by Oana Medvesan's avatar Oana Medvesan Committed by Hariprasad Dhalinarasimha
Browse files

t-base-202: Check if kzalloc() returns a NULL pointer.



Change-Id: Ia510ce52875a2dab45b34b732a3008911d80100a
Signed-off-by: default avatarOana Medvesan <medvesan.oana@gmail.com>
Signed-off-by: default avatarHariprasad Dhalinarasimha <hnamgund@codeaurora.org>
Acked-by: default avatarTony Hamilton <tonyh@qti.qualcomm.com>
parent 8af679cd
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -79,6 +79,11 @@ enum mc_result mc_open_device(uint32_t device_id)

		/* Open new connection to device */
		dev_con = connection_new();
		if (dev_con == NULL) {
			mc_result = MC_DRV_ERR_NO_FREE_MEMORY;
			break;
		}

		if (!connection_connect(dev_con, MC_DAEMON_PID)) {
			MCDRV_DBG_ERROR(
				mc_kapi,
@@ -144,6 +149,10 @@ enum mc_result mc_open_device(uint32_t device_id)
		/* there is no payload to read */

		device = mcore_device_create(device_id, dev_con);
		if (device == NULL) {
			mc_result = MC_DRV_ERR_NO_FREE_MEMORY;
			break;
		}
		if (!mcore_device_open(device, MC_DRV_MOD_DEVNODE_FULLPATH)) {
			mcore_device_cleanup(device);
			MCDRV_DBG_ERROR(mc_kapi,
@@ -370,6 +379,10 @@ enum mc_result mc_open_session(struct mc_session_handle *session,

		/* Set up second channel for notifications */
		struct connection *session_connection = connection_new();
		if (session_connection == NULL) {
			mc_result = MC_DRV_ERR_NO_FREE_MEMORY;
			break;
		}

		if (!connection_connect(session_connection, MC_DAEMON_PID)) {
			MCDRV_DBG_ERROR(
@@ -422,9 +435,13 @@ enum mc_result mc_open_session(struct mc_session_handle *session,
		/* there is no payload. */

		/* Session established, new session object must be created */
		mcore_device_create_new_session(device,
		if (!mcore_device_create_new_session(device,
						     session->session_id,
						session_connection);
						     session_connection)) {
			connection_cleanup(session_connection);
			mc_result = MC_DRV_ERR_NO_FREE_MEMORY;
			break;
		}

	} while (false);

+6 −0
Original line number Diff line number Diff line
@@ -28,6 +28,10 @@ struct connection *connection_new(void)
	struct connection *conn;

	conn = kzalloc(sizeof(*conn), GFP_KERNEL);
	if (conn == NULL) {
		MCDRV_DBG_ERROR(mc_kapi, "Allocation failure");
		return NULL;
	}
	conn->sequence_magic = mcapi_unique_id();
	mutex_init(&conn->data_lock);
	sema_init(&conn->data_available_sem, SEM_NO_DATA_AVAILABLE);
@@ -39,6 +43,8 @@ struct connection *connection_new(void)
struct connection *connection_create(int socket_descriptor, pid_t dest)
{
	struct connection *conn = connection_new();
	if (conn == NULL)
		return NULL;

	conn->peer_pid = dest;
	return conn;
+14 −0
Original line number Diff line number Diff line
@@ -24,6 +24,10 @@ struct wsm *wsm_create(void *virt_addr, uint32_t len, uint32_t handle,
	struct wsm *wsm;

	wsm = kzalloc(sizeof(*wsm), GFP_KERNEL);
	if (wsm == NULL) {
		MCDRV_DBG_ERROR(mc_kapi, "Allocation failure");
		return NULL;
	}
	wsm->virt_addr = virt_addr;
	wsm->len = len;
	wsm->handle = handle;
@@ -37,6 +41,10 @@ struct mcore_device_t *mcore_device_create(uint32_t device_id,
	struct mcore_device_t *dev;

	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
	if (dev == NULL) {
		MCDRV_DBG_ERROR(mc_kapi, "Allocation failure");
		return NULL;
	}
	dev->device_id = device_id;
	dev->connection = connection;

@@ -102,6 +110,8 @@ bool mcore_device_create_new_session(struct mcore_device_t *dev,
	}
	struct session *session =
			session_create(session_id, dev->instance, connection);
	if (session == NULL)
		return false;
	list_add_tail(&(session->list), &(dev->session_vector));
	return true;
}
@@ -162,6 +172,10 @@ struct wsm *mcore_device_allocate_contiguous_wsm(struct mcore_device_t *dev,

		/* Register (vaddr,paddr) with device */
		wsm = wsm_create(virt_addr, len, handle, phys_addr);
		if (wsm == NULL) {
			mobicore_free_wsm(dev->instance, handle);
			break;
		}

		list_add_tail(&(wsm->list), &(dev->wsm_l2_vector));

+4 −0
Original line number Diff line number Diff line
@@ -152,6 +152,10 @@ static int __init mcapi_init(void)
	netlink_cfg.bind = NULL;

	mod_ctx = kzalloc(sizeof(struct mc_kernelapi_ctx), GFP_KERNEL);
	if (mod_ctx == NULL) {
		MCDRV_DBG_ERROR(mc_kapi, "Allocation failure");
		return -ENOMEM;
	}
	/* start kernel thread */
	mod_ctx->sk = netlink_kernel_create(&init_net, MC_DAEMON_NETLINK,
						    &netlink_cfg);
+12 −0
Original line number Diff line number Diff line
@@ -19,6 +19,10 @@ struct bulk_buffer_descriptor *bulk_buffer_descriptor_create(
	struct bulk_buffer_descriptor *desc;

	desc = kzalloc(sizeof(*desc), GFP_KERNEL);
	if (desc == NULL) {
		MCDRV_DBG_ERROR(mc_kapi, "Allocation failure");
		return NULL;
	}
	desc->virt_addr = virt_addr;
	desc->len = len;
	desc->handle = handle;
@@ -33,6 +37,10 @@ struct session *session_create(
	struct session *session;

	session = kzalloc(sizeof(*session), GFP_KERNEL);
	if (session == NULL) {
		MCDRV_DBG_ERROR(mc_kapi, "Allocation failure");
		return NULL;
	}
	session->session_id = session_id;
	session->instance = instance;
	session->notification_connection = connection;
@@ -132,6 +140,10 @@ struct bulk_buffer_descriptor *session_add_bulk_buf(struct session *session,
			bulk_buffer_descriptor_create(buf, len,
						      handle,
						      (void *)l2_table_phys);
		if (bulk_buf_descr == NULL) {
			mobicore_unmap_vmem(session->instance, handle);
			break;
		}

		/* Add to vector of descriptors */
		list_add_tail(&(bulk_buf_descr->list),