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

Commit 38177a28 authored by Vasantha Balla's avatar Vasantha Balla Committed by Gerrit - the friendly Code Review server
Browse files

msm: vidc: fix KCFI errors



Fix errors reported after enabling Kernel Control Flow
Integrity (KCFI) on kernel code. This is a security
mechanism that disallows changes to the original
control flow of a compiled binary.

Change-Id: I1e1e901c5889d9928411dc785da88e1eac378560
Signed-off-by: default avatarGovindaraj Rajagopal <grajagop@codeaurora.org>
Signed-off-by: default avatarVasantha Balla <vballa@codeaurora.org>
parent fb6ac1d8
Loading
Loading
Loading
Loading
+35 −18
Original line number Diff line number Diff line
@@ -384,9 +384,10 @@ static int hfi_process_session_error(u32 device_id,
}

static int hfi_process_event_notify(u32 device_id,
		struct hfi_msg_event_notify_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_event_notify_packet *pkt = _pkt;
	dprintk(VIDC_DBG, "Received: EVENT_NOTIFY\n");

	if (pkt->size < sizeof(struct hfi_msg_event_notify_packet)) {
@@ -425,9 +426,10 @@ static int hfi_process_event_notify(u32 device_id,
}

static int hfi_process_sys_init_done(u32 device_id,
		struct hfi_msg_sys_init_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_init_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};
	enum vidc_status status = VIDC_ERR_NONE;

@@ -464,9 +466,10 @@ static int hfi_process_sys_init_done(u32 device_id,
}

static int hfi_process_sys_rel_resource_done(u32 device_id,
		struct hfi_msg_sys_release_resource_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_release_resource_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};
	enum vidc_status status = VIDC_ERR_NONE;
	u32 pkt_size;
@@ -1274,9 +1277,10 @@ static void hfi_process_sess_get_prop_buf_req(
}

static int hfi_process_session_prop_info(u32 device_id,
		struct hfi_msg_session_property_info_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_property_info_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};
	struct buffer_requirements buff_req = { { {0} } };

@@ -1315,9 +1319,10 @@ static int hfi_process_session_prop_info(u32 device_id,
}

static int hfi_process_session_init_done(u32 device_id,
		struct hfi_msg_sys_session_init_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_session_init_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};
	struct vidc_hal_session_init_done session_init_done = { {0} };

@@ -1342,9 +1347,10 @@ static int hfi_process_session_init_done(u32 device_id,
}

static int hfi_process_session_load_res_done(u32 device_id,
		struct hfi_msg_session_load_resources_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_load_resources_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_LOAD_RESOURCES_DONE[%#x]\n",
@@ -1370,9 +1376,10 @@ static int hfi_process_session_load_res_done(u32 device_id,
}

static int hfi_process_session_flush_done(u32 device_id,
		struct hfi_msg_session_flush_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_flush_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_FLUSH_DONE[%#x]\n",
@@ -1413,9 +1420,10 @@ static int hfi_process_session_flush_done(u32 device_id,
}

static int hfi_process_session_etb_done(u32 device_id,
		struct hfi_msg_session_empty_buffer_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_empty_buffer_done_packet *pkt = _pkt;
	struct msm_vidc_cb_data_done data_done = {0};
	struct hfi_picture_type *hfi_picture_type = NULL;

@@ -1467,9 +1475,10 @@ static int hfi_process_session_etb_done(u32 device_id,
}

static int hfi_process_session_ftb_done(
		u32 device_id, struct vidc_hal_msg_pkt_hdr *msg_hdr,
		u32 device_id, void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct vidc_hal_msg_pkt_hdr *msg_hdr = _pkt;
	struct msm_vidc_cb_data_done data_done = {0};
	bool is_decoder = false, is_encoder = false;

@@ -1595,9 +1604,10 @@ static int hfi_process_session_ftb_done(
}

static int hfi_process_session_start_done(u32 device_id,
		struct hfi_msg_session_start_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_start_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_START_DONE[%#x]\n",
@@ -1621,9 +1631,10 @@ static int hfi_process_session_start_done(u32 device_id,
}

static int hfi_process_session_stop_done(u32 device_id,
		struct hfi_msg_session_stop_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_stop_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_STOP_DONE[%#x]\n",
@@ -1648,9 +1659,10 @@ static int hfi_process_session_stop_done(u32 device_id,
}

static int hfi_process_session_rel_res_done(u32 device_id,
		struct hfi_msg_session_release_resources_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_release_resources_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_RELEASE_RESOURCES_DONE[%#x]\n",
@@ -1675,9 +1687,10 @@ static int hfi_process_session_rel_res_done(u32 device_id,
}

static int hfi_process_session_rel_buf_done(u32 device_id,
		struct hfi_msg_session_release_buffers_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_release_buffers_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	if (!pkt || pkt->size <
@@ -1708,9 +1721,10 @@ static int hfi_process_session_rel_buf_done(u32 device_id,
}

static int hfi_process_session_end_done(u32 device_id,
		struct hfi_msg_sys_session_end_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_session_end_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_END_DONE[%#x]\n", pkt->session_id);
@@ -1733,9 +1747,10 @@ static int hfi_process_session_end_done(u32 device_id,
}

static int hfi_process_session_abort_done(u32 device_id,
	struct hfi_msg_sys_session_abort_done_packet *pkt,
	void *_pkt,
	struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_session_abort_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_ABORT_DONE[%#x]\n",
@@ -1803,9 +1818,10 @@ static void hfi_process_sys_get_prop_image_version(
}

static int hfi_process_sys_property_info(u32 device_id,
		struct hfi_msg_sys_property_info_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_property_info_packet *pkt = _pkt;
	if (!pkt) {
		dprintk(VIDC_ERR, "%s: invalid param\n", __func__);
		return -EINVAL;
@@ -1837,7 +1853,7 @@ static int hfi_process_sys_property_info(u32 device_id,
}

static int hfi_process_ignore(u32 device_id,
		struct vidc_hal_msg_pkt_hdr *msg_hdr,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	*info = (struct msm_vidc_cb_info) {
@@ -1918,5 +1934,6 @@ int hfi_process_msg_packet(u32 device_id, struct vidc_hal_msg_pkt_hdr *msg_hdr,
		break;
	}

	return pkt_func ? pkt_func(device_id, msg_hdr, info) : -ENOTSUPP;
	return pkt_func ?
		pkt_func(device_id, (void *)msg_hdr, info) : -ENOTSUPP;
}
+35 −18
Original line number Diff line number Diff line
@@ -322,9 +322,10 @@ static int hfi_process_session_error(u32 device_id,
}

static int hfi_process_event_notify(u32 device_id,
		struct hfi_msg_event_notify_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_event_notify_packet *pkt = _pkt;
	dprintk(VIDC_DBG, "Received: EVENT_NOTIFY\n");

	if (pkt->size < sizeof(struct hfi_msg_event_notify_packet)) {
@@ -363,9 +364,10 @@ static int hfi_process_event_notify(u32 device_id,
}

static int hfi_process_sys_init_done(u32 device_id,
		struct hfi_msg_sys_init_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_init_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};
	enum vidc_status status = VIDC_ERR_NONE;

@@ -402,9 +404,10 @@ static int hfi_process_sys_init_done(u32 device_id,
}

static int hfi_process_sys_rel_resource_done(u32 device_id,
		struct hfi_msg_sys_release_resource_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_release_resource_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};
	enum vidc_status status = VIDC_ERR_NONE;
	u32 pkt_size;
@@ -1228,9 +1231,10 @@ static void hfi_process_sess_get_prop_buf_req(
}

static int hfi_process_session_prop_info(u32 device_id,
		struct hfi_msg_session_property_info_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_property_info_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};
	struct hfi_profile_level profile_level = {0};
	enum hal_h264_entropy entropy = HAL_UNUSED_ENTROPY;
@@ -1303,9 +1307,10 @@ static int hfi_process_session_prop_info(u32 device_id,
}

static int hfi_process_session_init_done(u32 device_id,
		struct hfi_msg_sys_session_init_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_session_init_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};
	struct vidc_hal_session_init_done session_init_done = { {0} };

@@ -1337,9 +1342,10 @@ static int hfi_process_session_init_done(u32 device_id,
}

static int hfi_process_session_load_res_done(u32 device_id,
		struct hfi_msg_session_load_resources_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_load_resources_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_LOAD_RESOURCES_DONE[%#x]\n",
@@ -1367,9 +1373,10 @@ static int hfi_process_session_load_res_done(u32 device_id,
}

static int hfi_process_session_flush_done(u32 device_id,
		struct hfi_msg_session_flush_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_flush_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_FLUSH_DONE[%#x]\n",
@@ -1412,9 +1419,10 @@ static int hfi_process_session_flush_done(u32 device_id,
}

static int hfi_process_session_etb_done(u32 device_id,
		struct hfi_msg_session_empty_buffer_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_empty_buffer_done_packet *pkt = _pkt;
	struct msm_vidc_cb_data_done data_done = {0};
	struct hfi_picture_type *hfi_picture_type = NULL;

@@ -1463,9 +1471,10 @@ static int hfi_process_session_etb_done(u32 device_id,
}

static int hfi_process_session_ftb_done(
		u32 device_id, struct vidc_hal_msg_pkt_hdr *msg_hdr,
		u32 device_id, void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct vidc_hal_msg_pkt_hdr *msg_hdr = _pkt;
	struct msm_vidc_cb_data_done data_done = {0};
	bool is_decoder = false, is_encoder = false;

@@ -1590,9 +1599,10 @@ static int hfi_process_session_ftb_done(
}

static int hfi_process_session_start_done(u32 device_id,
		struct hfi_msg_session_start_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_start_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_START_DONE[%#x]\n",
@@ -1618,9 +1628,10 @@ static int hfi_process_session_start_done(u32 device_id,
}

static int hfi_process_session_stop_done(u32 device_id,
		struct hfi_msg_session_stop_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_stop_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_STOP_DONE[%#x]\n",
@@ -1647,9 +1658,10 @@ static int hfi_process_session_stop_done(u32 device_id,
}

static int hfi_process_session_rel_res_done(u32 device_id,
		struct hfi_msg_session_release_resources_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_release_resources_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_RELEASE_RESOURCES_DONE[%#x]\n",
@@ -1676,9 +1688,10 @@ static int hfi_process_session_rel_res_done(u32 device_id,
}

static int hfi_process_session_rel_buf_done(u32 device_id,
		struct hfi_msg_session_release_buffers_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_session_release_buffers_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	if (!pkt || pkt->size <
@@ -1711,9 +1724,10 @@ static int hfi_process_session_rel_buf_done(u32 device_id,
}

static int hfi_process_session_end_done(u32 device_id,
		struct hfi_msg_sys_session_end_done_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_session_end_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_END_DONE[%#x]\n", pkt->session_id);
@@ -1738,9 +1752,10 @@ static int hfi_process_session_end_done(u32 device_id,
}

static int hfi_process_session_abort_done(u32 device_id,
	struct hfi_msg_sys_session_abort_done_packet *pkt,
	void *_pkt,
	struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_session_abort_done_packet *pkt = _pkt;
	struct msm_vidc_cb_cmd_done cmd_done = {0};

	dprintk(VIDC_DBG, "RECEIVED: SESSION_ABORT_DONE[%#x]\n",
@@ -1846,9 +1861,10 @@ static void hfi_process_sys_get_prop_image_version(
}

static int hfi_process_sys_property_info(u32 device_id,
		struct hfi_msg_sys_property_info_packet *pkt,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	struct hfi_msg_sys_property_info_packet *pkt = _pkt;
	if (!pkt) {
		dprintk(VIDC_ERR, "%s: invalid param\n", __func__);
		return -EINVAL;
@@ -1880,7 +1896,7 @@ static int hfi_process_sys_property_info(u32 device_id,
}

static int hfi_process_ignore(u32 device_id,
		struct vidc_hal_msg_pkt_hdr *msg_hdr,
		void *_pkt,
		struct msm_vidc_cb_info *info)
{
	*info = (struct msm_vidc_cb_info) {
@@ -1964,5 +1980,6 @@ int hfi_process_msg_packet(u32 device_id, struct vidc_hal_msg_pkt_hdr *msg_hdr,
		break;
	}

	return pkt_func ? pkt_func(device_id, msg_hdr, info) : -ENOTSUPP;
	return pkt_func ?
		pkt_func(device_id, (void *)msg_hdr, info) : -ENOTSUPP;
}