vout_serve: code coverity fix
authorEvoke Zhang <evoke.zhang@amlogic.com>
Thu, 21 Jun 2018 05:23:55 +0000 (13:23 +0800)
committerYixun Lan <yixun.lan@amlogic.com>
Mon, 2 Jul 2018 08:36:43 +0000 (01:36 -0700)
PD#168799: vout_serve: code coverity fix

Change-Id: Id5358f4adc791980b14e2c22eff3443e9601a90e
Signed-off-by: Evoke Zhang <evoke.zhang@amlogic.com>
drivers/amlogic/media/vout/vout_serve/vout_func.c
drivers/amlogic/media/vout/vout_serve/vout_serve.c

index ae38888..747cde4 100644 (file)
@@ -157,6 +157,11 @@ void vout_func_set_state(int index, enum vmode_e mode)
                p_module = &vout2_module;
 #endif
 
+       if (p_module == NULL) {
+               VOUTERR("vout%d: %s: vout_module is NULL\n", index, __func__);
+               mutex_unlock(&vout_mutex);
+               return;
+       }
        list_for_each_entry(p_server, &p_module->vout_server_list, list) {
                if (p_server->op.vmode_is_supported == NULL) {
                        p_server->op.disable(mode);
@@ -192,33 +197,32 @@ void vout_func_update_viu(int index)
 
        mutex_lock(&vout_mutex);
 
-       if (index == 1)
+       if (index == 1) {
                p_module = &vout_module;
+               mux_bit = 0;
+               clk_sel = 0;
+       } else if (index == 2) {
 #ifdef CONFIG_AMLOGIC_VOUT2_SERVE
-       else if (index == 2)
                p_module = &vout2_module;
+               mux_bit = 2;
+               clk_sel = 1;
 #endif
+       }
 
+       if (p_module == NULL) {
+               VOUTERR("vout%d: %s: vout_module is NULL\n", index, __func__);
+               mutex_unlock(&vout_mutex);
+               return;
+       }
        p_server = p_module->curr_vout_server;
 
-       if (p_server->op.get_vinfo)
-               vinfo = p_server->op.get_vinfo();
+       if (p_server) {
+               if (p_server->op.get_vinfo)
+                       vinfo = p_server->op.get_vinfo();
+       }
        if (vinfo == NULL)
                vinfo = get_invalid_vinfo(index);
 
-       switch (index) {
-       case 1:
-               mux_bit = 0;
-               clk_sel = 0;
-               break;
-       case 2:
-               mux_bit = 2;
-               clk_sel = 1;
-               break;
-       default:
-               break;
-       }
-
        mux_sel = vinfo->viu_mux;
        switch (mux_sel) {
        case VIU_MUX_ENCL:
@@ -262,6 +266,12 @@ int vout_func_set_vmode(int index, enum vmode_e mode)
        else if (index == 2)
                p_module = &vout2_module;
 #endif
+
+       if (p_module == NULL) {
+               VOUTERR("vout%d: %s: vout_module is NULL\n", index, __func__);
+               mutex_unlock(&vout_mutex);
+               return -1;
+       }
        ret = p_module->curr_vout_server->op.set_vmode(mode);
 
        mutex_unlock(&vout_mutex);
@@ -301,6 +311,11 @@ enum vmode_e vout_func_validate_vmode(int index, char *name)
                p_module = &vout2_module;
 #endif
 
+       if (p_module == NULL) {
+               VOUTERR("vout%d: %s: vout_module is NULL\n", index, __func__);
+               mutex_unlock(&vout_mutex);
+               return VMODE_MAX;
+       }
        list_for_each_entry(p_server, &p_module->vout_server_list, list) {
                /* check state for another vout */
                if (p_server->op.get_state) {
@@ -490,6 +505,10 @@ int vout_func_vout_shutdown(int index)
                p_module = &vout2_module;
 #endif
 
+       if (p_module == NULL) {
+               VOUTERR("vout%d: %s: vout_module is NULL\n", index, __func__);
+               return -1;
+       }
        list_for_each_entry(p_server, &p_module->vout_server_list, list) {
                if (p_server->op.vout_shutdown)
                        ret = p_server->op.vout_shutdown();
@@ -531,6 +550,11 @@ int vout_func_vout_register_server(int index,
                p_module = &vout2_module;
 #endif
 
+       if (p_module == NULL) {
+               VOUTERR("vout%d: %s: vout_module is NULL\n", index, __func__);
+               mutex_unlock(&vout_mutex);
+               return -1;
+       }
        list_for_each(p_iter, &p_module->vout_server_list) {
                p_server = list_entry(p_iter, struct vout_server_s, list);
 
@@ -570,6 +594,11 @@ int vout_func_vout_unregister_server(int index,
                p_module = &vout2_module;
 #endif
 
+       if (p_module == NULL) {
+               VOUTERR("vout%d: %s: vout_module is NULL\n", index, __func__);
+               mutex_unlock(&vout_mutex);
+               return -1;
+       }
        list_for_each_entry(p_server, &p_module->vout_server_list, list) {
                if (p_server->name && mem_server->name &&
                        (strcmp(p_server->name, mem_server->name) == 0)) {
index 8a19f25..285f30a 100644 (file)
@@ -263,15 +263,15 @@ static int set_vout_init_mode(void)
        char init_mode_str[VMODE_NAME_LEN_MAX];
        int ret = 0;
 
-       strncpy(init_mode_str, vout_mode_uboot, VMODE_NAME_LEN_MAX);
+       snprintf(init_mode_str, VMODE_NAME_LEN_MAX, "%s", vout_mode_uboot);
        vout_init_vmode = validate_vmode(vout_mode_uboot);
        if (vout_init_vmode >= VMODE_MAX) {
                VOUTERR("no matched vout_init mode %s, force to invalid\n",
                        vout_mode_uboot);
                nulldisp_index = 1;
                vout_init_vmode = nulldisp_vinfo[nulldisp_index].mode;
-               strncpy(init_mode_str, nulldisp_vinfo[nulldisp_index].name,
-                       VMODE_NAME_LEN_MAX);
+               snprintf(init_mode_str, VMODE_NAME_LEN_MAX, "%s",
+                       nulldisp_vinfo[nulldisp_index].name);
        }
        last_vmode = vout_init_vmode;
 
@@ -800,18 +800,18 @@ static int refresh_tvout_mode(void)
        hpd_state = vout_get_hpd_state();
        if (hpd_state) {
                cur_vmode = validate_vmode(hdmimode);
-               strncpy(cur_mode_str, hdmimode, VMODE_NAME_LEN_MAX);
+               snprintf(cur_mode_str, VMODE_NAME_LEN_MAX, "%s", hdmimode);
        } else {
                cur_vmode = validate_vmode(cvbsmode);
-               strncpy(cur_mode_str, cvbsmode, VMODE_NAME_LEN_MAX);
+               snprintf(cur_mode_str, VMODE_NAME_LEN_MAX, "%s", cvbsmode);
        }
        if (cur_vmode >= VMODE_MAX) {
                VOUTERR("%s: no matched cur_mode: %s, force to invalid\n",
                        __func__, cur_mode_str);
                nulldisp_index = 1;
                cur_vmode = nulldisp_vinfo[nulldisp_index].mode;
-               strncpy(cur_mode_str, nulldisp_vinfo[nulldisp_index].name,
-                       VMODE_NAME_LEN_MAX);
+               snprintf(cur_mode_str, VMODE_NAME_LEN_MAX, "%s",
+                       nulldisp_vinfo[nulldisp_index].name);
        }
 
        /* not box platform */