On 2/15/23 2:06 PM, John David Anglin wrote: > On 2023-02-15 3:37 p.m., Jens Axboe wrote: >>> System crashes running test buf-ring.t. >> Huh, what's the crash? > Not much info. System log indicates an HPMC occurred. Unfortunately, recovery code doesn't work. >> >>> Running test buf-ring.t bad run 0/0 = -233 >> THis one, and the similar -223 ones, you need to try and dig into that. >> It doesn't reproduce for me, and it very much seems like the test case >> having a different view of what -ENOBUFS looks like and hence it fails >> when the kernel passes down something that is -ENOBUFS internally, but >> doesn't match the app -ENOBUFS value. Are you running a 64-bit kernel? >> Would that cause any differences? > I'm running a 64-bit kernel (6.1.12). > > I believe 32 and 64-bit kernels have same error codes. > > I see three places in io_uring where -ENOBUFS is returned. They have similar code: > > retry_multishot: > if (io_do_buffer_select(req)) { > void __user *buf; > size_t len = sr->len; > > buf = io_buffer_select(req, &len, issue_flags); > if (!buf) > return -ENOBUFS; buf-ring is using a kernel mapped user ring, so may indeed be the same kind of coloring issue that we saw with the main rings. -- Jens Axboe