mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
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:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user