Linux Hardware Monitor development
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Edward Adam Davis <eadavis@qq.com>,
	syzbot+9ee5f5dc18673d6b2f37@syzkaller.appspotmail.com
Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org, me@jackdoan.com,
	savicaleksa83@gmail.com, syzkaller-bugs@googlegroups.com
Subject: Re: [PATCH] hwmon: valid the data size before reading the sensor data
Date: Fri, 21 Aug 2026 23:41:26 -0700	[thread overview]
Message-ID: <31df411d-e257-458d-98e5-c2920915294d@roeck-us.net> (raw)
In-Reply-To: <tencent_8FCF9A8DDF25A10DCC12265DF45DBE995307@qq.com>

Subject is supposed to be "hwmon: (driver) Description".

On 8/21/26 22:34, Edward Adam Davis wrote:
> The user-forged sensor data is only 65 bytes long; however, aqc_raw_event()
> fails to handle cases where the sensor data length is smaller than the buffer
> size when reading the data, resulting in [1] during the read process.
> 

The device simulated by syzbot is D5 next, and its control buffer size is
0x329 or 809. I _asked_ earlier if that is the value to check against,
but did not claim that this is actually the case.

We know that the report must be much longer than 65 bytes. D5NEXT_PUMP_OFFSET
is 0x6c = 108, and the field is two bytes long, meaning the report size
must be at least 110 bytes long. What we do not know is its actual length.

> Add a check for the data size, if it less than the buffer size, the sensor
> data read is aborted.
>

Apparently Sashiko is aware that this is wrong - not only is the report size
smaller than 809 bytes, but apparently buffer_size is not even set for all
supported devices.

Please do not submit a patch to fix this problem if you can not test if
the code actually works.

Thanks,
Guenter

> [1]
> BUG: KASAN: slab-out-of-bounds in aqc_raw_event+0x213e/0x25d0 drivers/hwmon/aquacomputer_d5next.c:1327
> Read of size 2 at addr ffff888108aba257 by task swapper/1/0
> Call Trace:
>   get_unaligned_be16 include/linux/unaligned.h:48 [inline]
>   aqc_raw_event drivers/hwmon/aquacomputer_d5next.c:1345 [inline]
>   aqc_raw_event+0x213e/0x25d0 drivers/hwmon/aquacomputer_d5next.c:1327
>   __hid_input_report.constprop.0+0x319/0x470 drivers/hid/hid-core.c:2168
>   hid_irq_in+0x55d/0x710 drivers/hid/usbhid/hid-core.c:287
>   __usb_hcd_giveback_urb+0x38d/0x610 drivers/usb/core/hcd.c:1657
>   usb_hcd_giveback_urb+0x3ca/0x4a0 drivers/usb/core/hcd.c:1741
> 
> Fixes: 0e35f63f7f4e ("hwmon: add driver for Aquacomputer D5 Next")
> Reported-by: syzbot+9ee5f5dc18673d6b2f37@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=9ee5f5dc18673d6b2f37
> Tested-by: syzbot+9ee5f5dc18673d6b2f37@syzkaller.appspotmail.com
> Signed-off-by: Edward Adam Davis <eadavis@qq.com>
> ---
>   drivers/hwmon/aquacomputer_d5next.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/hwmon/aquacomputer_d5next.c b/drivers/hwmon/aquacomputer_d5next.c
> index 1ca70e726298..1cc6c220ffe9 100644
> --- a/drivers/hwmon/aquacomputer_d5next.c
> +++ b/drivers/hwmon/aquacomputer_d5next.c
> @@ -1334,6 +1334,9 @@ static int aqc_raw_event(struct hid_device *hdev, struct hid_report *report, u8
>   
>   	priv = hid_get_drvdata(hdev);
>   
> +	if (size < priv->buffer_size)
> +		return 0;
> +
>   	/* Info provided with every report */
>   	priv->serial_number[0] = get_unaligned_be16(data + priv->serial_number_start_offset);
>   	priv->serial_number[1] = get_unaligned_be16(data + priv->serial_number_start_offset +


  parent reply	other threads:[~2026-08-22  6:41 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-22  3:06 [syzbot] [hwmon?] KASAN: slab-out-of-bounds Read in aqc_raw_event syzbot
2026-08-22  4:02 ` Guenter Roeck
2026-08-22  8:07   ` Aleksa Savic
2026-08-22 14:24     ` Guenter Roeck
2026-08-22  5:34 ` [PATCH] hwmon: valid the data size before reading the sensor data Edward Adam Davis
2026-08-22  5:44   ` sashiko-bot
2026-08-22  7:45     ` [PATCH v2] " Edward Adam Davis
2026-08-22  7:54       ` Guenter Roeck
2026-08-22  7:57       ` sashiko-bot
2026-08-22  9:14         ` [PATCH v3] hwmon: (aquacomputer_d5next) " Edward Adam Davis
2026-08-22  9:26           ` sashiko-bot
2026-08-22 11:34             ` [PATCH v4] " Edward Adam Davis
2026-08-22 11:47               ` sashiko-bot
2026-08-22 11:55               ` Greg KH
2026-08-22 12:23                 ` Edward Adam Davis
2026-08-22 12:45                   ` Greg KH
2026-08-22 13:03                     ` Edward Adam Davis
2026-08-22 14:05                       ` [PATCH v5] " Edward Adam Davis
2026-08-22 14:20                         ` sashiko-bot
2026-08-22 14:25                         ` Guenter Roeck
2026-08-22  6:41   ` Guenter Roeck [this message]
2026-08-22  7:54     ` [PATCH] hwmon: " Edward Adam Davis

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=31df411d-e257-458d-98e5-c2920915294d@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=eadavis@qq.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=me@jackdoan.com \
    --cc=savicaleksa83@gmail.com \
    --cc=syzbot+9ee5f5dc18673d6b2f37@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox