From: Vasileios Almpanis <vasilisalmpanis@gmail.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>,
Igor M Liplianin <liplianin@me.by>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org,
syzbot+f408eac9faa61d5a1927@syzkaller.appspotmail.com
Subject: Re: [PATCH] media: dw2102: fix OOB read on firmware size not a multiple of 64
Date: Fri, 7 Aug 2026 10:46:40 +0200 [thread overview]
Message-ID: <576fd334-3482-4ada-9b35-2e67a024e306@gmail.com> (raw)
In-Reply-To: <20260806-dvb-v1-1-a750f8e5b2ea@gmail.com>
On 8/6/26 7:47 PM, Vasileios Almpanis wrote:
> dw2102_load_firmware() copies the firmware into a buffer of exactly
> fw->size bytes, then walks it in 0x40-byte steps while always passing
> 0x40 as the transfer length. When fw->size is not a multiple of 64 the
> last chunk reads past the end of the allocation producing the following
> splat:
>
> dvb-usb: downloading firmware from file 'dvb-usb-dw3101.fw'
> dw2102: start downloading DW210X firmware
> ==================================================================
> BUG: KASAN: slab-out-of-bounds in dw210x_op_rw+0xb6/0x180 drivers/media/usb/dvb-usb/dw2102.c:102
> Read of size 64 at addr ffff88802bcf2ba0 by task kworker/1:2/803
> Call Trace:
> <TASK>
> kasan_report+0x117/0x150 mm/kasan/report.c:595
> check_region_inline mm/kasan/generic.c:-1 [inline]
> kasan_check_range+0x264/0x2c0 mm/kasan/generic.c:200
> __asan_memcpy+0x29/0x70 mm/kasan/shadow.c:105
> dw210x_op_rw+0xb6/0x180 drivers/media/usb/dvb-usb/dw2102.c:102
> dw2102_load_firmware+0x2b4/0x970 drivers/media/usb/dvb-usb/dw2102.c:1906
>
> Fix this by clamping the last chunk to the remaining bytes;
I sent this patch to syzbot for testing and it reported success.
https://syzkaller.appspot.com/bug?extid=f408eac9faa61d5a1927
Tested-by: syzbot+f408eac9faa61d5a1927@syzkaller.appspotmail.com
> Cc: stable@vger.kernel.org
> Reported-by: syzbot+f408eac9faa61d5a1927@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=f408eac9faa61d5a1927
> Fixes: 7fd4828f6cc5 ("V4L/DVB (8421): Adds support for Dvbworld DVB-S 2102 USB card")
> Signed-off-by: Vasileios Almpanis <vasilisalmpanis@gmail.com>
> ---
> drivers/media/usb/dvb-usb/dw2102.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
> index 4fecf2f965e9..4e26e1776977 100644
> --- a/drivers/media/usb/dvb-usb/dw2102.c
> +++ b/drivers/media/usb/dvb-usb/dw2102.c
> @@ -1902,9 +1902,11 @@ static int dw2102_load_firmware(struct usb_device *dev,
> if (p) {
> memcpy(p, fw->data, fw->size);
> for (i = 0; i < fw->size; i += 0x40) {
> + int len = min_t(size_t, fw->size - i, 0x40);
> +
> b = (u8 *)p + i;
> - if (dw210x_op_rw(dev, 0xa0, i, 0, b, 0x40,
> - DW210X_WRITE_MSG) != 0x40) {
> + if (dw210x_op_rw(dev, 0xa0, i, 0, b, len,
> + DW210X_WRITE_MSG) != len) {
> err("error while transferring firmware");
> ret = -EINVAL;
> break;
>
> ---
> base-commit: fcaeecb8b0cd44f77d03b28de0671258d4db18f8
> change-id: 20260806-dvb-307714ff6225
>
> Best regards,
> --
> Vasileios Almpanis <vasilisalmpanis@gmail.com>
>
prev parent reply other threads:[~2026-08-07 8:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 17:47 [PATCH] media: dw2102: fix OOB read on firmware size not a multiple of 64 Vasileios Almpanis
2026-08-07 8:46 ` Vasileios Almpanis [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=576fd334-3482-4ada-9b35-2e67a024e306@gmail.com \
--to=vasilisalmpanis@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=liplianin@me.by \
--cc=mchehab@kernel.org \
--cc=stable@vger.kernel.org \
--cc=syzbot+f408eac9faa61d5a1927@syzkaller.appspotmail.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.