aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.15/950-0647-bcm2835-v4l2-isp-Add-missing-lock-initialization.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0647-bcm2835-v4l2-isp-Add-missing-lock-initialization.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.15/950-0647-bcm2835-v4l2-isp-Add-missing-lock-initialization.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0647-bcm2835-v4l2-isp-Add-missing-lock-initialization.patch b/target/linux/bcm27xx/patches-5.15/950-0647-bcm2835-v4l2-isp-Add-missing-lock-initialization.patch
new file mode 100644
index 0000000000..445efc793e
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.15/950-0647-bcm2835-v4l2-isp-Add-missing-lock-initialization.patch
@@ -0,0 +1,51 @@
+From b1656894eef29ecd73ee239571c7ff3449bdedf2 Mon Sep 17 00:00:00 2001
+From: Padmanabha Srinivasaiah <treasure4paddy@gmail.com>
+Date: Thu, 30 Dec 2021 21:45:10 +0100
+Subject: [PATCH] bcm2835-v4l2-isp: Add missing lock initialization
+
+ISP device allocation is dynamic hence the locks too.
+struct mutex queue_lock is not initialized which result in bug.
+
+Fixing same by initializing it.
+
+[ 29.847138] INFO: trying to register non-static key.
+[ 29.847156] The code is fine but needs lockdep annotation, or maybe
+[ 29.847159] you didn't initialize this object before use?
+[ 29.847161] turning off the locking correctness validator.
+[ 29.847167] CPU: 1 PID: 343 Comm: v4l_id Tainted: G C 5.15.11-rt24-v8+ #8
+[ 29.847187] Hardware name: Raspberry Pi 4 Model B Rev 1.4 (DT)
+[ 29.847194] Call trace:
+[ 29.847197] dump_backtrace+0x0/0x1b8
+[ 29.847227] show_stack+0x20/0x30
+[ 29.847240] dump_stack_lvl+0x8c/0xb8
+[ 29.847254] dump_stack+0x18/0x34
+[ 29.847263] register_lock_class+0x494/0x4a0
+[ 29.847278] __lock_acquire+0x80/0x1680
+[ 29.847289] lock_acquire+0x214/0x3a0
+[ 29.847300] mutex_lock_nested+0x70/0xc8
+[ 29.847312] _vb2_fop_release+0x3c/0xa8 [videobuf2_v4l2]
+[ 29.847346] vb2_fop_release+0x34/0x60 [videobuf2_v4l2]
+[ 29.847367] v4l2_release+0xc8/0x108 [videodev]
+[ 29.847453] __fput+0x8c/0x258
+[ 29.847476] ____fput+0x18/0x28
+[ 29.847487] task_work_run+0x98/0x180
+[ 29.847502] do_notify_resume+0x228/0x3f8
+[ 29.847515] el0_svc+0xec/0xf0
+[ 29.847523] el0t_64_sync_handler+0x90/0xb8
+[ 29.847531] el0t_64_sync+0x180/0x184
+
+Signed-off-by: Padmanabha Srinivasaiah <treasure4paddy@gmail.com>
+---
+ drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
++++ b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
+@@ -1294,6 +1294,7 @@ static int register_node(struct bcm2835_
+ int ret;
+
+ mutex_init(&node->lock);
++ mutex_init(&node->queue_lock);
+
+ node->dev = dev;
+ vfd = &node->vfd;