Skip to content

Commit

Permalink
Illumos openzfs#3120 zinject hangs in zfsdev_ioctl() due to uninitial…
Browse files Browse the repository at this point in the history
…ized 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 openzfs#2152
  • Loading branch information
Yuri Pankov authored and ryao committed Apr 9, 2014
1 parent 8acab11 commit c98d55c
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 c98d55c

Please sign in to comment.