mirror_zfs/cmd/zed
Matthew Ahrens 4b5c9d9f97 zed crashes when devid not present
zed core dumps due to a NULL pointer in zfs_agent_iter_vdev(). The
gs_devid is NULL, but the nvl has a "devid" entry.

zfs_agent_post_event() checks that ZFS_EV_VDEV_GUID or DEV_IDENTIFIER is
present in nvl, but then later it and zfs_agent_iter_vdev() assume that
DEV_IDENTIFIER is present and thus gs_devid is set.

Typically this is not a problem because usually either all vdevs have
devid's, or none of them do. Since zfs_agent_iter_vdev() first checks if
the vdev has devid before dereferencing gs_devid, the problem isn't
typically encountered. However, if some vdevs have devid's and some do
not, then the problem is easily reproduced.  This can happen if the pool
has been moved from a system that has devid's to one that does not.

The fix is for zfs_agent_iter_vdev() to only try to match the devid's if
both nvl and gsp have devid's present.

Reviewed-by: Prashanth Sreenivasa <pks@delphix.com>
Reviewed-by: Don Brady <don.brady@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
External-issue: DLPX-65090
Closes #9054
Closes #9060
2019-07-26 12:07:48 -07:00
..
agents zed crashes when devid not present 2019-07-26 12:07:48 -07:00
zed.d Enable zfs-mount-generator by default 2019-07-15 16:31:57 -07:00
.gitignore Initial implementation of zed (ZFS Event Daemon) 2014-04-02 13:10:03 -07:00
Makefile.am Fix out-of-tree build failures 2019-06-24 09:32:47 -07:00
zed_conf.c Add scrub after resilver zed script 2018-02-23 11:38:05 -08:00
zed_conf.h Add scrub after resilver zed script 2018-02-23 11:38:05 -08:00
zed_disk_event.c Add libzutil for libzfs or libzpool consumers 2018-11-05 11:22:33 -08:00
zed_disk_event.h Bring over illumos ZFS FMA logic -- phase 1 2016-09-01 11:39:45 -07:00
zed_event.c Add scrub after resilver zed script 2018-02-23 11:38:05 -08:00
zed_event.h Update ZED copyright boilerplate 2015-05-11 15:07:00 -07:00
zed_exec.c Fix spelling 2017-01-03 11:31:18 -06:00
zed_exec.h Update ZED copyright boilerplate 2015-05-11 15:07:00 -07:00
zed_file.c Update ZED copyright boilerplate 2015-05-11 15:07:00 -07:00
zed_file.h Update ZED copyright boilerplate 2015-05-11 15:07:00 -07:00
zed_log.c Add missing includes to zed_log.c 2017-04-12 08:57:25 -07:00
zed_log.h Update ZED copyright boilerplate 2015-05-11 15:07:00 -07:00
zed_strings.c Use cstyle -cpP in make cstyle check 2016-12-12 10:46:26 -08:00
zed_strings.h Use cstyle -cpP in make cstyle check 2016-12-12 10:46:26 -08:00
zed.c Use cstyle -cpP in make cstyle check 2016-12-12 10:46:26 -08:00
zed.h Update ZED copyright boilerplate 2015-05-11 15:07:00 -07:00