driver: rknpu: Avoid taking an uninitialized lock

------------[ cut here ]------------
DEBUG_LOCKS_WARN_ON(lock->magic != lock)
WARNING: CPU: 5 PID: 1 at kernel/locking/mutex.c:604 __mutex_lock_common+0x5fc/0x142c
Modules linked in:
CPU: 5 PID: 1 Comm: swapper/0 Not tainted 6.1.43 #211
Hardware name: Rockchip RK3588 EVB1 LP4 V10 Board (DT)
pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : __mutex_lock_common+0x5fc/0x142c
lr : __mutex_lock_common+0x5fc/0x142c
sp : ffffffc00b06b6a0
x29: ffffffc00b06b710 x28: 0000000000000000 x27: 0000000000000000
x26: 0000000000000000 x25: ffffffc00aee2000 x24: ffffffc0097b2d28
x23: ffffff8108be1780 x22: 0000000000000008 x21: 0000000000000000
x20: 0000000000000000 x19: ffffff81011ca458 x18: ffffffc00b0450b8
x17: 0000000000000013 x16: ffffffffffffffff x15: 0000000000000004
x14: ffffffc00a08bf18 x13: 0000000000003fff x12: 0000000000000003
x11: 00000000ffffbfff x10: c0000000ffffbfff x9 : fcad3029a1246100
x8 : fcad3029a1246100 x7 : 4e5241575f534b43 x6 : ffffffc009579a44
x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000000
x2 : 0000000000000000 x1 : ffffffc00b06b430 x0 : 0000000000000028
Call trace:
 __mutex_lock_common+0x5fc/0x142c
 mutex_lock_nested+0x38/0x44
 rockchip_opp_dvfs_lock+0x1c/0x28
 rknpu_devfreq_lock+0x14/0x20
 rknpu_power_on+0x70/0x2a4
 rknpu_probe+0x60c/0x8cc
 platform_probe+0xa8/0xd0
 really_probe+0x174/0x350
 __driver_probe_device+0xa0/0x128
 driver_probe_device+0x44/0x218
 __driver_attach+0xfc/0x1c8
 bus_for_each_dev+0x80/0xcc
 driver_attach+0x24/0x30
 bus_add_driver+0x10c/0x1f8
 driver_register+0x78/0x114
 __platform_driver_register+0x24/0x30
 rknpu_init+0x1c/0x28
 do_one_initcall+0xf8/0x348
 do_initcall_level+0xd0/0x17c
 do_initcalls+0x54/0x94
 do_basic_setup+0x1c/0x28
 kernel_init_freeable+0x16c/0x1f0
 kernel_init+0x20/0x1a0
 ret_from_fork+0x10/0x20

Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Change-Id: Ic0247477705a9111f5617eb9fbbc438843feb79c
This commit is contained in:
Finley Xiao
2023-12-26 14:48:51 +08:00
parent 097d888d0e
commit 8e49eef1b5
+5 -2
View File
@@ -235,13 +235,15 @@ static const struct of_device_id rockchip_npu_of_match[] = {
#if KERNEL_VERSION(6, 1, 0) <= LINUX_VERSION_CODE
void rknpu_devfreq_lock(struct rknpu_device *rknpu_dev)
{
rockchip_opp_dvfs_lock(&rknpu_dev->opp_info);
if (rknpu_dev->devfreq)
rockchip_opp_dvfs_lock(&rknpu_dev->opp_info);
}
EXPORT_SYMBOL(rknpu_devfreq_lock);
void rknpu_devfreq_unlock(struct rknpu_device *rknpu_dev)
{
rockchip_opp_dvfs_unlock(&rknpu_dev->opp_info);
if (rknpu_dev->devfreq)
rockchip_opp_dvfs_unlock(&rknpu_dev->opp_info);
}
EXPORT_SYMBOL(rknpu_devfreq_unlock);
@@ -332,6 +334,7 @@ int rknpu_devfreq_init(struct rknpu_device *rknpu_dev)
(void *)rknpu_dev);
if (IS_ERR(rknpu_dev->devfreq)) {
LOG_DEV_ERROR(dev, "failed to add devfreq\n");
rknpu_dev->devfreq = NULL;
ret = PTR_ERR(rknpu_dev->devfreq);
goto err_remove_governor;
}