summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGovindaraj Rajagopal <grajagop@codeaurora.org>2019-01-14 13:54:44 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2019-02-05 01:42:49 -0800
commit38b1c816170044c4877d41125cffdd67f7f158a3 (patch)
tree2b3d3948a71e8ea05619ac74b69507815a2aeda0
parented6ee95b3f73481494d4603c6e9890cf25038b42 (diff)
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: Govindaraj Rajagopal <grajagop@codeaurora.org> Signed-off-by: Sanjay Singh <sisanj@codeaurora.org>
-rw-r--r--drivers/media/platform/msm/vidc/hfi_response_handler.c55
1 files changed, 36 insertions, 19 deletions
diff --git a/drivers/media/platform/msm/vidc/hfi_response_handler.c b/drivers/media/platform/msm/vidc/hfi_response_handler.c
index 3835a2e45882..36a17d4f2018 100644
--- a/drivers/media/platform/msm/vidc/hfi_response_handler.c
+++ b/drivers/media/platform/msm/vidc/hfi_response_handler.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2016, 2019, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -316,9 +316,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)) {
@@ -357,9 +358,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;
@@ -396,9 +398,10 @@ err_no_prop:
}
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;
@@ -1211,9 +1214,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 = {0};
@@ -1286,9 +1290,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} };
@@ -1320,9 +1325,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",
pkt->session_id);
@@ -1349,9 +1355,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",
@@ -1394,9 +1401,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;
@@ -1445,9 +1453,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;
@@ -1572,9 +1581,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",
@@ -1600,9 +1610,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",
@@ -1629,9 +1640,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",
@@ -1658,9 +1670,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 <
@@ -1693,9 +1706,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);
@@ -1720,9 +1734,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",
@@ -1827,9 +1842,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;
@@ -1861,7 +1877,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) {
@@ -1945,5 +1961,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;
}