Re: Still a pretty bad time on 5.4.6 with fuse_request_end.

From: Michael Stapelberg
Date: Thu Feb 13 2020 - 02:23:21 EST


I confirm that the patch fixes the issue I was seeing. Thanks a lot!

On Wed, Feb 12, 2020 at 8:36 PM Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>
> On Wed, Feb 12, 2020 at 10:38 AM Michael Stapelberg
> <michael+lkml@xxxxxxxxxxxxx> wrote:
> >
> > Unfortunately not: when I change the code like so:
> >
> > bool async;
> > uint32_t opcode_early = req->args->opcode;
> >
> > if (test_and_set_bit(FR_FINISHED, &req->flags))
> > goto put_request;
> >
> > async = req->args->end;
> >
> > âgdb only reports:
> >
> > (gdb) bt
> > #0 0x000000a700000001 in ?? ()
> > #1 0xffffffff8137fc99 in fuse_copy_finish (cs=0x20000ffffffff) at
> > fs/fuse/dev.c:681
> > Backtrace stopped: previous frame inner to this frame (corrupt stack?)
> >
> > But maybe thatâs a hint in and of itself?
>
> Yep, it's a stack use after return bug. Attached patch should fix
> it, though I haven't tested it.
>
> Thanks,
> Miklos