summaryrefslogtreecommitdiff
authorYong Qin <yong.qin@amlogic.com>2019-10-11 08:20:58 (GMT)
committer zihuan.ling <zihuan.ling@amlogic.com>2019-10-12 01:50:06 (GMT)
commit0619a883c58b158dc9ce2136a1eed112d87e5983 (patch)
treee662d82ff1a5c8647ef4e1c94ad77f24cc6b5b31
parentb0083593c450e48038fadda8598ce57be7b030ac (diff)
downloadcommon-0619a883c58b158dc9ce2136a1eed112d87e5983.zip
common-0619a883c58b158dc9ce2136a1eed112d87e5983.tar.gz
common-0619a883c58b158dc9ce2136a1eed112d87e5983.tar.bz2
vdin: Fix coverity error [1/1]
PD#SWPL-13987 Problem: Fix coverity error. Solution: Fix coverity error. Verify: TL1 Change-Id: I5fec89f8980a4ea9b93e96e56dd857817695ad71 Signed-off-by: Yong Qin <yong.qin@amlogic.com>
Diffstat
-rw-r--r--drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h18
-rw-r--r--drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c12
-rw-r--r--drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c61
-rw-r--r--drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h2
4 files changed, 52 insertions, 41 deletions
diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h b/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h
index c693adf..802a302 100644
--- a/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h
+++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_ctl.h
@@ -50,41 +50,41 @@ enum vdin_output_mif_e {
*/
enum vdin_matrix_csc_e {
VDIN_MATRIX_NULL = 0,
- VDIN_MATRIX_XXX_YUV601_BLACK,
+ VDIN_MATRIX_XXX_YUV601_BLACK,/*1*/
VDIN_MATRIX_RGB_YUV601,
VDIN_MATRIX_GBR_YUV601,
VDIN_MATRIX_BRG_YUV601,
- VDIN_MATRIX_YUV601_RGB,
+ VDIN_MATRIX_YUV601_RGB,/*5*/
VDIN_MATRIX_YUV601_GBR,
VDIN_MATRIX_YUV601_BRG,
VDIN_MATRIX_RGB_YUV601F,
- VDIN_MATRIX_YUV601F_RGB,
- VDIN_MATRIX_RGBS_YUV601,
+ VDIN_MATRIX_YUV601F_RGB,/*9*/
+ VDIN_MATRIX_RGBS_YUV601,/*10*/
VDIN_MATRIX_YUV601_RGBS,
VDIN_MATRIX_RGBS_YUV601F,
VDIN_MATRIX_YUV601F_RGBS,
VDIN_MATRIX_YUV601F_YUV601,
- VDIN_MATRIX_YUV601_YUV601F,
+ VDIN_MATRIX_YUV601_YUV601F,/*15*/
VDIN_MATRIX_RGB_YUV709,
VDIN_MATRIX_YUV709_RGB,
VDIN_MATRIX_YUV709_GBR,
VDIN_MATRIX_YUV709_BRG,
- VDIN_MATRIX_RGB_YUV709F,
+ VDIN_MATRIX_RGB_YUV709F,/*20*/
VDIN_MATRIX_YUV709F_RGB,
VDIN_MATRIX_RGBS_YUV709,
VDIN_MATRIX_YUV709_RGBS,
VDIN_MATRIX_RGBS_YUV709F,
- VDIN_MATRIX_YUV709F_RGBS,
+ VDIN_MATRIX_YUV709F_RGBS,/*25*/
VDIN_MATRIX_YUV709F_YUV709,
VDIN_MATRIX_YUV709_YUV709F,
VDIN_MATRIX_YUV601_YUV709,
VDIN_MATRIX_YUV709_YUV601,
- VDIN_MATRIX_YUV601_YUV709F,
+ VDIN_MATRIX_YUV601_YUV709F,/*30*/
VDIN_MATRIX_YUV709F_YUV601,
VDIN_MATRIX_YUV601F_YUV709,
VDIN_MATRIX_YUV709_YUV601F,
VDIN_MATRIX_YUV601F_YUV709F,
- VDIN_MATRIX_YUV709F_YUV601F,
+ VDIN_MATRIX_YUV709F_YUV601F,/*35*/
VDIN_MATRIX_RGBS_RGB,
VDIN_MATRIX_RGB_RGBS,
};
diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c
index 916b9a0..1eeb843 100644
--- a/drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c
+++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_debug.c
@@ -436,6 +436,7 @@ static void vdin_dump_mem(char *path, struct vdin_dev_s *devp)
static void vdin_dump_one_afbce_mem(char *path, struct vdin_dev_s *devp,
unsigned int buf_num)
{
+ #define K_PATH_BUFF_LENGTH 150
struct file *filp = NULL;
loff_t pos = 0;
void *buf_head = NULL;
@@ -449,7 +450,7 @@ static void vdin_dump_one_afbce_mem(char *path, struct vdin_dev_s *devp,
unsigned int count = 0;
unsigned int j = 0;
void *vbuf = NULL;
- unsigned char buff[100];
+ unsigned char buff[K_PATH_BUFF_LENGTH];
mm_segment_t old_fs = get_fs();
if (buf_num >= devp->canvas_max_num) {
@@ -512,9 +513,14 @@ static void vdin_dump_one_afbce_mem(char *path, struct vdin_dev_s *devp,
}
set_fs(KERNEL_DS);
-
/*write header bin*/
- strcpy(buff, path);
+
+ if (strlen(path) < K_PATH_BUFF_LENGTH) {
+ strcpy(buff, path);
+ } else {
+ pr_info("err path len\n");
+ return;
+ }
strcat(buff, "_1header.bin");
filp = filp_open(buff, O_RDWR|O_CREAT, 0666);
if (IS_ERR(filp)) {
diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c
index a017b07..6bfab70 100644
--- a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c
+++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.c
@@ -2167,15 +2167,16 @@ static void vdin_vlock_dwork(struct work_struct *work)
struct vdin_dev_s *devp =
container_of(dwork, struct vdin_dev_s, vlock_dwork);
- if (!(devp->flags & VDIN_FLAG_DEC_OPENED)) {
- cancel_delayed_work(&devp->vlock_dwork);
+ if (!devp || !devp->frontend || !devp->curr_wr_vfe) {
+ pr_info("%s, dwork error !!!\n", __func__);
return;
}
- if (!devp || !devp->frontend || !devp->curr_wr_vfe) {
- pr_info("%s, dwork error !!!\n", __func__);
+ if (!(devp->flags & VDIN_FLAG_DEC_OPENED)) {
+ cancel_delayed_work(&devp->vlock_dwork);
return;
}
+
vdin_vlock_input_sel(devp->curr_field_type,
devp->curr_wr_vfe->vf.source_type);
@@ -2912,30 +2913,33 @@ static long vdin_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
}
idx = vdinsetcanvas[i].index;
+ if (idx < VDIN_CANVAS_MAX_CNT) {
+ vdin_set_canvas_addr[idx].dmabuff =
+ dma_buf_get(vdinsetcanvas[i].fd);
+
+ vdin_set_canvas_addr[idx].dmabufattach =
+ dma_buf_attach(
+ vdin_set_canvas_addr[idx].dmabuff,
+ devp->dev);
+ vdin_set_canvas_addr[idx].sgtable =
+ dma_buf_map_attachment(
+ vdin_set_canvas_addr[idx].dmabufattach,
+ DMA_BIDIRECTIONAL);
- vdin_set_canvas_addr[idx].dmabuff =
- dma_buf_get(vdinsetcanvas[i].fd);
-
- vdin_set_canvas_addr[idx].dmabufattach =
- dma_buf_attach(
- vdin_set_canvas_addr[idx].dmabuff,
- devp->dev);
- vdin_set_canvas_addr[idx].sgtable =
- dma_buf_map_attachment(
- vdin_set_canvas_addr[idx].dmabufattach,
- DMA_BIDIRECTIONAL);
-
- page = sg_page(vdin_set_canvas_addr[idx].sgtable->sgl);
- vdin_set_canvas_addr[idx].paddr =
- PFN_PHYS(page_to_pfn(page));
- vdin_set_canvas_addr[idx].size =
- vdin_set_canvas_addr[idx].dmabuff->size;
-
- pr_info("TVIN_IOC_S_CANVAS_ADDR[%d] addr=0x%lx, len=0x%x.\n",
- i,
- vdin_set_canvas_addr[idx].paddr,
- vdin_set_canvas_addr[idx].size);
-
+ page =
+ sg_page(vdin_set_canvas_addr[idx].sgtable->sgl);
+ vdin_set_canvas_addr[idx].paddr =
+ PFN_PHYS(page_to_pfn(page));
+ vdin_set_canvas_addr[idx].size =
+ vdin_set_canvas_addr[idx].dmabuff->size;
+
+ pr_info("TVIN_IOC_S_CANVAS_ADDR[%d] addr=0x%lx, len=0x%x.\n",
+ i,
+ vdin_set_canvas_addr[idx].paddr,
+ vdin_set_canvas_addr[idx].size);
+ } else {
+ pr_info("VDIN err canvas idx:%d\n", idx);
+ }
__close_fd(current->files, vdinsetcanvas[i].fd);
}
break;
@@ -2951,7 +2955,8 @@ static long vdin_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
return -EFAULT;
}
- if (devp->keystone_entry[recov_idx]) {
+ if ((recov_idx < VDIN_CANVAS_MAX_CNT) &&
+ (devp->keystone_entry[recov_idx])) {
receiver_vf_put(&devp->keystone_entry[recov_idx]->vf,
devp->vfp);
devp->keystone_entry[recov_idx] = NULL;
diff --git a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h
index 136fb46..4458e0d 100644
--- a/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h
+++ b/drivers/amlogic/media/vin/tvin/vdin/vdin_drv.h
@@ -48,7 +48,7 @@
/* Ref.2019/04/25: tl1 vdin0 afbce dynamically switch support,
* vpp also should support this function
*/
-#define VDIN_VER "Ref.2019/09/30:afbce,optimize mem alloc & enable 1080p"
+#define VDIN_VER "Ref.2019/10/11:Fix coverify error"
/*the counter of vdin*/
#define VDIN_MAX_DEVS 2