video: rockchip: mpp: Iusse for insmod/rmmod rk_vcodec.ko

tips:
   1.In mpp_dev_remove, it wrong to device put mpp->pdev, and
   the true is srv->pdev.
   2. It is no used following, thus, put it directly.

backtrace:
[  119.059922 ][ T2179 ]  refcount_warn_saturate+0xe0/0x150
[  119.059930 ][ T2179 ]  klist_next+0x108/0x10c
[  119.059938 ][ T2179 ]  bus_for_each_dev+0x6c/0xd0
[  119.059945 ][ T2179 ]  driver_attach+0x28/0x38
[  119.059951 ][ T2179 ]  bus_add_driver+0x108/0x1e8
[  119.059956 ][ T2179 ]  driver_register+0x7c/0x118
[  119.059963 ][ T2179 ]  __platform_driver_register+0x48/0x58
[  119.060018 ][ T2179 ]  mpp_add_driver+0xf8/0x140 [rk_vcodec]
[  119.060068 ][ T2179 ]  mpp_service_probe+0x43c/0x550 [rk_vcodec]
[  119.060075 ][ T2179 ]  platform_drv_probe+0x9c/0xc4
[  119.060081 ][ T2179 ]  really_probe+0x204/0x510
[  119.060087 ][ T2179 ]  driver_probe_device+0x80/0xc0
[  119.060093 ][ T2179 ]  device_driver_attach+0x70/0xb4
[  119.060099 ][ T2179 ]  __driver_attach+0xc8/0x150
[  119.060104 ][ T2179 ]  bus_for_each_dev+0x80/0xd0
[  119.060109 ][ T2179 ]  driver_attach+0x28/0x38
[  119.060114 ][ T2179 ]  bus_add_driver+0x108/0x1e8
[  119.060120 ][ T2179 ]  driver_register+0x7c/0x118
[  119.060127 ][ T2179 ]  __platform_driver_register+0x48/0x58
[  119.060175 ][ T2179 ]  init_module+0x24/0xfe8 [rk_vcodec]
[  119.060184 ][ T2179 ]  do_one_initcall+0x98/0x2dc
[  119.060192 ][ T2179 ]  do_init_module+0x60/0x21c
[  119.060197 ][ T2179 ]  load_module+0x2cf0/0x34a8
[  119.060203 ][ T2179 ]  __arm64_sys_finit_module+0xbc/0xfc
[  119.060211 ][ T2179 ]  el0_svc_common+0xc0/0x23c
[  119.060217 ][ T2179 ]  do_el0_svc+0x28/0x88
[  119.060225 ][ T2179 ]  el0_svc+0x14/0x24
[  119.060232 ][ T2179 ]  el0_sync_handler+0x88/0xec
[  119.060238 ][ T2179 ]  el0_sync+0x1a8/0x1c0

Change-Id: Ib6442228d27dde2ff07336edef02fe391ebeb135
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
This commit is contained in:
Ding Wei
2022-02-28 11:37:27 +08:00
committed by Tao Huang
parent 223064da40
commit dd8ed58c07

View File

@@ -878,35 +878,32 @@ static int mpp_attach_service(struct mpp_dev *mpp, struct device *dev)
of_node_put(np);
if (!pdev) {
dev_err(dev, "failed to get mpp service from node\n");
ret = -ENODEV;
goto err_put_pdev;
return -ENODEV;
}
mpp->srv = platform_get_drvdata(pdev);
platform_device_put(pdev);
if (!mpp->srv) {
dev_err(&pdev->dev, "failed attach service\n");
ret = -EINVAL;
goto err_put_pdev;
dev_err(dev, "failed attach service\n");
return -EINVAL;
}
ret = of_property_read_u32(dev->of_node,
"rockchip,taskqueue-node", &taskqueue_node);
if (ret) {
dev_err(dev, "failed to get taskqueue-node\n");
goto err_put_pdev;
return ret;
} else if (taskqueue_node >= mpp->srv->taskqueue_cnt) {
dev_err(dev, "taskqueue-node %d must less than %d\n",
taskqueue_node, mpp->srv->taskqueue_cnt);
ret = -ENODEV;
goto err_put_pdev;
return -ENODEV;
}
/* set taskqueue according dtsi */
queue = mpp->srv->task_queues[taskqueue_node];
if (!queue) {
dev_err(dev, "taskqueue attach to invalid node %d\n",
taskqueue_node);
ret = -ENODEV;
goto err_put_pdev;
return -ENODEV;
}
mpp_attach_workqueue(mpp, queue);
@@ -917,19 +914,13 @@ static int mpp_attach_service(struct mpp_dev *mpp, struct device *dev)
if (reset_group_node >= mpp->srv->reset_group_cnt) {
dev_err(dev, "resetgroup-node %d must less than %d\n",
reset_group_node, mpp->srv->reset_group_cnt);
ret = -ENODEV;
goto err_put_pdev;
return -ENODEV;
} else {
mpp->reset_group = mpp->srv->reset_groups[reset_group_node];
}
}
return 0;
err_put_pdev:
platform_device_put(pdev);
return ret;
}
struct mpp_taskqueue *mpp_taskqueue_init(struct device *dev)
@@ -2115,7 +2106,6 @@ int mpp_dev_remove(struct mpp_dev *mpp)
mpp->hw_ops->exit(mpp);
mpp_iommu_remove(mpp->iommu_info);
platform_device_put(to_platform_device(mpp->dev));
mpp_detach_workqueue(mpp);
device_init_wakeup(mpp->dev, false);
pm_runtime_disable(mpp->dev);