Message ID | 1dd09050-40ca-4c5b-b985-819731140388@xs4all.nl (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | media: vicodec: add V4L2_CID_MIN_BUFFERS_FOR_* controls | expand |
Hello, kernel test robot noticed "BUG:kernel_NULL_pointer_dereference,address" on: commit: 9e4beef457f5cf6e0c388248b2e12d9755edf03d ("[PATCH] media: vicodec: add V4L2_CID_MIN_BUFFERS_FOR_* controls") url: https://github.com/intel-lab-lkp/linux/commits/Hans-Verkuil/media-vicodec-add-V4L2_CID_MIN_BUFFERS_FOR_-controls/20241031-155021 base: https://git.linuxtv.org/media_stage.git master patch link: https://lore.kernel.org/all/1dd09050-40ca-4c5b-b985-819731140388@xs4all.nl/ patch subject: [PATCH] media: vicodec: add V4L2_CID_MIN_BUFFERS_FOR_* controls in testcase: boot config: i386-randconfig-013-20241103 compiler: gcc-12 test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G (please refer to attached dmesg/kmsg for entire log/backtrace) +---------------------------------------------+------------+------------+ | | d020ca11a8 | 9e4beef457 | +---------------------------------------------+------------+------------+ | boot_successes | 6 | 0 | | boot_failures | 0 | 6 | | BUG:kernel_NULL_pointer_dereference,address | 0 | 6 | | Oops | 0 | 6 | | EIP:__v4l2_ctrl_handler_setup | 0 | 6 | | Kernel_panic-not_syncing:Fatal_exception | 0 | 6 | +---------------------------------------------+------------+------------+ If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <oliver.sang@intel.com> | Closes: https://lore.kernel.org/oe-lkp/202411041552.ff2b79d7-lkp@intel.com [ 9.211498][ T113] BUG: kernel NULL pointer dereference, address: 00000000 [ 9.212220][ T113] #PF: supervisor read access in kernel mode [ 9.212739][ T113] #PF: error_code(0x0000) - not-present page [ 9.213245][ T113] *pde = 00000000 [ 9.213566][ T113] Oops: Oops: 0000 [#1] PREEMPT SMP [ 9.214004][ T113] CPU: 1 UID: 0 PID: 113 Comm: v4l_id Not tainted 6.12.0-rc1-00151-g9e4beef457f5 #1 [ 9.214806][ T113] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 9.215724][ T113] EIP: __v4l2_ctrl_handler_setup (drivers/media/v4l2-core/v4l2-ctrls-core.c:2469) [ 9.216251][ T113] Code: 83 c0 38 e8 69 34 26 00 85 c0 75 02 0f 0b 8b 43 50 8d 73 50 39 c6 74 08 80 60 1c fe 8b 00 eb f4 8b 5b 50 39 de 74 c1 8b 43 14 <8b> 38 f6 43 1c 01 74 04 8b 1b eb ed 83 7b 30 04 74 f6 31 d2 f6 43 All code ======== 0: 83 c0 38 add $0x38,%eax 3: e8 69 34 26 00 call 0x263471 8: 85 c0 test %eax,%eax a: 75 02 jne 0xe c: 0f 0b ud2 e: 8b 43 50 mov 0x50(%rbx),%eax 11: 8d 73 50 lea 0x50(%rbx),%esi 14: 39 c6 cmp %eax,%esi 16: 74 08 je 0x20 18: 80 60 1c fe andb $0xfe,0x1c(%rax) 1c: 8b 00 mov (%rax),%eax 1e: eb f4 jmp 0x14 20: 8b 5b 50 mov 0x50(%rbx),%ebx 23: 39 de cmp %ebx,%esi 25: 74 c1 je 0xffffffffffffffe8 27: 8b 43 14 mov 0x14(%rbx),%eax 2a:* 8b 38 mov (%rax),%edi <-- trapping instruction 2c: f6 43 1c 01 testb $0x1,0x1c(%rbx) 30: 74 04 je 0x36 32: 8b 1b mov (%rbx),%ebx 34: eb ed jmp 0x23 36: 83 7b 30 04 cmpl $0x4,0x30(%rbx) 3a: 74 f6 je 0x32 3c: 31 d2 xor %edx,%edx 3e: f6 .byte 0xf6 3f: 43 rex.XB Code starting with the faulting instruction =========================================== 0: 8b 38 mov (%rax),%edi 2: f6 43 1c 01 testb $0x1,0x1c(%rbx) 6: 74 04 je 0xc 8: 8b 1b mov (%rbx),%ebx a: eb ed jmp 0xfffffffffffffff9 c: 83 7b 30 04 cmpl $0x4,0x30(%rbx) 10: 74 f6 je 0x8 12: 31 d2 xor %edx,%edx 14: f6 .byte 0xf6 15: 43 rex.XB [ 9.217884][ T113] EAX: 00000000 EBX: c410a7c0 ECX: 00000000 EDX: 00000000 [ 9.218489][ T113] ESI: c0a6c104 EDI: c410a900 EBP: c425dd68 ESP: c425dd58 [ 9.219105][ T113] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 EFLAGS: 00010287 [ 9.219760][ T113] CR0: 80050033 CR2: 00000000 CR3: 048af000 CR4: 000406d0 [ 9.220371][ T113] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 [ 9.220987][ T113] DR6: fffe0ff0 DR7: 00000400 [ 9.221391][ T113] Call Trace: [ 9.221717][ T113] ? show_regs (arch/x86/kernel/dumpstack.c:478) [ 9.222109][ T113] ? __die_body (arch/x86/kernel/dumpstack.c:421) [ 9.222498][ T113] ? __die (arch/x86/kernel/dumpstack.c:435) [ 9.222868][ T113] ? page_fault_oops (arch/x86/mm/fault.c:715) [ 9.223285][ T113] ? kernelmode_fixup_or_oops+0x50/0x5e [ 9.223873][ T113] ? __bad_area_nosemaphore+0x37/0x1db [ 9.224429][ T113] ? up_read (kernel/locking/rwsem.c:1621) [ 9.224788][ T113] ? mmap_read_unlock (include/linux/mmap_lock.h:171) [ 9.225210][ T113] ? bad_area_nosemaphore (arch/x86/mm/fault.c:835) [ 9.225649][ T113] ? do_user_addr_fault (arch/x86/mm/fault.c:1280 (discriminator 1)) [ 9.226083][ T113] ? exc_page_fault (arch/x86/include/asm/irqflags.h:26 arch/x86/include/asm/irqflags.h:87 arch/x86/include/asm/irqflags.h:147 arch/x86/mm/fault.c:1489 arch/x86/mm/fault.c:1539) [ 9.226496][ T113] ? pvclock_clocksource_read_nowd (arch/x86/mm/fault.c:1494) [ 9.227059][ T113] ? handle_exception (arch/x86/entry/entry_32.S:1047) [ 9.227509][ T113] ? pvclock_clocksource_read_nowd (arch/x86/mm/fault.c:1494) [ 9.228049][ T113] ? __v4l2_ctrl_handler_setup (drivers/media/v4l2-core/v4l2-ctrls-core.c:2469) [ 9.228563][ T113] ? pvclock_clocksource_read_nowd (arch/x86/mm/fault.c:1494) [ 9.229122][ T113] ? __v4l2_ctrl_handler_setup (drivers/media/v4l2-core/v4l2-ctrls-core.c:2469) [ 9.229606][ T113] v4l2_ctrl_handler_setup (drivers/media/v4l2-core/v4l2-ctrls-core.c:2502) [ 9.230067][ T113] vicodec_open (drivers/media/test-drivers/vicodec/vicodec-core.c:1874) [ 9.230469][ T113] ? __mutex_unlock_slowpath (arch/x86/include/asm/atomic.h:23 include/linux/atomic/atomic-arch-fallback.h:457 include/linux/atomic/atomic-long.h:40 include/linux/atomic/atomic-instrumented.h:3189 kernel/locking/mutex.c:921) [ 9.230942][ T113] v4l2_open (drivers/media/v4l2-core/v4l2-dev.c:429) [ 9.231310][ T113] chrdev_open (fs/char_dev.c:414) [ 9.231704][ T113] ? cdev_put (fs/char_dev.c:374) [ 9.232074][ T113] do_dentry_open (fs/open.c:958) [ 9.232468][ T113] ? cdev_put (fs/char_dev.c:374) [ 9.232809][ T113] vfs_open (fs/open.c:1088) [ 9.233152][ T113] do_open (fs/namei.c:3774) [ 9.233507][ T113] ? open_last_lookups (fs/namei.c:3721) [ 9.233893][ T113] path_openat (fs/namei.c:3933) [ 9.234240][ T113] do_filp_open (fs/namei.c:3961) [ 9.234580][ T113] do_sys_openat2 (fs/open.c:1415) [ 9.234933][ T113] do_sys_open (fs/open.c:1431) [ 9.235262][ T113] __ia32_sys_openat (fs/open.c:1441) [ 9.235647][ T113] ia32_sys_call (kbuild/obj/consumer/i386-randconfig-013-20241103/./arch/x86/include/generated/asm/syscalls_32.h:296) [ 9.236049][ T113] do_int80_syscall_32 (arch/x86/entry/common.c:165 arch/x86/entry/common.c:339) [ 9.236452][ T113] ? irqentry_exit (kernel/entry/common.c:334) [ 9.236817][ T113] ? exc_page_fault (arch/x86/mm/fault.c:1543) [ 9.237201][ T113] entry_INT80_32 (arch/x86/entry/entry_32.S:941) [ 9.237584][ T113] EIP: 0xb7edd2a9 [ 9.237888][ T113] Code: 89 d0 31 f6 25 00 00 41 00 3d 00 00 41 00 74 29 65 a1 0c 00 00 00 85 c0 75 27 b8 27 01 00 00 bb 9c ff ff ff 8b 4c 24 20 cd 80 <3d> 00 f0 ff ff 77 50 83 c4 10 5b 5e 5f c3 90 8b 74 24 28 eb d1 66 All code ======== 0: 89 d0 mov %edx,%eax 2: 31 f6 xor %esi,%esi 4: 25 00 00 41 00 and $0x410000,%eax 9: 3d 00 00 41 00 cmp $0x410000,%eax e: 74 29 je 0x39 10: 65 a1 0c 00 00 00 85 movabs %gs:0x2775c0850000000c,%eax 17: c0 75 27 1a: b8 27 01 00 00 mov $0x127,%eax 1f: bb 9c ff ff ff mov $0xffffff9c,%ebx 24: 8b 4c 24 20 mov 0x20(%rsp),%ecx 28: cd 80 int $0x80 2a:* 3d 00 f0 ff ff cmp $0xfffff000,%eax <-- trapping instruction 2f: 77 50 ja 0x81 31: 83 c4 10 add $0x10,%esp 34: 5b pop %rbx 35: 5e pop %rsi 36: 5f pop %rdi 37: c3 ret 38: 90 nop 39: 8b 74 24 28 mov 0x28(%rsp),%esi 3d: eb d1 jmp 0x10 3f: 66 data16 Code starting with the faulting instruction =========================================== 0: 3d 00 f0 ff ff cmp $0xfffff000,%eax 5: 77 50 ja 0x57 7: 83 c4 10 add $0x10,%esp a: 5b pop %rbx b: 5e pop %rsi c: 5f pop %rdi d: c3 ret e: 90 nop f: 8b 74 24 28 mov 0x28(%rsp),%esi 13: eb d1 jmp 0xffffffffffffffe6 15: 66 data16 The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20241104/202411041552.ff2b79d7-lkp@intel.com
diff --git a/drivers/media/test-drivers/vicodec/vicodec-core.c b/drivers/media/test-drivers/vicodec/vicodec-core.c index 00c84a06f343..50c46b00d2d8 100644 --- a/drivers/media/test-drivers/vicodec/vicodec-core.c +++ b/drivers/media/test-drivers/vicodec/vicodec-core.c @@ -1852,6 +1852,11 @@ static int vicodec_open(struct file *file) 1, 31, 1, 20); v4l2_ctrl_new_std(hdl, &vicodec_ctrl_ops, V4L2_CID_FWHT_P_FRAME_QP, 1, 31, 1, 20); + if (!ctx->is_stateless) + v4l2_ctrl_new_std(hdl, &vicodec_ctrl_ops, ctx->is_enc ? + V4L2_CID_MIN_BUFFERS_FOR_OUTPUT : + V4L2_CID_MIN_BUFFERS_FOR_CAPTURE, + 1, 32, 1, 2); if (ctx->is_enc) v4l2_ctrl_new_std(hdl, &vicodec_ctrl_ops, V4L2_CID_MIN_BUFFERS_FOR_OUTPUT, 1, 1, 1, 1);
Stateful codecs must support the V4L2_CID_MIN_BUFFERS_FOR_OUTPUT and V4L2_CID_MIN_BUFFERS_FOR_CAPTURE controls. The vicodec driver was missing support for these controls. Add them. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> --- drivers/media/test-drivers/vicodec/vicodec-core.c | 5 +++++ 1 file changed, 5 insertions(+)