From: Francis Laniel <laniel_francis@privacyrequired.com>
To: linux-kernel@vger.kernel.org
Cc: syzbot <syzbot+42d8c7c3d3e594b34346@syzkaller.appspotmail.com>,
ezequiel@collabora.com, hverkuil-cisco@xs4all.nl,
jacopo@jmondi.org, linux-media@vger.kernel.org,
mchehab@kernel.org, syzkaller-bugs@googlegroups.com
Subject: Re: UBSAN: shift-out-of-bounds in std_validate
Date: Sun, 24 Jan 2021 23:09:21 +0100 [thread overview]
Message-ID: <2986427.cCGCOdEktJ@machine> (raw)
In-Reply-To: <000000000000f1136d05b9452773@google.com>
Le mardi 19 janvier 2021, 19:39:17 CET syzbot a écrit :
> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit: 1e2a199f Merge tag 'spi-fix-v5.11-rc4' of git://git.kernel..
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=146e0c94d00000
> kernel config: https://syzkaller.appspot.com/x/.config?x=41e68e7e8a23ad09
> dashboard link: https://syzkaller.appspot.com/bug?extid=42d8c7c3d3e594b34346
> compiler: gcc (GCC) 10.1.0-syz 20200507
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=12166d58d00000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=14dfc294d00000
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+42d8c7c3d3e594b34346@syzkaller.appspotmail.com
>
> ============================================================================
> ==== UBSAN: shift-out-of-bounds in
> drivers/media/v4l2-core/v4l2-ctrls.c:2168:36 shift exponent 100 is too
> large for 64-bit type 'long long unsigned int' CPU: 0 PID: 8469 Comm:
> syz-executor534 Not tainted 5.11.0-rc4-syzkaller #0 Hardware name: Google
> Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call
> Trace:
> __dump_stack lib/dump_stack.c:79 [inline]
> dump_stack+0x107/0x163 lib/dump_stack.c:120
> ubsan_epilogue+0xb/0x5a lib/ubsan.c:148
> __ubsan_handle_shift_out_of_bounds.cold+0xb1/0x181 lib/ubsan.c:395
> std_validate.cold+0x19/0x1e drivers/media/v4l2-core/v4l2-ctrls.c:2168
> validate_new drivers/media/v4l2-core/v4l2-ctrls.c:2477 [inline]
> set_ctrl+0x207/0x4a0 drivers/media/v4l2-core/v4l2-ctrls.c:4425
> set_ctrl_lock drivers/media/v4l2-core/v4l2-ctrls.c:4448 [inline]
> v4l2_s_ctrl+0x2fd/0x4f0 drivers/media/v4l2-core/v4l2-ctrls.c:4469
> v4l_s_ctrl+0x324/0x390 drivers/media/v4l2-core/v4l2-ioctl.c:2253
> __video_do_ioctl+0xb94/0xe20 drivers/media/v4l2-core/v4l2-ioctl.c:2993
> video_usercopy+0x23d/0x12d0 drivers/media/v4l2-core/v4l2-ioctl.c:3345
> v4l2_ioctl+0x1b3/0x250 drivers/media/v4l2-core/v4l2-dev.c:360
> vfs_ioctl fs/ioctl.c:48 [inline]
> __do_sys_ioctl fs/ioctl.c:753 [inline]
> __se_sys_ioctl fs/ioctl.c:739 [inline]
> __x64_sys_ioctl+0x193/0x200 fs/ioctl.c:739
> do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
> entry_SYSCALL_64_after_hwframe+0x44/0xa9
> RIP: 0033:0x443ee9
> Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7
> 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff
> ff 0f 83 fb d7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 RSP:
> 002b:00007ffe02e7df08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX:
> ffffffffffffffda RBX: 00000000004002e0 RCX: 0000000000443ee9
> RDX: 0000000020000140 RSI: 00000000c008561c RDI: 0000000000000003
> RBP: 00000000006ce018 R08: 0000000000000000 R09: 00000000004002e0
> R10: 000000000000000f R11: 0000000000000246 R12: 0000000000401b70
> R13: 0000000000401c00 R14: 0000000000000000 R15: 0000000000000000
> ============================================================================
> ====
>
>
> ---
> This report is generated by a bot. It may contain errors.
> See https://goo.gl/tpsmEJ for more information about syzbot.
> syzbot engineers can be reached at syzkaller@googlegroups.com.
>
> syzbot will keep track of this issue. See:
> https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
> syzbot can test patches for this issue, for details see:
> https://goo.gl/tpsmEJ#testing-patches
Hi everyone.
First, I hope you are fine and the same for your relative.
I took a look at this bug, unfortunately I do not come with a solution as I
lack some background on V4L2.
First, I successfully reproduced the bug with the given test and configuration
inside a virtual machine.
From my understanding, the test do an ioctl with the flag VIDIOC_S_CTRL and the
value 100 as argument.
Inside the std_validate() function, ctrl->maximum is 110 as it corresponds to
this line inside the vivid_create_controls() function:
vivid_ctrl_dv_timings.max = dev->query_dv_timings_size - 1;
dev->query_dv_timings_size is set inside vivid_init_dv_timings() based on the
v4l2_dv_timings_presets[] which contains 110 values.
As a solution, I suggest to change the type of menu_skip_mask inside the
struct v4l2_ctrl and replacing it with a bitmap.
Indeed, the above value has 110 "menus", so the 64 bits inside menu_skip_mask
are too few.
This change needs a bit of work as all the usage of menu_skip_mask will need
to be adapted to the bitmap API.
Unfortunately, I am not sure this solution is the good one so this I why I did
not implement it.
If someone also looked at this bug and has some feedback I will be happy to
hear from it.
Best regards.
prev parent reply other threads:[~2021-01-24 22:18 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-19 18:39 UBSAN: shift-out-of-bounds in std_validate syzbot
2021-01-24 22:09 ` Francis Laniel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2986427.cCGCOdEktJ@machine \
--to=laniel_francis@privacyrequired.com \
--cc=ezequiel@collabora.com \
--cc=hverkuil-cisco@xs4all.nl \
--cc=jacopo@jmondi.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=syzbot+42d8c7c3d3e594b34346@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.