On Wed, Feb 12, 2020 at 10:38 AM Michael Stapelberg 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