]> git.proxmox.com Git - mirror_zfs.git/commit - module/zfs/spa.c
Cleanup spa_export_common()
authorRichard Yao <richard.yao@alumni.stonybrook.edu>
Tue, 27 Sep 2022 23:45:51 +0000 (19:45 -0400)
committerGitHub <noreply@github.com>
Tue, 27 Sep 2022 23:45:51 +0000 (16:45 -0700)
commit88b199c24e789f3680193d2f41101f75efd8803f
treea820c014c5d0bceeb809a433f5bedde4a93364eb
parent31b4e008f13fe00c5619fee06c6502d417448bd5
Cleanup spa_export_common()

Coverity complains about a possible NULL pointer dereference. This is
impossible, but it suspects it because we do a NULL check against
`spa->spa_root_vdev`. This NULL check was never necessary and makes the
code harder to understand, so we drop it.

In particular, we dereference `spa->spa_root_vdev` when `new_state !=
POOL_STATE_UNINITIALIZED && !hardforce`. The first is only true when
spa_reset is called, which only occurs under fault injection.  The
second is true unless `zpool export -F $POOLNAME` is used.  Therefore,
we effectively *always* dereference the pointer. In the cases where we
do not, there is no reason to think it is unsafe.  Therefore this change
is safe to make.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #13905
module/zfs/spa.c