Re: KASAN: stack-out-of-bounds in iov_iter_revert

From: Pavel Begunkov
Date: Tue Aug 03 2021 - 06:35:08 EST


On 8/3/21 8:47 AM, Sudip Mukherjee wrote:
> On Mon, Aug 2, 2021 at 12:55 PM Pavel Begunkov <asml.silence@xxxxxxxxx> wrote:
>>
>> On 8/1/21 9:28 PM, Sudip Mukherjee wrote:
>>> Hi Pavel,
>>>
>>> On Sun, Aug 1, 2021 at 9:52 AM Pavel Begunkov <asml.silence@xxxxxxxxx> wrote:
>>>>
>>>> On 8/1/21 1:10 AM, Pavel Begunkov wrote:
>>>>> On 7/31/21 7:21 PM, Sudip Mukherjee wrote:
>>>>>> Hi Jens, Pavel,
>>>>>>
>>>>>> We had been running syzkaller on v5.10.y and a "KASAN:
>>>>>> stack-out-of-bounds in iov_iter_revert" was being reported on it. I
>>>>>> got some time to check that today and have managed to get a syzkaller
>>>>>> reproducer. I dont have a C reproducer which I can share but I can use
>>>>>> the syz-reproducer to reproduce this with v5.14-rc3 and also with
>>>>>> next-20210730.
>>>>>
>>>>> Can you try out the diff below? Not a full-fledged fix, but need to
>>>>> check a hunch.
>>>>>
>>>>> If that's important, I was using this branch:
>>>>> git://git.kernel.dk/linux-block io_uring-5.14
>>>>
>>>> Or better this one, just in case it ooopses on warnings.
>>>
>>> I tested this one on top of "git://git.kernel.dk/linux-block
>>> io_uring-5.14" and the issue was still seen, but after the BUG trace I
>>> got lots of "truncated wr" message. The trace is:
>>
>> That's interesting, thanks
>> Can you share the syz reproducer?
>
> Unfortunately I dont have a C reproducer, but this is the reproducer
> for syzkaller:

Thanks. Maybe I'm not perfectly familiar with syz, but were there
any options? Like threaded, collide, etc.?


>
> r0 = syz_io_uring_setup(0x4d4f, &(0x7f0000000080)={0x0, 0x0, 0x1},
> &(0x7f00000a0000)=nil, &(0x7f0000ffc000/0x1000)=nil,
> &(0x7f0000000000)=<r1=>0x0, &(0x7f0000000140))
> r2 = openat(0xffffffffffffff9c, &(0x7f0000000040)='./file0\x00', 0x46e2, 0x0)
> syz_io_uring_setup(0x1, &(0x7f0000000080),
> &(0x7f0000ffd000/0x2000)=nil, &(0x7f0000ffc000/0x2000)=nil,
> &(0x7f0000000100), &(0x7f0000000140)=<r3=>0x0)
> syz_io_uring_submit(r1, r3, &(0x7f0000000100)=@IORING_OP_WRITE={0x17,
> 0x0, 0x0, @fd=r2, 0x0, &(0x7f0000000200)="e2", 0xffffffffffffff98},
> 0x200)
> io_uring_enter(r0, 0x58ab, 0x0, 0x0, 0x0, 0x0)
>
>

--
Pavel Begunkov