7f72b46110
- Update to 2.8 * Add support for incrementally/partially consumed provided buffers, usable with the provided buffer ring support. * Add support for foo_and_wait_min_timeout(), where it's possible to define a minimum timeout for waiting to get batches of completions, but if that fails, extend for a longer timeout without having any extra context switches. * Add support for using different clock sources for completion waiting. * Great increase coverage of test cases, test case improvements and fixes. * Don't leak _GNU_SOURCE via pkb-config --cflags * Support for address sanitizer * Add examples/kdigest sample program * Add discard helper, test, and man page * Man page updates * Sync with kernel 6.10 * send/recv bundle support * accept nowait and CQE_F_MORE * Add and update test cases * Fix io_uring_queue_init_mem() returning a value that was too small, potentially causing memory corruption in userspace by overwriting 64 bytes beyond the returned value. Also add test case for that. * Add 64-bit length variants of io_uring_prep_{m,f}advise() * Add BIND/LISTEN support and helpers / man pages * Add io_uring_enable_rings.3 man page * Fix bug in io_uring_prep_read_multishot() * Fixup bundle test cases * Add fixed-hugepage test case * Fix io_uring_prep_fixed_fd_install.3 man page OBS-URL: https://build.opensuse.org/package/show/devel:libraries:c_c++/liburing?expand=0&rev=50
50 lines
1.5 KiB
Diff
50 lines
1.5 KiB
Diff
From 8100d7b5f862fa514d821e8bd8f99d0de79af571 Mon Sep 17 00:00:00 2001
|
|
From: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
|
|
Date: Fri, 12 Jul 2024 13:17:03 +0200
|
|
Subject: [PATCH] test/buf-ring-nommap: zero the ringbuf memory
|
|
|
|
The test crashes when run under the openSUSE build system. It sets
|
|
MALLOC_PERTURB_=69 in the environment, so the allocated memory is
|
|
initialized to 0xba.
|
|
|
|
Later in io_uring_get_sqe() -> _io_uring_get_sqe():
|
|
1424 if (next - head <= sq->ring_entries) {
|
|
(gdb) p *sq
|
|
$2 = {khead = 0x55555555d000, ktail = 0x55555555d004,
|
|
kring_mask = 0x55555555d010, kring_entries = 0x55555555d018,
|
|
kflags = 0x55555555d024, kdropped = 0x55555555d020, array = 0x0,
|
|
sqes = 0x55555555c000, sqe_head = 0, sqe_tail = 0, ring_sz = 0,
|
|
ring_ptr = 0x55555555d000, ring_mask = 0, ring_entries = 1, pad = {0, 0}}
|
|
(gdb) p sq->ring_entries
|
|
$3 = 1
|
|
(gdb) p next
|
|
$4 = 1
|
|
(gdb) p/x head
|
|
$6 = 0xbabababa
|
|
|
|
And that causes a crash, of course.
|
|
|
|
Fix that by zeroing the memory after posix_memalign().
|
|
|
|
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
|
|
---
|
|
test/buf-ring-nommap.c | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/test/buf-ring-nommap.c b/test/buf-ring-nommap.c
|
|
index 1e47f28..17c1495 100644
|
|
--- a/test/buf-ring-nommap.c
|
|
+++ b/test/buf-ring-nommap.c
|
|
@@ -41,6 +41,8 @@ int main(int argc, char *argv[])
|
|
if (posix_memalign(&ring_mem, 16384, 16384))
|
|
return T_EXIT_FAIL;
|
|
|
|
+ memset(ring_mem, 0, 16384);
|
|
+
|
|
p.flags = IORING_SETUP_NO_MMAP;
|
|
ret = io_uring_queue_init_mem(1, &ring, &p, ring_mem, 16384);
|
|
if (ret < 0) {
|
|
--
|
|
2.35.3
|
|
|