Skip to content

Commit d3773fd

Browse files
Yuri Pankovbehlendorf
authored andcommitted
Illumos #3120 zinject hangs in zfsdev_ioctl() due to uninitialized zc
3120 zinject hangs in zfsdev_ioctl() due to uninitialized zc Reviewed by: Richard Lowe <richlowe@richlowe.net> Reviewed by: Eric Schrock <eric.schrock@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Approved by: Richard Lowe <richlowe@richlowe.net> References: https://www.illumos.org/issues/3120 illumos/illumos-gate@f4c46b1 Ported-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #2152
1 parent a15dac4 commit d3773fd

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

cmd/zinject/zinject.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -295,11 +295,9 @@ static int
295295
iter_handlers(int (*func)(int, const char *, zinject_record_t *, void *),
296296
void *data)
297297
{
298-
zfs_cmd_t zc;
298+
zfs_cmd_t zc = {"\0"};
299299
int ret;
300300

301-
zc.zc_guid = 0;
302-
303301
while (ioctl(zfs_fd, ZFS_IOC_INJECT_LIST_NEXT, &zc) == 0)
304302
if ((ret = func((int)zc.zc_guid, zc.zc_name,
305303
&zc.zc_inject_record, data)) != 0)
@@ -422,7 +420,7 @@ static int
422420
cancel_one_handler(int id, const char *pool, zinject_record_t *record,
423421
void *data)
424422
{
425-
zfs_cmd_t zc;
423+
zfs_cmd_t zc = {"\0"};
426424

427425
zc.zc_guid = (uint64_t)id;
428426

@@ -455,7 +453,7 @@ cancel_all_handlers(void)
455453
static int
456454
cancel_handler(int id)
457455
{
458-
zfs_cmd_t zc;
456+
zfs_cmd_t zc = {"\0"};
459457

460458
zc.zc_guid = (uint64_t)id;
461459

@@ -477,7 +475,7 @@ static int
477475
register_handler(const char *pool, int flags, zinject_record_t *record,
478476
int quiet)
479477
{
480-
zfs_cmd_t zc;
478+
zfs_cmd_t zc = {"\0"};
481479

482480
(void) strcpy(zc.zc_name, pool);
483481
zc.zc_inject_record = *record;
@@ -534,7 +532,7 @@ register_handler(const char *pool, int flags, zinject_record_t *record,
534532
int
535533
perform_action(const char *pool, zinject_record_t *record, int cmd)
536534
{
537-
zfs_cmd_t zc;
535+
zfs_cmd_t zc = {"\0"};
538536

539537
ASSERT(cmd == VDEV_STATE_DEGRADED || cmd == VDEV_STATE_FAULTED);
540538
(void) strlcpy(zc.zc_name, pool, sizeof (zc.zc_name));

0 commit comments

Comments
 (0)