Skip to content

Commit

Permalink
Illumos #3120 zinject hangs in zfsdev_ioctl() due to uninitialized zc
Browse files Browse the repository at this point in the history
3120 zinject hangs in zfsdev_ioctl() due to uninitialized zc

Reviewed by: Richard Lowe <[email protected]>
Reviewed by: Eric Schrock <[email protected]>
Reviewed by: Matthew Ahrens <[email protected]>
Approved by: Richard Lowe <[email protected]>

References:
  https://www.illumos.org/issues/3120
  illumos/illumos-gate@f4c46b1

Ported-by: Brian Behlendorf <[email protected]>
Closes #2152
  • Loading branch information
Yuri Pankov authored and behlendorf committed Mar 24, 2014
1 parent a15dac4 commit d3773fd
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions cmd/zinject/zinject.c
Original file line number Diff line number Diff line change
Expand Up @@ -295,11 +295,9 @@ static int
iter_handlers(int (*func)(int, const char *, zinject_record_t *, void *),
void *data)
{
zfs_cmd_t zc;
zfs_cmd_t zc = {"\0"};
int ret;

zc.zc_guid = 0;

while (ioctl(zfs_fd, ZFS_IOC_INJECT_LIST_NEXT, &zc) == 0)
if ((ret = func((int)zc.zc_guid, zc.zc_name,
&zc.zc_inject_record, data)) != 0)
Expand Down Expand Up @@ -422,7 +420,7 @@ static int
cancel_one_handler(int id, const char *pool, zinject_record_t *record,
void *data)
{
zfs_cmd_t zc;
zfs_cmd_t zc = {"\0"};

zc.zc_guid = (uint64_t)id;

Expand Down Expand Up @@ -455,7 +453,7 @@ cancel_all_handlers(void)
static int
cancel_handler(int id)
{
zfs_cmd_t zc;
zfs_cmd_t zc = {"\0"};

zc.zc_guid = (uint64_t)id;

Expand All @@ -477,7 +475,7 @@ static int
register_handler(const char *pool, int flags, zinject_record_t *record,
int quiet)
{
zfs_cmd_t zc;
zfs_cmd_t zc = {"\0"};

(void) strcpy(zc.zc_name, pool);
zc.zc_inject_record = *record;
Expand Down Expand Up @@ -534,7 +532,7 @@ register_handler(const char *pool, int flags, zinject_record_t *record,
int
perform_action(const char *pool, zinject_record_t *record, int cmd)
{
zfs_cmd_t zc;
zfs_cmd_t zc = {"\0"};

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

0 comments on commit d3773fd

Please sign in to comment.