• Jens Axboe's avatar
    io_uring: account user memory freed when exit has been queued · 309fc03a
    Jens Axboe authored
    We currently account the memory after the exit work has been run, but
    that leaves a gap where a process has closed its ring and until the
    memory has been accounted as freed. If the memlocked ulimit is
    borderline, then that can introduce spurious setup errors returning
    -ENOMEM because the free work hasn't been run yet.
    
    Account this as freed when we close the ring, as not to expose a tiny
    gap where setting up a new ring can fail.
    
    Fixes: 85faa7b8 ("io_uring: punt final io_ring_ctx wait-and-free to workqueue")
    Cc: stable@vger.kernel.org # v5.7
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    309fc03a
io_uring.c 195 KB