summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@strace.io>2022-11-27 08:00:00 +0000
committerDmitry V. Levin <ldv@strace.io>2022-11-27 08:00:00 +0000
commit3539e8561b98482ace40e442937840727b193633 (patch)
tree94d3761b2b685fe103fd890f9d255fce53439be1
parent3fdfc049a1cd66d6d81826a1d726e12c6b851f16 (diff)
downloadstrace-3539e8561b98482ace40e442937840727b193633.tar.gz
dm: decode dm_ioctl as a pseudoarray
Somewhat similar to netlink messages, dm_ioctl data is a struct dm_ioctl header followed by payload. * src/dm.c (dm_decode_dm_target_spec, dm_decode_dm_target_deps, dm_decode_dm_name_list, dm_decode_dm_target_versions, dm_decode_dm_target_msg, dm_decode_string): Use tprint_array_next to print separator between payload records. (dm_decode_header, dm_decode_payload): New functions. (dm_known_ioctl): Use them. * tests/ioctl_dm.c (main): Update expected output.
-rw-r--r--src/dm.c208
-rw-r--r--tests/ioctl_dm.c164
2 files changed, 194 insertions, 178 deletions
diff --git a/src/dm.c b/src/dm.c
index 9a1ab3005..f48c706aa 100644
--- a/src/dm.c
+++ b/src/dm.c
@@ -99,6 +99,68 @@ dm_decode_flags(const struct dm_ioctl *ioc)
PRINT_FIELD_FLAGS(*ioc, flags, dm_flags, "DM_???");
}
+static bool
+dm_ioctl_has_params(const unsigned int code)
+{
+ switch (code) {
+ case DM_VERSION:
+ case DM_REMOVE_ALL:
+ case DM_DEV_CREATE:
+ case DM_DEV_REMOVE:
+ case DM_DEV_SUSPEND:
+ case DM_DEV_STATUS:
+ case DM_TABLE_CLEAR:
+ case DM_DEV_ARM_POLL:
+ return false;
+ }
+
+ return true;
+}
+
+static bool
+dm_decode_header(struct tcb *const tcp, const unsigned int code,
+ const kernel_ulong_t arg, const struct dm_ioctl *const ioc)
+{
+ bool rc = false;
+
+ tprint_struct_begin();
+ /*
+ * device mapper code uses %d in some places and %u in another, but
+ * fields themselves are declared as __u32.
+ */
+ PRINT_FIELD_U_ARRAY(*ioc, version);
+ /*
+ * if we use a different version of ABI, do not attempt to decode
+ * ioctl fields
+ */
+ if (ioc->version[0] != DM_VERSION_MAJOR) {
+ tprints_comment("unsupported device mapper ABI version");
+ goto skip;
+ }
+
+ tprint_struct_next();
+ PRINT_FIELD_U(*ioc, data_size);
+
+ if (ioc->data_size < offsetof(struct dm_ioctl, data)) {
+ tprints_comment("data_size too small");
+ goto skip;
+ }
+
+ if (dm_ioctl_has_params(code)) {
+ tprint_struct_next();
+ PRINT_FIELD_U(*ioc, data_start);
+ }
+
+ dm_decode_device(code, ioc);
+ dm_decode_values(tcp, code, ioc);
+ dm_decode_flags(ioc);
+ rc = true;
+
+ skip:
+ tprint_struct_end();
+ return rc;
+}
+
static void
dm_decode_dm_target_spec(struct tcb *const tcp, const kernel_ulong_t addr,
const struct dm_ioctl *const ioc)
@@ -110,7 +172,7 @@ dm_decode_dm_target_spec(struct tcb *const tcp, const kernel_ulong_t addr,
if (abbrev(tcp)) {
if (ioc->target_count) {
- tprints(", ");
+ tprint_array_next();
tprint_more_data_follows();
}
@@ -118,7 +180,7 @@ dm_decode_dm_target_spec(struct tcb *const tcp, const kernel_ulong_t addr,
}
for (uint32_t i = 0; i < ioc->target_count; ++i) {
- tprints(", ");
+ tprint_array_next();
if (i && offset <= offset_end)
goto misplaced;
@@ -187,7 +249,7 @@ dm_decode_dm_target_deps(struct tcb *const tcp, const kernel_ulong_t addr,
if (ioc->data_start == ioc->data_size)
return;
- tprints(", ");
+ tprint_array_next();
if (abbrev(tcp)) {
tprint_more_data_follows();
@@ -245,13 +307,13 @@ dm_decode_dm_name_list(struct tcb *const tcp, const kernel_ulong_t addr,
return;
if (abbrev(tcp)) {
- tprint_struct_next();
+ tprint_array_next();
tprint_more_data_follows();
return;
}
for (uint32_t count = 0;; ++count) {
- tprints(", ");
+ tprint_array_next();
if (count && offset <= offset_end)
goto misplaced;
@@ -335,13 +397,13 @@ dm_decode_dm_target_versions(struct tcb *const tcp, const kernel_ulong_t addr,
return;
if (abbrev(tcp)) {
- tprint_struct_next();
+ tprint_array_next();
tprint_more_data_follows();
return;
}
for (uint32_t count = 0;; ++count) {
- tprints(", ");
+ tprint_array_next();
if (count && offset <= offset_end)
goto misplaced;
@@ -387,7 +449,7 @@ dm_decode_dm_target_msg(struct tcb *const tcp, const kernel_ulong_t addr,
if (ioc->data_start == ioc->data_size)
return;
- tprints(", ");
+ tprint_array_next();
if (abbrev(tcp)) {
tprint_more_data_follows();
@@ -422,7 +484,7 @@ static void
dm_decode_string(struct tcb *const tcp, const kernel_ulong_t addr,
const struct dm_ioctl *const ioc)
{
- tprints(", ");
+ tprint_array_next();
if (abbrev(tcp)) {
tprint_more_data_follows();
@@ -432,31 +494,55 @@ dm_decode_string(struct tcb *const tcp, const kernel_ulong_t addr,
uint32_t offset = ioc->data_start;
if (offset <= ioc->data_size) {
+ tprint_struct_begin();
tprints_field_name("string");
printstr_ex(tcp, addr + offset, ioc->data_size - offset,
QUOTE_0_TERMINATED);
+ tprint_struct_end();
} else {
tprint_unavailable();
tprints_comment("misplaced string");
}
}
-static bool
-dm_ioctl_has_params(const unsigned int code)
+static void
+dm_decode_payload(struct tcb *const tcp, const unsigned int code,
+ const kernel_ulong_t arg, const struct dm_ioctl *const ioc)
{
switch (code) {
- case DM_VERSION:
- case DM_REMOVE_ALL:
- case DM_DEV_CREATE:
- case DM_DEV_REMOVE:
- case DM_DEV_SUSPEND:
- case DM_DEV_STATUS:
- case DM_TABLE_CLEAR:
- case DM_DEV_ARM_POLL:
- return false;
+ case DM_DEV_WAIT:
+ case DM_TABLE_STATUS:
+ if (exiting(tcp) && !syserror(tcp))
+ dm_decode_dm_target_spec(tcp, arg, ioc);
+ break;
+ case DM_TABLE_LOAD:
+ if (entering(tcp))
+ dm_decode_dm_target_spec(tcp, arg, ioc);
+ break;
+ case DM_TABLE_DEPS:
+ if (exiting(tcp) && !syserror(tcp))
+ dm_decode_dm_target_deps(tcp, arg, ioc);
+ break;
+ case DM_LIST_DEVICES:
+ if (exiting(tcp) && !syserror(tcp))
+ dm_decode_dm_name_list(tcp, arg, ioc);
+ break;
+ case DM_LIST_VERSIONS:
+ if (exiting(tcp) && !syserror(tcp))
+ dm_decode_dm_target_versions(tcp, arg, ioc);
+ break;
+ case DM_TARGET_MSG:
+ if (entering(tcp))
+ dm_decode_dm_target_msg(tcp, arg, ioc);
+ else if (!syserror(tcp) && ioc->flags & DM_DATA_OUT_FLAG)
+ dm_decode_string(tcp, arg, ioc);
+ break;
+ case DM_DEV_RENAME:
+ case DM_DEV_SET_GEOMETRY:
+ if (entering(tcp))
+ dm_decode_string(tcp, arg, ioc);
+ break;
}
-
- return true;
}
static int
@@ -510,81 +596,11 @@ dm_known_ioctl(struct tcb *const tcp, const unsigned int code,
else
tprint_value_changed();
- tprint_struct_begin();
- /*
- * device mapper code uses %d in some places and %u in another, but
- * fields themselves are declared as __u32.
- */
- PRINT_FIELD_U_ARRAY(*ioc, version);
- /*
- * if we use a different version of ABI, do not attempt to decode
- * ioctl fields
- */
- if (ioc->version[0] != DM_VERSION_MAJOR) {
- tprints_comment("unsupported device mapper ABI version");
- goto skip;
- }
-
- tprint_struct_next();
- PRINT_FIELD_U(*ioc, data_size);
-
- if (ioc->data_size < offsetof(struct dm_ioctl, data)) {
- tprints_comment("data_size too small");
- goto skip;
- }
-
- if (dm_ioctl_has_params(code)) {
- tprint_struct_next();
- PRINT_FIELD_U(*ioc, data_start);
- }
-
- dm_decode_device(code, ioc);
- dm_decode_values(tcp, code, ioc);
- dm_decode_flags(ioc);
-
- switch (code) {
- case DM_DEV_WAIT:
- case DM_TABLE_STATUS:
- if (entering(tcp) || syserror(tcp))
- break;
- dm_decode_dm_target_spec(tcp, arg, ioc);
- break;
- case DM_TABLE_LOAD:
- if (exiting(tcp))
- break;
- dm_decode_dm_target_spec(tcp, arg, ioc);
- break;
- case DM_TABLE_DEPS:
- if (entering(tcp) || syserror(tcp))
- break;
- dm_decode_dm_target_deps(tcp, arg, ioc);
- break;
- case DM_LIST_DEVICES:
- if (entering(tcp) || syserror(tcp))
- break;
- dm_decode_dm_name_list(tcp, arg, ioc);
- break;
- case DM_LIST_VERSIONS:
- if (entering(tcp) || syserror(tcp))
- break;
- dm_decode_dm_target_versions(tcp, arg, ioc);
- break;
- case DM_TARGET_MSG:
- if (entering(tcp))
- dm_decode_dm_target_msg(tcp, arg, ioc);
- else if (!syserror(tcp) && ioc->flags & DM_DATA_OUT_FLAG)
- dm_decode_string(tcp, arg, ioc);
- break;
- case DM_DEV_RENAME:
- case DM_DEV_SET_GEOMETRY:
- if (exiting(tcp))
- break;
- dm_decode_string(tcp, arg, ioc);
- break;
- }
+ tprint_array_begin();
+ if (dm_decode_header(tcp, code, arg, ioc))
+ dm_decode_payload(tcp, code, arg, ioc);
+ tprint_array_end();
- skip:
- tprint_struct_end();
return entering(tcp) ? 0 : RVAL_IOCTL_DECODED;
}
diff --git a/tests/ioctl_dm.c b/tests/ioctl_dm.c
index c38e10494..2ef9a8ef1 100644
--- a/tests/ioctl_dm.c
+++ b/tests/ioctl_dm.c
@@ -210,33 +210,33 @@ main(void)
dm_arg->version[1] = 0xbadc0dee;
dm_arg->version[2] = 0xbadc0def;
ioctl(-1, DM_VERSION, dm_arg);
- printf("ioctl(-1, DM_VERSION, {version=[%u, %u, %u]"
- " /* unsupported device mapper ABI version */}) = "
+ printf("ioctl(-1, DM_VERSION, [{version=[%u, %u, %u]"
+ " /* unsupported device mapper ABI version */}]) = "
"-1 EBADF (%m)\n", 0xbadc0ded, 0xbadc0dee, 0xbadc0def);
/* Incorrect data_size */
init_s(dm_arg, 14, 64);
ioctl(-1, DM_VERSION, dm_arg);
- printf("ioctl(-1, DM_VERSION, {version=[4, 1, 2], data_size=14"
- " /* data_size too small */}) = -1 EBADF (%m)\n");
+ printf("ioctl(-1, DM_VERSION, [{version=[4, 1, 2], data_size=14"
+ " /* data_size too small */}]) = -1 EBADF (%m)\n");
/* Unterminated name/uuid */
init_s(dm_arg, min_sizeof_dm_ioctl, 0);
memcpy(dm_arg->name, str129, sizeof(dm_arg->name));
memcpy(dm_arg->uuid, str129, sizeof(dm_arg->uuid));
ioctl(-1, DM_VERSION, dm_arg);
- printf("ioctl(-1, DM_VERSION, {version=[4, 1, 2], data_size=%zu, "
+ printf("ioctl(-1, DM_VERSION, [{version=[4, 1, 2], data_size=%zu, "
"dev=makedev(0x12, 0x34), name=\"%.127s\"..., uuid=\"%.128s\"..., "
- "flags=0}) = -1 EBADF (%m)\n",
+ "flags=0}]) = -1 EBADF (%m)\n",
min_sizeof_dm_ioctl, str129, str129);
/* Normal call */
init_s(dm_arg, min_sizeof_dm_ioctl, 0);
ioctl(-1, DM_VERSION, dm_arg);
printf("ioctl(-1, DM_VERSION, "
- "{version=[4, 1, 2], data_size=%zu, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}) = "
- "-1 EBADF (%m)\n", min_sizeof_dm_ioctl);
+ "[{version=[4, 1, 2], data_size=%zu, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}])"
+ " = -1 EBADF (%m)\n", min_sizeof_dm_ioctl);
/* Zero dev, name, uuid */
init_s(dm_arg, min_sizeof_dm_ioctl, 0);
@@ -246,7 +246,7 @@ main(void)
dm_arg->uuid[0] = '\0';
ioctl(-1, DM_VERSION, dm_arg);
printf("ioctl(-1, DM_VERSION, "
- "{version=[4, 1, 2], data_size=%u, flags=0}) = "
+ "[{version=[4, 1, 2], data_size=%u, flags=0}]) = "
"-1 EBADF (%m)\n", 0xfacefeed);
/* Flag */
@@ -254,7 +254,7 @@ main(void)
dm_arg->flags = 0xffffffff;
ioctl(-1, DM_VERSION, dm_arg);
printf("ioctl(-1, DM_VERSION, "
- "{version=[4, 1, 2], data_size=%zu, "
+ "[{version=[4, 1, 2], data_size=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags="
"DM_READONLY_FLAG|DM_SUSPEND_FLAG|DM_EXISTS_FLAG|"
"DM_PERSISTENT_DEV_FLAG|DM_STATUS_TABLE_FLAG|"
@@ -263,15 +263,15 @@ main(void)
"DM_NOFLUSH_FLAG|DM_QUERY_INACTIVE_TABLE_FLAG|"
"DM_UEVENT_GENERATED_FLAG|DM_UUID_FLAG|DM_SECURE_DATA_FLAG|"
"DM_DATA_OUT_FLAG|DM_DEFERRED_REMOVE|DM_INTERNAL_SUSPEND_FLAG|"
- "DM_IMA_MEASUREMENT_FLAG|0xfff00080}) = -1 EBADF (%m)\n",
+ "DM_IMA_MEASUREMENT_FLAG|0xfff00080}]) = -1 EBADF (%m)\n",
min_sizeof_dm_ioctl);
/* Normal call */
init_s(&s.ioc, sizeof(s.ioc), 0);
ioctl(-1, DM_VERSION, &s);
printf("ioctl(-1, DM_VERSION, "
- "{version=[4, 1, 2], data_size=%zu, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}) = "
+ "[{version=[4, 1, 2], data_size=%zu, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}]) = "
"-1 EBADF (%m)\n", sizeof(s.ioc));
@@ -281,8 +281,8 @@ main(void)
for (unsigned int i = 0; i < ARRAY_SIZE(dummy_check_cmds_nodev); ++i) {
init_s(dm_arg, min_sizeof_dm_ioctl, 0);
ioctl(-1, dummy_check_cmds_nodev[i].arg, dm_arg);
- printf("ioctl(-1, %s, {version=[4, 1, 2], data_size=%zu%s, "
- "flags=0}) = -1 EBADF (%m)\n",
+ printf("ioctl(-1, %s, [{version=[4, 1, 2], data_size=%zu%s, "
+ "flags=0}]) = -1 EBADF (%m)\n",
dummy_check_cmds_nodev[i].str,
min_sizeof_dm_ioctl,
dummy_check_cmds_nodev[i].has_params ?
@@ -300,9 +300,9 @@ main(void)
for (unsigned int i = 0; i < ARRAY_SIZE(dummy_check_cmds); ++i) {
init_s(dm_arg, min_sizeof_dm_ioctl, 0);
ioctl(-1, dummy_check_cmds[i].arg, dm_arg);
- printf("ioctl(-1, %s, {version=[4, 1, 2], data_size=%zu%s, "
+ printf("ioctl(-1, %s, [{version=[4, 1, 2], data_size=%zu%s, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\"%s, "
- "flags=0}) = -1 EBADF (%m)\n",
+ "flags=0}]) = -1 EBADF (%m)\n",
dummy_check_cmds[i].str, min_sizeof_dm_ioctl,
dummy_check_cmds[i].has_params ? ", data_start=0" : "",
dummy_check_cmds[i].has_event_nr ? ", event_nr=0" : "");
@@ -315,17 +315,17 @@ main(void)
s.ioc.event_nr = 0xbadc0ded;
ioctl(-1, DM_DEV_SUSPEND, &s);
printf("ioctl(-1, DM_DEV_SUSPEND, "
- "{version=[4, 1, 2], data_size=%zu, "
+ "[{version=[4, 1, 2], data_size=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "flags=DM_SUSPEND_FLAG}) = -1 EBADF (%m)\n", sizeof(s.ioc));
+ "flags=DM_SUSPEND_FLAG}]) = -1 EBADF (%m)\n", sizeof(s.ioc));
init_s(&s.ioc, sizeof(s.ioc), 0);
s.ioc.event_nr = 0xbadc0ded;
ioctl(-1, DM_DEV_SUSPEND, &s);
printf("ioctl(-1, DM_DEV_SUSPEND, "
- "{version=[4, 1, 2], data_size=%zu, dev=makedev(0x12, 0x34), "
+ "[{version=[4, 1, 2], data_size=%zu, dev=makedev(0x12, 0x34), "
"name=\"nnn\", uuid=\"uuu\", event_nr=3134983661, "
- "flags=0}) = -1 EBADF (%m)\n", sizeof(s.ioc));
+ "flags=0}]) = -1 EBADF (%m)\n", sizeof(s.ioc));
/* DM_TABLE_LOAD */
@@ -339,16 +339,16 @@ main(void)
strcpy(s.u.ts.target_params, "tparams");
ioctl(-1, DM_TABLE_LOAD, &s);
printf("ioctl(-1, DM_TABLE_LOAD, "
- "{version=[4, 1, 2], data_size=%u, data_start=%u, "
+ "[{version=[4, 1, 2], data_size=%u, data_start=%u, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "target_count=1, flags=0, "
+ "target_count=1, flags=0}, "
#if VERBOSE
"{sector_start=16, length=32, target_type=\"tgt\", "
"string=\"tparams\"}"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n", s.ioc.data_size, s.ioc.data_start);
+ "]) = -1 EBADF (%m)\n", s.ioc.data_size, s.ioc.data_start);
/* No targets */
init_s(dm_arg, min_sizeof_dm_ioctl, min_sizeof_dm_ioctl);
@@ -356,9 +356,9 @@ main(void)
dm_arg->target_count = 0;
ioctl(-1, DM_TABLE_LOAD, dm_arg);
printf("ioctl(-1, DM_TABLE_LOAD, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "target_count=0, flags=0}) = -1 EBADF (%m)\n",
+ "target_count=0, flags=0}]) = -1 EBADF (%m)\n",
sizeof(*dm_arg), min_sizeof_dm_ioctl);
/* Invalid data_start */
@@ -367,15 +367,15 @@ main(void)
dm_arg->target_count = 1234;
ioctl(-1, DM_TABLE_LOAD, dm_arg);
printf("ioctl(-1, DM_TABLE_LOAD, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%u, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%u, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "target_count=1234, flags=0, "
+ "target_count=1234, flags=0}, "
#if VERBOSE
"??? /* misplaced struct dm_target_spec */"
#else
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n", sizeof(*dm_arg), 0xfffffff8);
+ "]) = -1 EBADF (%m)\n", sizeof(*dm_arg), 0xfffffff8);
/* Inaccessible pointer */
init_s(&dm_arg_open1->ioc, offsetof(struct dm_table_open_test, target1),
@@ -384,15 +384,15 @@ main(void)
dm_arg_open1->ioc.target_count = 0xdeaddea1;
ioctl(-1, DM_TABLE_LOAD, dm_arg_open1);
printf("ioctl(-1, DM_TABLE_LOAD, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "target_count=3735936673, flags=0, "
+ "target_count=3735936673, flags=0}, "
#if VERBOSE
"%p"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n", sizeof(*dm_arg_open1),
+ "]) = -1 EBADF (%m)\n", sizeof(*dm_arg_open1),
offsetof(struct dm_table_open_test, target1)
#if VERBOSE
, (char *) dm_arg_open1 +
@@ -412,9 +412,9 @@ main(void)
rc = ioctl(-1, DM_TABLE_LOAD, dm_arg_open2);
errstr = sprintrc(rc);
printf("ioctl(-1, DM_TABLE_LOAD, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "target_count=2, flags=0, ",
+ "target_count=2, flags=0}, ",
sizeof(*dm_arg_open2),
offsetof(struct dm_table_open_test, target1));
#if VERBOSE
@@ -427,7 +427,7 @@ main(void)
#else /* !VERBOSE */
printf("...");
#endif /* VERBOSE */
- printf("}) = %s\n", errstr);
+ printf("]) = %s\n", errstr);
/* Incorrect next */
init_s(&dm_arg_open3->ioc, offsetof(struct dm_table_open_test, target5),
@@ -456,9 +456,9 @@ main(void)
rc = ioctl(-1, DM_TABLE_LOAD, dm_arg_open3);
errstr = sprintrc(rc);
printf("ioctl(-1, DM_TABLE_LOAD, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "target_count=4, flags=0, ",
+ "target_count=4, flags=0}, ",
offsetof(struct dm_table_open_test, target5),
offsetof(struct dm_table_open_test, target0));
#if VERBOSE
@@ -471,7 +471,7 @@ main(void)
#else /* !VERBOSE */
printf("...");
#endif /* VERBOSE */
- printf("}) = %s\n", errstr);
+ printf("]) = %s\n", errstr);
#define FILL_DM_TARGET(id, id_next) \
do { \
@@ -507,9 +507,9 @@ main(void)
rc = ioctl(-1, DM_TABLE_LOAD, dm_arg_open3);
errstr = sprintrc(rc);
printf("ioctl(-1, DM_TABLE_LOAD, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "target_count=3134983661, flags=0, ",
+ "target_count=3134983661, flags=0}, ",
sizeof(*dm_arg_open3),
offsetof(struct dm_table_open_test, target0));
#if VERBOSE
@@ -523,7 +523,7 @@ main(void)
PRINT_DM_TARGET(7);
PRINT_DM_TARGET(8);
#endif /* VERBOSE */
- printf("...}) = %s\n", errstr);
+ printf("...]) = %s\n", errstr);
/* DM_TARGET_MSG */
@@ -533,14 +533,14 @@ main(void)
"long target msg");
ioctl(-1, DM_TARGET_MSG, &s);
printf("ioctl(-1, DM_TARGET_MSG, "
- "{version=[4, 1, 2], data_size=%u, data_start=%u, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0, "
+ "[{version=[4, 1, 2], data_size=%u, data_start=%u, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}, "
#if VERBOSE
"{sector=4660, message=\"long targ\"...}"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
s.ioc.data_size, s.ioc.data_start);
/* Invalid data_start */
@@ -548,14 +548,14 @@ main(void)
dm_arg->data_size = sizeof(*dm_arg);
ioctl(-1, DM_TARGET_MSG, dm_arg);
printf("ioctl(-1, DM_TARGET_MSG, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}, "
#if VERBOSE
"??? /* misplaced struct dm_target_msg */"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
sizeof(*dm_arg), min_sizeof_dm_ioctl);
/* Invalid data_start */
@@ -563,14 +563,14 @@ main(void)
dm_arg->data_size = sizeof(*dm_arg);
ioctl(-1, DM_TARGET_MSG, dm_arg);
printf("ioctl(-1, DM_TARGET_MSG, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%u, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%u, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}, "
#if VERBOSE
"??? /* misplaced struct dm_target_msg */"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
sizeof(*dm_arg), 0xffffffff);
/* Inaccessible pointer */
@@ -579,14 +579,14 @@ main(void)
dm_arg->data_start = sizeof(*dm_arg);
ioctl(-1, DM_TARGET_MSG, dm_arg);
printf("ioctl(-1, DM_TARGET_MSG, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}, "
#if VERBOSE
"%p"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
sizeof(*dm_arg) + sizeof(struct dm_target_msg),
sizeof(*dm_arg)
#if VERBOSE
@@ -602,8 +602,8 @@ main(void)
rc = ioctl(-1, DM_TARGET_MSG, dm_arg_msg);
errstr = sprintrc(rc);
printf("ioctl(-1, DM_TARGET_MSG, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0, ",
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}, ",
sizeof(*dm_arg_msg) + 1,
offsetof(struct dm_target_msg_test, msg));
#if VERBOSE
@@ -614,7 +614,7 @@ main(void)
#else /* !VERBOSE */
printf("...");
#endif /* VERBOSE */
- printf("}) = %s\n", errstr);
+ printf("]) = %s\n", errstr);
/* Zero-sied string */
init_s(&dm_arg_msg->ioc, sizeof(*dm_arg_msg),
@@ -623,8 +623,8 @@ main(void)
rc = ioctl(-1, DM_TARGET_MSG, dm_arg_msg);
errstr = sprintrc(rc);
printf("ioctl(-1, DM_TARGET_MSG, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0, ",
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}, ",
sizeof(*dm_arg_msg), offsetof(struct dm_target_msg_test, msg));
#if VERBOSE
printf("{sector=%" PRI__u64 ", message=\"\"}",
@@ -632,7 +632,7 @@ main(void)
#else /* !VERBOSE */
printf("...");
#endif /* VERBOSE */
- printf("}) = %s\n", errstr);
+ printf("]) = %s\n", errstr);
/* DM_DEV_SET_GEOMETRY */
@@ -640,14 +640,14 @@ main(void)
strcpy(s.u.string, "10 20 30 40");
ioctl(-1, DM_DEV_SET_GEOMETRY, &s);
printf("ioctl(-1, DM_DEV_SET_GEOMETRY, "
- "{version=[4, 1, 2], data_size=%u, data_start=%u, "
- "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0, "
+ "[{version=[4, 1, 2], data_size=%u, data_start=%u, "
+ "dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", flags=0}, "
#if VERBOSE
- "string=\"10 20 30 \"..."
+ "{string=\"10 20 30 \"...}"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
s.ioc.data_size, s.ioc.data_start);
@@ -658,15 +658,15 @@ main(void)
memcpy(unaligned_dm_arg, dm_arg, offsetof(struct dm_ioctl, data));
ioctl(-1, DM_DEV_RENAME, unaligned_dm_arg);
printf("ioctl(-1, DM_DEV_RENAME, "
- "{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
+ "[{version=[4, 1, 2], data_size=%zu, data_start=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
- "flags=0, "
+ "flags=0}, "
#if VERBOSE
- "string=%p"
+ "{string=%p}"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
sizeof(*unaligned_dm_arg), min_sizeof_dm_ioctl
#if VERBOSE
, (char *) unaligned_dm_arg + min_sizeof_dm_ioctl
@@ -678,15 +678,15 @@ main(void)
s.ioc.data_start = 0xdeadbeef;
ioctl(-1, DM_DEV_RENAME, &s);
printf("ioctl(-1, DM_DEV_RENAME, "
- "{version=[4, 1, 2], data_size=%u, data_start=3735928559, "
+ "[{version=[4, 1, 2], data_size=%u, data_start=3735928559, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
- "flags=0, "
+ "flags=0}, "
#if VERBOSE
"??? /* misplaced string */"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
s.ioc.data_size);
/* Strange but still valid data_start */
@@ -695,15 +695,15 @@ main(void)
s.ioc.data_start = offsetof(struct dm_ioctl, name) + 1;
ioctl(-1, DM_DEV_RENAME, &s);
printf("ioctl(-1, DM_DEV_RENAME, "
- "{version=[4, 1, 2], data_size=%u, data_start=%zu, "
+ "[{version=[4, 1, 2], data_size=%u, data_start=%zu, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
- "flags=0, "
+ "flags=0}, "
#if VERBOSE
- "string=\"nn\""
+ "{string=\"nn\"}"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
s.ioc.data_size,
offsetof(struct dm_ioctl, name) + 1);
@@ -712,15 +712,15 @@ main(void)
strcpy(s.u.string, "new long name");
ioctl(-1, DM_DEV_RENAME, &s);
printf("ioctl(-1, DM_DEV_RENAME, "
- "{version=[4, 1, 2], data_size=%u, data_start=%u, "
+ "[{version=[4, 1, 2], data_size=%u, data_start=%u, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
- "flags=0, "
+ "flags=0}, "
#if VERBOSE
- "string=\"new long \"..."
+ "{string=\"new long \"...}"
#else /* !VERBOSE */
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
s.ioc.data_size, s.ioc.data_start);
@@ -729,16 +729,16 @@ main(void)
s.ioc.target_count = -1U;
ioctl(-1, DM_TABLE_LOAD, &s);
printf("ioctl(-1, DM_TABLE_LOAD, "
- "{version=[4, 1, 2], data_size=%u, data_start=%u, "
+ "[{version=[4, 1, 2], data_size=%u, data_start=%u, "
"dev=makedev(0x12, 0x34), name=\"nnn\", uuid=\"uuu\", "
- "target_count=4294967295, flags=0, "
+ "target_count=4294967295, flags=0}, "
#if VERBOSE
"{sector_start=0, length=0, target_type=\"\", string=\"\"}"
", ??? /* misplaced struct dm_target_spec */"
#else
"..."
#endif /* VERBOSE */
- "}) = -1 EBADF (%m)\n",
+ "]) = -1 EBADF (%m)\n",
s.ioc.data_size, s.ioc.data_start);
puts("+++ exited with 0 +++");