• J
    io_uring: account user memory freed when exit has been queued · 8c9ebb73
    Jens Axboe 提交于
    to #29276773
    
    commit 309fc03a3284af62eb6082fb60327045a1dabf57 upstream.
    
    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: 85faa7b8346e ("io_uring: punt final io_ring_ctx wait-and-free to workqueue")
    Cc: stable@vger.kernel.org # v5.7
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    Signed-off-by: NJiufei Xue <jiufei.xue@linux.alibaba.com>
    Reviewed-by: NJoseph Qi <joseph.qi@linux.alibaba.com>
    8c9ebb73
io_uring.c 193.6 KB