aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuri Pankov <[email protected]>2014-03-20 15:21:37 -0700
committerBrian Behlendorf <[email protected]>2014-03-24 11:06:11 -0700
commitd3773fda1434e02587d4848aa18f9657cbfca5bd (patch)
tree3343b9f1c69a86a1a20fcfc6e406428e87c07bb9
parenta15dac42df202bf9e6825a62b81a36ad449ef53f (diff)
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 <[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@f4c46b1eda9212fd32ba197043d52239ef5c0a7f Ported-by: Brian Behlendorf <[email protected]> Closes #2152
-rw-r--r--cmd/zinject/zinject.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/cmd/zinject/zinject.c b/cmd/zinject/zinject.c
index 13d067dc5..f6c89159e 100644
--- a/cmd/zinject/zinject.c
+++ b/cmd/zinject/zinject.c
@@ -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)
@@ -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;
@@ -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;
@@ -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;
@@ -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));