Converted the io_* and mq_* syscalls.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3022 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_syscalls.c b/coregrind/vg_syscalls.c
index 15f4307..ae4d3b3 100644
--- a/coregrind/vg_syscalls.c
+++ b/coregrind/vg_syscalls.c
@@ -5945,7 +5945,7 @@
&bigger_oldset );
if (oldset)
- *oldset = bigger_oldset.sig[0];
+ *oldset = bigger_oldset.sig[0];
}
}
@@ -6007,16 +6007,21 @@
POST_MEM_WRITE( arg1, sizeof(vki_sigset_t) ) ;
}
-PRE(io_setup)
+// Nb: this wrapper is "Special" because we have to pad/unpad memory around
+// the syscall itself, and this allows us to control exactly the code that
+// gets run while the padding is in place.
+PREx(sys_io_setup, Special)
{
SizeT size;
Addr addr;
- /* long io_setup (unsigned nr_events, aio_context_t *ctxp); */
- PRINT("io_setup ( %ul, %p )",arg1,arg2);
+ PRINT("sys_io_setup ( %u, %p )", arg1,arg2);
+ PRE_REG_READ2(long, "io_setup",
+ unsigned, nr_events, vki_aio_context_t *, ctxp);
PRE_MEM_WRITE( "io_setup(ctxp)", arg2, sizeof(vki_aio_context_t) );
- size = PGROUNDUP(sizeof(struct vki_aio_ring) + arg1 * sizeof(struct vki_io_event));
+ size = PGROUNDUP(sizeof(struct vki_aio_ring) +
+ arg1*sizeof(struct vki_io_event));
addr = VG_(find_map_space)(0, size, True);
VG_(map_segment)(addr, size, VKI_PROT_READ|VKI_PROT_EXEC, SF_FIXED);
@@ -6038,28 +6043,42 @@
}
}
-PRE(io_destroy)
-{
+// Nb: This wrapper is "Special" because we need 'size' to do the unmap
+// after the syscall. We must get 'size' from the aio_ring structure,
+// before the syscall, while the aio_ring structure still exists. (And we
+// know that we must look at the aio_ring structure because Tom inspected the
+// kernel and glibc sources to see what they do, yuk.)
+PREx(sys_io_destroy, Special)
+{
Segment *s = VG_(find_segment)(arg1);
- struct vki_aio_ring *r = *(struct vki_aio_ring **)arg1;
- SizeT size = PGROUNDUP(sizeof(struct vki_aio_ring) + r->nr * sizeof(struct vki_io_event));
+ struct vki_aio_ring *r;
+ SizeT size;
+
+ PRINT("sys_io_destroy ( %llu )", (ULong)arg1);
+ PRE_REG_READ1(long, "io_destroy", vki_aio_context_t, ctx);
- /* long io_destroy (aio_context_t ctx); */
- PRINT("io_destroy ( %ul )",arg1);
+ // If we are going to seg fault (due to a bogus arg1) do it as late as
+ // possible...
+ r = *(struct vki_aio_ring **)arg1;
+ size = PGROUNDUP(sizeof(struct vki_aio_ring) +
+ r->nr*sizeof(struct vki_io_event));
set_result( VG_(do_syscall)(SYSNO, arg1) );
-
- if (res == 0 && s != NULL && VG_(seg_contains)(s, arg1, size)) {
+
+ if (res == 0 && s != NULL && VG_(seg_contains)(s, arg1, size)) {
VG_TRACK( die_mem_munmap, arg1, size );
VG_(unmap_range)(arg1, size);
- }
-}
+ }
+}
-PRE(io_getevents)
+PREx(sys_io_getevents, MayBlock)
{
- /* long io_getevents (aio_context_t ctx_id, long min_nr, long nr,
- struct io_event *events, struct timespec *timeout); */
- PRINT("io_getevents ( %ul, %l, %l, %p, %p )",arg1,arg2,arg3,arg4,arg5);
+ PRINT("sys_io_getevents ( %llu, %lld, %lld, %p, %p )",
+ (ULong)arg1,(Long)arg2,(Long)arg3,arg4,arg5);
+ PRE_REG_READ5(long, "io_getevents",
+ vki_aio_context_t, ctx_id, long, min_nr, long, nr,
+ struct io_event *, events,
+ struct timespec *, timeout);
if (arg3 > 0)
PRE_MEM_WRITE( "io_getevents(events)",
arg4, sizeof(struct vki_io_event)*arg3 );
@@ -6068,7 +6087,7 @@
arg5, sizeof(struct vki_timespec));
}
-POST(io_getevents)
+POSTx(sys_io_getevents)
{
int i;
@@ -6095,51 +6114,59 @@
}
}
-PRE(io_submit)
+PREx(sys_io_submit, 0)
{
int i;
- /* long io_submit (aio_context_t ctx_id, long nr, struct iocb **iocbpp); */
- PRINT("io_submit( %ul, %l, %p )",arg1,arg2,arg3);
- PRE_MEM_READ( "io_submit(iocbpp)", arg3, sizeof(struct vki_iocb *)*arg2 );
- for (i = 0; i < arg2; i++) {
- struct vki_iocb *cb = ((struct vki_iocb **)arg3)[i];
- PRE_MEM_READ( "io_submit(iocb)",
- (Addr)cb, sizeof(struct vki_iocb) );
- switch (cb->aio_lio_opcode) {
- case VKI_IOCB_CMD_PREAD:
- PRE_MEM_WRITE( "io_submit(PREAD)", cb->aio_buf, cb->aio_nbytes );
- break;
+ PRINT("sys_io_submit( %llu, %lld, %p )", (ULong)arg1,(Long)arg2,arg3);
+ PRE_REG_READ3(long, "io_submit",
+ vki_aio_context_t, ctx_id, long, nr,
+ struct iocb **, iocbpp);
+ PRE_MEM_READ( "io_submit(iocbpp)", arg3, arg2*sizeof(struct vki_iocb *) );
+ if (arg3 != (UWord)NULL) {
+ for (i = 0; i < arg2; i++) {
+ struct vki_iocb *cb = ((struct vki_iocb **)arg3)[i];
+ PRE_MEM_READ( "io_submit(iocb)", (Addr)cb, sizeof(struct vki_iocb) );
+ switch (cb->aio_lio_opcode) {
+ case VKI_IOCB_CMD_PREAD:
+ PRE_MEM_WRITE( "io_submit(PREAD)", cb->aio_buf, cb->aio_nbytes );
+ break;
- case VKI_IOCB_CMD_PWRITE:
- PRE_MEM_READ( "io_submit(PWRITE)", cb->aio_buf, cb->aio_nbytes );
- break;
-
- default:
- VG_(message)(Vg_DebugMsg,"Warning: unhandled io_submit opcode: %u\n",cb->aio_lio_opcode);
- break;
+ case VKI_IOCB_CMD_PWRITE:
+ PRE_MEM_READ( "io_submit(PWRITE)", cb->aio_buf, cb->aio_nbytes );
+ break;
+
+ default:
+ VG_(message)(Vg_DebugMsg,"Warning: unhandled io_submit opcode: %u\n",
+ cb->aio_lio_opcode);
+ break;
+ }
}
}
}
-PRE(io_cancel)
+PREx(sys_io_cancel, 0)
{
- /* long io_cancel (aio_context_t ctx_id, struct iocb *iocb,
- struct io_event *result); */
- PRINT("io_cancel( %ul, %p, %p )",arg1,arg2,arg3);
+ PRINT("sys_io_cancel( %llu, %p, %p )", (ULong)arg1,arg2,arg3);
+ PRE_REG_READ3(long, "io_cancel",
+ vki_aio_context_t, ctx_id, struct iocb *, iocb,
+ struct io_event *, result);
PRE_MEM_READ( "io_cancel(iocb)", arg2, sizeof(struct vki_iocb) );
PRE_MEM_WRITE( "io_cancel(result)", arg3, sizeof(struct vki_io_event) );
}
-POST(io_cancel)
+POSTx(sys_io_cancel)
{
POST_MEM_WRITE( arg3, sizeof(struct vki_io_event) );
}
-PRE(mq_open)
+PREx(sys_mq_open, 0)
{
- /* mqd_t mq_open(const char *name, int oflag, ...); */
- PRINT("mq_open( %p(%s), %d )", arg1,arg1,arg2);
+ PRINT("sys_mq_open( %p(%s), %d, %lld, %p )",
+ arg1,arg1,arg2,(ULong)arg3,arg4);
+ PRE_REG_READ4(long, "mq_open",
+ const char *, name, int, oflag, vki_mode_t, mode,
+ struct mq_attr *, attr);
PRE_MEM_RASCIIZ( "mq_open(name)", arg1 );
if ((arg2 & VKI_O_CREAT) != 0 && arg4 != 0) {
const struct vki_mq_attr *attr = (struct vki_mq_attr *)arg4;
@@ -6150,7 +6177,7 @@
}
}
-POST(mq_open)
+POSTx(sys_mq_open)
{
if (!fd_allowed(res, "mq_open", tid, True)) {
VG_(close)(res);
@@ -6161,19 +6188,20 @@
}
}
-PRE(mq_unlink)
+PREx(sys_mq_unlink, 0)
{
- /* int mq_unlink(const char *name) */
- PRINT("mq_unlink ( %p(%s) )",arg1, arg1);
+ PRINT("sys_mq_unlink ( %p(%s) )", arg1,arg1);
+ PRE_REG_READ1(long, "mq_unlink", const char *, name);
PRE_MEM_RASCIIZ( "mq_unlink(name)", arg1 );
}
-PRE(mq_timedsend)
+PREx(sys_mq_timedsend, MayBlock)
{
- /* int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len,
- unsigned msg_prio, const struct timespec *abs_timeout); */
- PRINT("mq_timedsend ( %d, %p, %llu, %d, %p )",
- arg1,arg2,(ULong)arg3,arg4,arg5);
+ PRINT("sys_mq_timedsend ( %d, %p, %llu, %d, %p )",
+ arg1,arg2,(ULong)arg3,arg4,arg5);
+ PRE_REG_READ5(long, "mq_timedsend",
+ vki_mqd_t, mqdes, const char *, msg_ptr, vki_size_t, msg_len,
+ unsigned int, msg_prio, const struct timespec *, abs_timeout);
if (!fd_allowed(arg1, "mq_timedsend", tid, False)) {
set_result( -VKI_EBADF );
} else {
@@ -6184,13 +6212,14 @@
}
}
-PRE(mq_timedreceive)
+PREx(sys_mq_timedreceive, MayBlock)
{
- /* ssize_t mq_timedreceive(mqd_t mqdes, char *restrict msg_ptr,
- size_t msg_len, unsigned *restrict msg_prio,
- const struct timespec *restrict abs_timeout); */
- PRINT("mq_timedreceive( %d, %p, %llu, %p, %p )",
- arg1,arg2,(ULong)arg3,arg4,arg5);
+ PRINT("sys_mq_timedreceive( %d, %p, %llu, %p, %p )",
+ arg1,arg2,(ULong)arg3,arg4,arg5);
+ PRE_REG_READ5(ssize_t, "mq_timedreceive",
+ vki_mqd_t, mqdes, char *, msg_ptr, vki_size_t, msg_len,
+ unsigned int *, msg_prio,
+ const struct timespec *, abs_timeout);
if (!fd_allowed(arg1, "mq_timedreceive", tid, False)) {
set_result( -VKI_EBADF );
} else {
@@ -6204,28 +6233,31 @@
}
}
-POST(mq_timedreceive)
+POSTx(sys_mq_timedreceive)
{
POST_MEM_WRITE( arg2, arg3 );
if (arg4 != 0)
POST_MEM_WRITE( arg4, sizeof(unsigned int) );
}
-PRE(mq_notify)
+PREx(sys_mq_notify, 0)
{
- /* int mq_notify(mqd_t mqdes, const struct sigevent *notification); */
- PRINT("mq_notify( %d, %p )", arg1,arg2 );
+ PRINT("sys_mq_notify( %d, %p )", arg1,arg2 );
+ PRE_REG_READ2(long, "mq_notify",
+ vki_mqd_t, mqdes, const struct sigevent *, notification);
if (!fd_allowed(arg1, "mq_notify", tid, False))
set_result( -VKI_EBADF );
else if (arg2 != 0)
- PRE_MEM_READ( "mq_notify", arg2, sizeof(struct vki_sigevent) );
+ PRE_MEM_READ( "mq_notify(notification)",
+ arg2, sizeof(struct vki_sigevent) );
}
-PRE(mq_getsetattr)
+PREx(sys_mq_getsetattr, 0)
{
- /* int mq_getsetattr(mqd_t mqdes, const struct mq_attr *restrict mqstat,
- struct mq_attr *restrict omqstat); */
- PRINT("mq_getsetattr( %d, %p, %p )", arg1,arg2,arg3 );
+ PRINT("sys_mq_getsetattr( %d, %p, %p )", arg1,arg2,arg3 );
+ PRE_REG_READ3(long, "mq_getsetattr",
+ vki_mqd_t, mqdes, const struct mq_attr *, mqstat,
+ struct mq_attr *, omqstat);
if (!fd_allowed(arg1, "mq_getsetattr", tid, False)) {
set_result( -VKI_EBADF );
} else {
@@ -6240,7 +6272,7 @@
}
}
-POST(mq_getsetattr)
+POSTx(sys_mq_getsetattr)
{
if (arg3 != 0)
POST_MEM_WRITE( arg3, sizeof(struct vki_mq_attr) );
@@ -6707,11 +6739,11 @@
SYSB_(__NR_set_thread_area, sys_set_thread_area, Special), // 243
SYSB_(__NR_get_thread_area, sys_get_thread_area, Special), // 244
- SYSB_(__NR_io_setup, sys_io_setup, Special), // 245 *
- SYSB_(__NR_io_destroy, sys_io_destroy, Special), // 246 *
- SYSBA(__NR_io_getevents, sys_io_getevents, MayBlock), // 247 *
- SYSB_(__NR_io_submit, sys_io_submit, 0), // 248 *
- SYSBA(__NR_io_cancel, sys_io_cancel, 0), // 249 *
+ SYSX_(__NR_io_setup, sys_io_setup), // 245 * L
+ SYSX_(__NR_io_destroy, sys_io_destroy), // 246 * L
+ SYSXY(__NR_io_getevents, sys_io_getevents), // 247 * L
+ SYSX_(__NR_io_submit, sys_io_submit), // 248 * L
+ SYSXY(__NR_io_cancel, sys_io_cancel), // 249 * L
// (__NR_fadvise64, sys_fadvise64), // 250 * ()
SYSX_(251, sys_ni_syscall), // 251 * P -- unused
@@ -6744,16 +6776,16 @@
SYSX_(__NR_vserver, sys_ni_syscall), // 273 * P -- unimplemented
// (__NR_mbind, sys_mbind), // 274 () ()
- // (__NR_get_mempolicy, sys_get_mempolicy), // 275 () ()
- // (__NR_set_mempolicy, sys_set_mempolicy), // 276 () ()
- SYSBA(__NR_mq_open, sys_mq_open, 0), // 277 *
- SYSB_(__NR_mq_unlink, sys_mq_unlink, 0), // (mq_open+1) *
- SYSB_(__NR_mq_timedsend, sys_mq_timedsend, MayBlock), // (mq_open+2) *
+ // (__NR_get_mempolicy, sys_get_mempolicy),// 275 () ()
+ // (__NR_set_mempolicy, sys_set_mempolicy),// 276 () ()
+ SYSXY(__NR_mq_open, sys_mq_open), // 277 * P?
+ SYSX_(__NR_mq_unlink, sys_mq_unlink), // (mq_open+1) * P?
+ SYSX_(__NR_mq_timedsend, sys_mq_timedsend), // (mq_open+2) * P?
- SYSBA(__NR_mq_timedreceive, sys_mq_timedreceive, MayBlock), // (mq_open+3) *
- SYSB_(__NR_mq_notify, sys_mq_notify, 0), // (mq_open+4) *
- SYSBA(__NR_mq_getsetattr, sys_mq_getsetarr, 0), // (mq_open+5) *
- SYSX_(__NR_sys_kexec_load, sys_ni_syscall), // 283 * P
+ SYSXY(__NR_mq_timedreceive, sys_mq_timedreceive), // (mq_open+3) * P?
+ SYSX_(__NR_mq_notify, sys_mq_notify), // (mq_open+4) * P?
+ SYSXY(__NR_mq_getsetattr, sys_mq_getsetattr), // (mq_open+5) * P?
+ SYSX_(__NR_sys_kexec_load, sys_ni_syscall), // 283 * P
};
#define MAX_SYS_INFO (sizeof(sys_info)/sizeof(sys_info[0]))
diff --git a/include/linux/vki.h b/include/linux/vki.h
index 37c4e1f..067dd5f 100644
--- a/include/linux/vki.h
+++ b/include/linux/vki.h
@@ -100,6 +100,7 @@
} __vki_kernel_fd_set;
typedef int __vki_kernel_key_t;
+typedef int __vki_kernel_mqd_t;
//----------------------------------------------------------------------
// From linux-2.6.8.1/include/linux/types.h
@@ -112,6 +113,7 @@
typedef __vki_kernel_key_t vki_key_t;
typedef __vki_kernel_suseconds_t vki_suseconds_t;
typedef __vki_kernel_timer_t vki_timer_t;
+typedef __vki_kernel_mqd_t vki_mqd_t;
// [[Nb: it's a bit unclear due to a #ifdef, but I think this is right. --njn]]
typedef __vki_kernel_uid32_t vki_uid_t;
diff --git a/memcheck/tests/scalar.c b/memcheck/tests/scalar.c
index f98e831..723567b 100644
--- a/memcheck/tests/scalar.c
+++ b/memcheck/tests/scalar.c
@@ -1,6 +1,19 @@
#include "../memcheck.h"
#include "scalar.h"
+// Here we are trying to trigger every syscall error (scalar errors and
+// memory errors) for every syscall. We do this by passing a lot of bogus
+// arguments, mostly 0 and 1 (often it's 1 because NULL ptr args often aren't
+// checked for memory errors, or in order to have a non-zero length used
+// with some buffer). So most of the syscalls don't actually succeed and do
+// anything.
+//
+// Occasionally we have to be careful not to cause Valgrind to seg fault in
+// its pre-syscall wrappers; it does so because it can't know in general
+// when memory is unaddressable, and so tries to dereference it when doing
+// PRE_MEM_READ/PRE_MEM_WRITE calls. (Note that Memcheck and Addrcheck will
+// always issue an error message immediately before these seg faults occur).
+
int main(void)
{
// uninitialised, but we know px[0] is 0x0
@@ -1024,24 +1037,34 @@
//SY(__NR_get_thread_area);
// __NR_io_setup 245
- //GO(__NR_io_setup, ".s .m");
- //SY(__NR_io_setup);
+ GO(__NR_io_setup, "2s 1m");
+ SY(__NR_io_setup, x0, x0);
// __NR_io_destroy 246
- //GO(__NR_io_destroy, ".s .m");
- //SY(__NR_io_destroy);
+ {
+ // jump through hoops to prevent the PRE(io_destroy) wrapper crashing.
+ struct fake_aio_ring {
+ unsigned id; /* kernel internal index number */
+ unsigned nr; /* number of io_events */
+ // There are more fields in the real aio_ring, but the 'nr' field is
+ // the only one used by the PRE() wrapper.
+ } ring = { 0, 0 };
+ struct fake_aio_ring* ringptr = ˚
+ GO(__NR_io_destroy, "1s 0m");
+ SY(__NR_io_destroy, x0+&ringptr);
+ }
// __NR_io_getevents 247
- //GO(__NR_io_getevents, ".s .m");
- //SY(__NR_io_getevents);
+ GO(__NR_io_getevents, "5s 2m");
+ SY(__NR_io_getevents, x0, x0, x0+1, x0, x0+1);
// __NR_io_submit 248
- //GO(__NR_io_submit, ".s .m");
- //SY(__NR_io_submit);
+ GO(__NR_io_submit, "3s 1m");
+ SY(__NR_io_submit, x0, x0+1, x0);
// __NR_io_cancel 249
- //GO(__NR_io_cancel, ".s .m");
- //SY(__NR_io_cancel);
+ GO(__NR_io_cancel, "3s 2m");
+ SY(__NR_io_cancel, x0, x0, x0);
// __NR_fadvise64 250
GO(__NR_fadvise64, "n/a");
@@ -1152,28 +1175,28 @@
//SY(__NR_set_mempolicy); // (Not yet handled by Valgrind)
// __NR_mq_open 277
- //GO(__NR_mq_open, ".s .m");
- //SY(__NR_mq_open);
+ GO(__NR_mq_open, "4s 2m");
+ SY(__NR_mq_open, x0, x0+O_CREAT, x0, x0+1);
// __NR_mq_unlink (__NR_mq_open+1)
- //GO(__NR_mq_unlink, ".s .m");
- //SY(__NR_mq_unlink);
+ GO(__NR_mq_unlink, "1s 1m");
+ SY(__NR_mq_unlink, x0);
// __NR_mq_timedsend (__NR_mq_open+2)
- //GO(__NR_mq_timedsend, ".s .m");
- //SY(__NR_mq_timedsend);
+ GO(__NR_mq_timedsend, "5s 2m");
+ SY(__NR_mq_timedsend, x0, x0, x0+1, x0, x0+1);
// __NR_mq_timedreceive (__NR_mq_open+3)
- //GO(__NR_mq_timedreceive, ".s .m");
- //SY(__NR_mq_timedreceive);
-
+ GO(__NR_mq_timedreceive, "5s 3m");
+ SY(__NR_mq_timedreceive, x0, x0, x0+1, x0+1, x0+1);
+
// __NR_mq_notify (__NR_mq_open+4)
- //GO(__NR_mq_notify, ".s .m");
- //SY(__NR_mq_notify);
+ GO(__NR_mq_notify, "2s 1m");
+ SY(__NR_mq_notify, x0, x0+1);
// __NR_mq_getsetattr (__NR_mq_open+5)
- //GO(__NR_mq_getsetattr, ".s .m");
- //SY(__NR_mq_getsetattr);
+ GO(__NR_mq_getsetattr, "3s 2m");
+ SY(__NR_mq_getsetattr, x0, x0+1, x0+1);
// __NR_sys_kexec_load 283
GO(__NR_sys_kexec_load, "ni");
diff --git a/memcheck/tests/scalar.stderr.exp b/memcheck/tests/scalar.stderr.exp
index ef5c795..e01ebe5 100644
--- a/memcheck/tests/scalar.stderr.exp
+++ b/memcheck/tests/scalar.stderr.exp
@@ -1628,7 +1628,7 @@
by 0x........: ...
Address 0x........ is 0 bytes after a block of size 4 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: main (scalar.c:7)
+ by 0x........: main (scalar.c:20)
Syscall param sigprocmask(oldset) points to unaddressable byte(s)
at 0x........: syscall (in /...libc...)
@@ -1636,7 +1636,7 @@
by 0x........: ...
Address 0x........ is 0 bytes after a block of size 4 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: main (scalar.c:7)
+ by 0x........: main (scalar.c:20)
-----------------------------------------------------
127: __NR_create_module ni
-----------------------------------------------------
@@ -3678,6 +3678,127 @@
by 0x........: ...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
-----------------------------------------------------
+245: __NR_io_setup 2s 1m
+-----------------------------------------------------
+
+Syscall param io_setup(nr_events) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_setup(ctxp) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_setup(ctxp) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
+246: __NR_io_destroy 1s 0m
+-----------------------------------------------------
+
+Syscall param io_destroy(ctx) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+-----------------------------------------------------
+247: __NR_io_getevents 5s 2m
+-----------------------------------------------------
+
+Syscall param io_getevents(ctx_id) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_getevents(min_nr) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_getevents(nr) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_getevents(events) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_getevents(timeout) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_getevents(events) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param io_getevents(timeout) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
+248: __NR_io_submit 3s 1m
+-----------------------------------------------------
+
+Syscall param io_submit(ctx_id) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_submit(nr) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_submit(iocbpp) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_submit(iocbpp) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
+249: __NR_io_cancel 3s 2m
+-----------------------------------------------------
+
+Syscall param io_cancel(ctx_id) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_cancel(iocb) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_cancel(result) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param io_cancel(iocb) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param io_cancel(result) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
250: __NR_fadvise64 n/a
-----------------------------------------------------
-----------------------------------------------------
@@ -3890,6 +4011,196 @@
276: __NR_set_mempolicy n/a
-----------------------------------------------------
-----------------------------------------------------
+277: __NR_mq_open 4s 2m
+-----------------------------------------------------
+
+Syscall param mq_open(name) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_open(oflag) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_open(mode) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_open(attr) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_open(name) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param mq_open(attr->mq_maxmsg) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param mq_open(attr->mq_msgsize) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
+278: __NR_mq_unlink 1s 1m
+-----------------------------------------------------
+
+Syscall param mq_unlink(name) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_unlink(name) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
+279: __NR_mq_timedsend 5s 2m
+-----------------------------------------------------
+
+Syscall param mq_timedsend(mqdes) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedsend(msg_ptr) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedsend(msg_len) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedsend(msg_prio) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedsend(abs_timeout) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedsend(msg_ptr) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param mq_timedsend(abs_timeout) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
+280:__NR_mq_timedreceive 5s 3m
+-----------------------------------------------------
+
+Syscall param mq_timedreceive(mqdes) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedreceive(msg_ptr) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedreceive(msg_len) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedreceive(msg_prio) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedreceive(abs_timeout) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_timedreceive(msg_ptr) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param mq_timedreceive(msg_prio) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param mq_timedreceive(abs_timeout) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
+281: __NR_mq_notify 2s 1m
+-----------------------------------------------------
+
+Syscall param mq_notify(mqdes) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_notify(notification) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_notify(notification) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
+282: __NR_mq_getsetattr 3s 2m
+-----------------------------------------------------
+
+Syscall param mq_getsetattr(mqdes) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_getsetattr(mqstat) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_getsetattr(omqstat) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mq_getsetattr(mqstat->mq_flags) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param mq_getsetattr(omqstat) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+-----------------------------------------------------
283: __NR_sys_kexec_load ni
-----------------------------------------------------
-----------------------------------------------------