3120 zinject hangs in zfsdev_ioctl() due to uninitialized zc
authorYuri Pankov <yuri.pankov@nexenta.com>
Sat, 25 Aug 2012 02:44:53 -0500
changeset 13839 64a1ab954737
parent 13838 6da32a929222
child 13840 8f78aae28a63
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]>
usr/src/cmd/zinject/zinject.c
--- a/usr/src/cmd/zinject/zinject.c	Fri Aug 24 07:12:46 2012 -0700
+++ b/usr/src/cmd/zinject/zinject.c	Sat Aug 25 02:44:53 2012 -0500
@@ -294,11 +294,9 @@
 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)
@@ -421,7 +419,7 @@
 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;
 
@@ -454,7 +452,7 @@
 static int
 cancel_handler(int id)
 {
-	zfs_cmd_t zc;
+	zfs_cmd_t zc = { 0 };
 
 	zc.zc_guid = (uint64_t)id;
 
@@ -476,7 +474,7 @@
 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;
@@ -533,7 +531,7 @@
 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));