HomeFreeBSD

Fix zfsd with the device_removal pool feature.

Description

Fix zfsd with the device_removal pool feature.

Previously zfsd would crash in the presence of a pool with a
top-level-vdev that had previously been removed. The crash happened
because the configuration nvlist of such a TLV contains an empty
ZPOOL_CONFIG_CHILDREN array, which led to a pop_front from an empty
list, which has undefined behavior.

The crash only happened in stable/14 and later, probably do to
differences in libcxx, but the change should be MFCed anyway.

PR: 273663
Reported by: Marek Zarychta <zarychtam@plan-b.pwste.edu.pl>
Sponsored by: Axcient
Reviewed by: mav
Differential Revision: https://reviews.freebsd.org/D41818
Approved by: gjb (re)

(cherry picked from commit 0b294a386d34f6584848ed52407687df7ae59861)
(cherry picked from commit a39aac5bb8e46b0d9cd77e85be8a65808f8a89ce)

Details

Provenance
asomersAuthored on Sep 12 2023, 1:20 AM
Reviewer
mav
Differential Revision
D41818: Fix zfsd with the device_removal pool feature.
Parents
rGa9326cd7656b: ndp: cope with unresolved neighbours
Branches
Unknown
Tags
Unknown