From: Ian Abbott <abbotti@mev.co.uk>
To: Edward Adam Davis <eadavis@qq.com>,
syzbot+5cd373521edd68bebcb3@syzkaller.appspotmail.com
Cc: hsweeten@visionengravers.com, linux-kernel@vger.kernel.org,
syzkaller-bugs@googlegroups.com
Subject: Re: [PATCH] commdi: pcl726: Prevent invalid irq number
Date: Mon, 7 Jul 2025 11:01:56 +0100 [thread overview]
Message-ID: <bc883c14-95d2-4fb0-b32b-9a46cc0c4acd@mev.co.uk> (raw)
In-Reply-To: <d4d22eb4-b227-4da4-a070-370dff5ab90b@mev.co.uk>
On 07/07/2025 10:47, Ian Abbott wrote:
> On 06/07/2025 03:10, Edward Adam Davis wrote:
>
> The "comedi" tag in the subject line is misspelled.
>
>> The reproducer passed in an irq number(0x80008000) that was too large,
>> which triggered the oob.
>>
>> Added an interrupt number check to prevent users from passing in an irq
>> number that was too large.
>>
>> Fixes: fff46207245c ("staging: comedi: pcl726: enable the interrupt
>> support code")
>> Reported-by: syzbot+5cd373521edd68bebcb3@syzkaller.appspotmail.com
>> Closes: https://syzkaller.appspot.com/bug?extid=5cd373521edd68bebcb3
>> Tested-by: syzbot+5cd373521edd68bebcb3@syzkaller.appspotmail.com
>
> Thanks.
>
> You could add:
>
> Cc: <stable@vger.kernel.org> # 5.13+
>
> to apply it to stable kernels. (The 5.13+ is because comedi was moved
> out of the "staging" directory in 5.13, and a backport would be required
> for longterm series < 5.13.)
>
> More comments below...
>
>> Signed-off-by: Edward Adam Davis <eadavis@qq.com>
>> ---
>> drivers/comedi/drivers/pcl726.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/comedi/drivers/pcl726.c b/drivers/comedi/drivers/
>> pcl726.c
>> index 0430630e6ebb..8802f33f1954 100644
>> --- a/drivers/comedi/drivers/pcl726.c
>> +++ b/drivers/comedi/drivers/pcl726.c
>> @@ -328,6 +328,9 @@ static int pcl726_attach(struct comedi_device *dev,
>> * Hook up the external trigger source interrupt only if the
>> * user config option is valid and the board supports interrupts.
>> */
>> + if (it->options[1] < 0 || it->options[1] > 31)
>> + return -EINVAL;
>> +
I missed this one earlier, but returning `-EINVAL` changes the behavior.
The old code would just not attempt to request the IRQ if the
`options[1]` value were invalid. And it would still configure the
device without interrupts even if the call to `request_irq` returned an
error. So it would be better to combine this test with the test below.
>> if (it->options[1] && (board->irq_mask & (1 << it->options[1]))) {
>> ret = request_irq(it->options[1], pcl726_interrupt, 0,
>> dev->board_name, dev);
>
> If `it->options[1]` is 31, then `1 << it->options[1]` is still invalid
> because it shifts a 1-bit into the sign bit (which is UB in C). Possible
> solutions include reducing the upper bound on the `it->options[1]` value
> to 30 or lower, or using `1U << it->options[1]`.
>
For example:
if (it->options[1] > 0 && it->options[1] < 16 &&
(board->irq_mask & (1U << it->options[1])) {
Thanks.
--
-=( Ian Abbott <abbotti@mev.co.uk> || MEV Ltd. is a company )=-
-=( registered in England & Wales. Regd. number: 02862268. )=-
-=( Regd. addr.: S11 & 12 Building 67, Europa Business Park, )=-
-=( Bird Hall Lane, STOCKPORT, SK3 0XA, UK. || www.mev.co.uk )=-
next prev parent reply other threads:[~2025-07-07 10:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-05 11:02 [syzbot] [kernel?] UBSAN: shift-out-of-bounds in pcl726_attach syzbot
2025-07-05 12:47 ` Hillf Danton
2025-07-05 13:06 ` syzbot
2025-07-06 1:51 ` Edward Adam Davis
2025-07-06 2:10 ` syzbot
2025-07-06 2:10 ` [PATCH] commdi: pcl726: Prevent invalid irq number Edward Adam Davis
2025-07-07 9:47 ` Ian Abbott
2025-07-07 10:01 ` Ian Abbott [this message]
2025-07-07 11:43 ` [PATCH V2] " Edward Adam Davis
2025-07-07 12:23 ` Ian Abbott
2025-07-07 12:39 ` [PATCH V3] comedi: " Edward Adam Davis
2025-07-24 11:07 ` [PATCH V3 REPOST] " Ian Abbott
2025-07-24 11:11 ` Ian Abbott
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=bc883c14-95d2-4fb0-b32b-9a46cc0c4acd@mev.co.uk \
--to=abbotti@mev.co.uk \
--cc=eadavis@qq.com \
--cc=hsweeten@visionengravers.com \
--cc=linux-kernel@vger.kernel.org \
--cc=syzbot+5cd373521edd68bebcb3@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
all inboxes | Powered by JetHome®