Hi, It seems that openat calls issued via io_uring ignore changes to RLIMIT_NOFILE. Maybe a wrong limit is checked. A short reproducer is attached, it sets RLIMIT_NOFILE to a very low value and the sync openat() call fails with "Too many open files", but io_uring one succeeds. The resulting FD is completely usable, I've tried writing to it successfully. To be clear, originally I've encountered another side of this problem: we increase the limit in our code, and io_uring's openat started to fail after a while under load, while the sync calls executed on a thread pool were working as expected. It's just easier to demo with small limit. Kernel 5.6-rc2, 5.6-rc6. Hope it's the right place to report an issue like this. Thanks. -- Dmitry