mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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 )=-

  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®