media: fix some coverity error: [1/1]
authorPeng Yixin <yixin.peng@amlogic.com>
Tue, 13 Nov 2018 07:21:30 +0000 (15:21 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Fri, 16 Nov 2018 11:16:59 +0000 (03:16 -0800)
PD#SWPL-2053

Problem:
Coverity detected some code defects.

Solution:
Fixed these code defects.

Verify:
Verified u212

Change-Id: Ie3c0907c7ee3db94f65f58aa5d5c96812a7fe38c
Signed-off-by: Peng Yixin <yixin.peng@amlogic.com>
drivers/amlogic/media/common/codec_mm/codec_mm_scatter.c
drivers/amlogic/media/common/vfm/vframe_provider.c
drivers/amlogic/media/frame_sync/ptsserv.c
drivers/amlogic/media/osd/osd_drm.c

index 5cac20b..7976d83 100644 (file)
@@ -1156,8 +1156,10 @@ static int codec_mm_scatter_free_page_id_locked(
                ulong phy_addr = PAGE_ADDR_OF_MMS(mms, id);
 
                free_page((unsigned long)phys_to_virt(phy_addr));
+               codec_mm_list_lock(smgt);
                smgt->one_page_cnt--;
                smgt->total_page_num--;
+               codec_mm_list_unlock(smgt);
                if (id == mms->page_tail)
                        mms->page_tail--;
                mms->page_cnt--;
@@ -1263,7 +1265,9 @@ static int codec_mm_scatter_free_tail_pages_in(
                return -1;
        }
        smgt = (struct codec_mm_scatter_mgt *)mms->manager;
+       codec_mm_list_lock(smgt);
        mms->page_used = start_free_id;
+       codec_mm_list_unlock(smgt);
 
        if (fast_mode == 1) {
                codec_mm_scatter_unlock(mms);
@@ -1710,7 +1714,9 @@ static int codec_mm_scatter_alloc_want_pages_in(
        if (want_pages > mms->page_max_cnt)
                return CODEC_MM_S_ERR(100);
        codec_mm_scatter_lock(mms);
+       codec_mm_list_lock(smgt);
        mms->page_used = want_pages;
+       codec_mm_list_unlock(smgt);
        if (want_pages > mms->page_cnt) {
                ret = codec_mm_page_alloc_all_locked(
                                smgt,
@@ -2207,6 +2213,7 @@ int codec_mm_scatter_mgt_delay_free_swith(
        int is_tvp)
 {
        struct codec_mm_scatter_mgt *smgt;
+       unsigned long ret = 0;
 
        smgt = codec_mm_get_scatter_mgt(is_tvp);
        codec_mm_list_lock(smgt);
@@ -2243,9 +2250,12 @@ int codec_mm_scatter_mgt_delay_free_swith(
                                        start_time + HZ)) {
                                break;
                        }
-                       wait_for_completion_timeout(
+                       ret = wait_for_completion_timeout(
                                &smgt->complete,
                                HZ/10);
+
+                       if (ret == 0)
+                               pr_debug("codec_mm_scatter_mgt_delay_free_swith time out\n");
                }
                pr_info("end: cached pages: %d, speed %d ms\n",
                        smgt->cached_pages,
index a8c8c32..e208060 100644 (file)
@@ -162,7 +162,7 @@ static inline int use_provider(struct vframe_provider_s *prov)
        if (prov) {
                ret = atomic_inc_return(&prov->use_cnt);
                if (ret <= 0) {
-                       atomic_dec_return(&prov->use_cnt);
+                       atomic_dec(&prov->use_cnt);
                        pr_err("%s: Error, provider error-%d\n",
                                prov->name, atomic_read(&prov->use_cnt));
                }
@@ -172,7 +172,7 @@ static inline int use_provider(struct vframe_provider_s *prov)
 static inline void unuse_provider(struct vframe_provider_s *prov)
 {
        if (prov)
-               atomic_dec_return(&prov->use_cnt);
+               atomic_dec(&prov->use_cnt);
 }
 #define CLOSED_CNT -100000
 static int vf_provider_close(struct vframe_provider_s *prov)
index 206e50d..0618ba0 100644 (file)
@@ -855,7 +855,7 @@ static int pts_lookup_offset_inline_locked(u8 type, u32 offset, u32 *val,
                                && (VAL_DIFF(p->val, p2->val) >= 0)) {
                                /* do interpolation between [p2, p] */
                                *val =
-                                       div_u64(((p->val - p2->val) *
+                                       div_u64((((u64)p->val - p2->val) *
                                                (offset - p2->offset)),
                                                (p->offset - p2->offset)) +
                                        p2->val;
index 91d7d76..86083a8 100644 (file)
@@ -61,27 +61,27 @@ static int parse_para(const char *para, int para_num, int *result)
        params = kstrdup(para, GFP_KERNEL);
        params_base = params;
        token = params;
-       if (!token)
-               return 0;
-       len = strlen(token);
-       do {
-               token = strsep(&params, " ");
-               while (token && (isspace(*token)
-                               || !isgraph(*token)) && len) {
-                       token++;
-                       len--;
-               }
-               if (len == 0)
-                       break;
-               ret = kstrtoint(token, 0, &res);
-               if (ret < 0)
-                       break;
-               if (!token)
-                       return 0;
+       if (token) {
                len = strlen(token);
-               *out++ = res;
-               count++;
-       } while ((token) && (count < para_num) && (len > 0));
+               do {
+                       token = strsep(&params, " ");
+                       if (!token)
+                               break;
+                       while (token && (isspace(*token)
+                                       || !isgraph(*token)) && len) {
+                               token++;
+                               len--;
+                       }
+                       if (len == 0)
+                               break;
+                       ret = kstrtoint(token, 0, &res);
+                       if (ret < 0)
+                               break;
+                       len = strlen(token);
+                       *out++ = res;
+                       count++;
+               } while ((count < para_num) && (len > 0));
+       }
 
        kfree(params_base);
        return count;