video: rockchip: mpp: fix error when alloc_task failed

When alloc task failed, it must return NULL instead of the PTR_ERR.

Change-Id: I309e934badd0c88a66beccbb8f03096f1eb91745
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
This commit is contained in:
Ding Wei
2019-11-19 21:36:49 +08:00
parent 35728f6644
commit 36c02844b6
5 changed files with 20 additions and 33 deletions

View File

@@ -600,11 +600,11 @@ done:
static void *rkvdec_alloc_task(struct mpp_session *session,
void __user *src, u32 size)
{
u32 fmt;
int ret;
u32 reg_len;
u32 fmt = 0;
int pps_fd;
u32 pps_offset;
int ret = -EFAULT;
struct rkvdec_task *task = NULL;
u32 dwsize = size / sizeof(u32);
struct mpp_dev *mpp = session->mpp;
@@ -621,7 +621,6 @@ static void *rkvdec_alloc_task(struct mpp_session *session,
reg_len = min(task->hw_info->reg_num, dwsize);
if (copy_from_user(task->reg, src, reg_len * 4)) {
mpp_err("error: copy_from_user failed in reg_init\n");
ret = -EFAULT;
goto fail;
}
@@ -648,10 +647,8 @@ static void *rkvdec_alloc_task(struct mpp_session *session,
offset = offset >> 10 << 4;
mem_region = mpp_task_attach_fd(&task->mpp_task, fd);
if (IS_ERR(mem_region)) {
ret = PTR_ERR(mem_region);
if (IS_ERR(mem_region))
goto fail;
}
iova = mem_region->iova;
task->reg[RKVDEC_REG_VP9_REFCOLMV_BASE_INDEX] = iova + offset;
@@ -731,7 +728,7 @@ static void *rkvdec_alloc_task(struct mpp_session *session,
fail:
mpp_task_finalize(session, &task->mpp_task);
kfree(task);
return ERR_PTR(ret);
return NULL;
}
static int rkvdec_prepare(struct mpp_dev *mpp,

View File

@@ -216,10 +216,10 @@ static struct mpp_trans_info vdpu_v1_trans[] = {
static void *vdpu_alloc_task(struct mpp_session *session,
void __user *src, u32 size)
{
u32 fmt;
int err;
u32 reg_len;
u32 extinf_len;
u32 fmt = 0;
int err = -EFAULT;
struct vdpu_task *task = NULL;
u32 dwsize = size / sizeof(u32);
struct mpp_dev *mpp = session->mpp;
@@ -243,7 +243,6 @@ static void *vdpu_alloc_task(struct mpp_session *session,
if (copy_from_user(task->reg, src, reg_len * 4)) {
mpp_err("error: copy_from_user failed in reg_init\n");
err = -EFAULT;
goto fail;
}
@@ -264,7 +263,6 @@ static void *vdpu_alloc_task(struct mpp_session *session,
if (err) {
mpp_err("copy_from_user failed when extra info\n");
err = -EFAULT;
goto fail;
}
}
@@ -301,10 +299,8 @@ static void *vdpu_alloc_task(struct mpp_session *session,
offset = offset >> 10 << 4;
mem_region = mpp_task_attach_fd(&task->mpp_task, fd);
if (IS_ERR(mem_region)) {
err = PTR_ERR(mem_region);
if (IS_ERR(mem_region))
goto fail;
}
iova = mem_region->iova;
mpp_debug(DEBUG_IOMMU, "DMV[%3d]: %3d => %pad + offset %10d\n",
@@ -325,7 +321,7 @@ static void *vdpu_alloc_task(struct mpp_session *session,
fail:
mpp_task_finalize(session, &task->mpp_task);
kfree(task);
return ERR_PTR(err);
return NULL;
}
static int vdpu_prepare(struct mpp_dev *mpp,

View File

@@ -199,10 +199,10 @@ static struct mpp_trans_info vdpu_v2_trans[] = {
static void *vdpu_alloc_task(struct mpp_session *session,
void __user *src, u32 size)
{
u32 fmt;
int err;
u32 reg_len;
u32 extinf_len;
u32 fmt = 0;
int err = -EFAULT;
struct vdpu_task *task = NULL;
u32 dwsize = size / sizeof(u32);
struct mpp_dev *mpp = session->mpp;
@@ -221,7 +221,6 @@ static void *vdpu_alloc_task(struct mpp_session *session,
if (copy_from_user(task->reg, src, reg_len * 4)) {
mpp_err("error: copy_from_user failed in reg_init\n");
err = -EFAULT;
goto fail;
}
@@ -241,7 +240,6 @@ static void *vdpu_alloc_task(struct mpp_session *session,
if (err) {
mpp_err("copy_from_user failed when extra info\n");
err = -EFAULT;
goto fail;
}
}
@@ -265,10 +263,8 @@ static void *vdpu_alloc_task(struct mpp_session *session,
offset = offset >> 10 << 4;
mem_region = mpp_task_attach_fd(&task->mpp_task, fd);
if (IS_ERR(mem_region)) {
err = PTR_ERR(mem_region);
if (IS_ERR(mem_region))
goto fail;
}
iova = mem_region->iova;
mpp_debug(DEBUG_IOMMU, "DMV[%3d]: %3d => %pad + offset %10d\n",
@@ -289,7 +285,7 @@ static void *vdpu_alloc_task(struct mpp_session *session,
fail:
mpp_task_finalize(session, &task->mpp_task);
kfree(task);
return ERR_PTR(err);
return NULL;
}
static int vdpu_prepare(struct mpp_dev *mpp,

View File

@@ -133,10 +133,11 @@ static struct mpp_trans_info trans_rk_vepu1[] = {
static void *vepu_alloc_task(struct mpp_session *session,
void __user *src, u32 size)
{
u32 fmt;
int err;
u32 reg_len;
u32 extinf_len;
u32 fmt = 0;
int err = -EFAULT;
struct vepu_task *task = NULL;
u32 dwsize = size / sizeof(u32);
struct mpp_dev *mpp = session->mpp;
@@ -155,7 +156,6 @@ static void *vepu_alloc_task(struct mpp_session *session,
if (copy_from_user(task->reg, src, reg_len * 4)) {
mpp_err("error: copy_from_user failed in reg_init\n");
err = -EFAULT;
goto fail;
}
@@ -175,7 +175,6 @@ static void *vepu_alloc_task(struct mpp_session *session,
if (err) {
mpp_err("copy_from_user failed when extra info\n");
err = -EFAULT;
goto fail;
}
}
@@ -204,7 +203,7 @@ static void *vepu_alloc_task(struct mpp_session *session,
fail:
mpp_task_finalize(session, &task->mpp_task);
kfree(task);
return ERR_PTR(err);
return NULL;
}
static int vepu_prepare(struct mpp_dev *mpp,

View File

@@ -141,10 +141,11 @@ static struct mpp_trans_info trans_rk_vepu2[] = {
static void *vepu_alloc_task(struct mpp_session *session,
void __user *src, u32 size)
{
u32 fmt;
int err;
u32 reg_len;
u32 extinf_len;
u32 fmt = 0;
int err = -EFAULT;
struct vepu_task *task = NULL;
u32 dwsize = size / sizeof(u32);
struct mpp_dev *mpp = session->mpp;
@@ -162,7 +163,6 @@ static void *vepu_alloc_task(struct mpp_session *session,
if (copy_from_user(task->reg, src, reg_len * 4)) {
mpp_err("error: copy_from_user failed in reg_init\n");
err = -EFAULT;
goto fail;
}
@@ -183,7 +183,6 @@ static void *vepu_alloc_task(struct mpp_session *session,
if (err) {
mpp_err("copy_from_user failed when extra info\n");
err = -EFAULT;
goto fail;
}
}
@@ -211,7 +210,7 @@ static void *vepu_alloc_task(struct mpp_session *session,
fail:
mpp_task_finalize(session, &task->mpp_task);
kfree(task);
return ERR_PTR(err);
return NULL;
}
static int vepu_prepare(struct mpp_dev *mpp,