aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorEdward Tomasz Napierala <trasz@FreeBSD.org>2020-12-29 14:29:54 +0000
committerEdward Tomasz Napierala <trasz@FreeBSD.org>2020-12-29 14:29:59 +0000
commit123019739c905a0d3b3c8b47ab62817f5938b684 (patch)
treef22c01398dcf5f3a3a8fbb7120c3725700c819ea /sys
parent3e404b8c53db56bdb0aca6a491b095266326211c (diff)
downloadsrc-123019739c905a0d3b3c8b47ab62817f5938b684.tar.gz
src-123019739c905a0d3b3c8b47ab62817f5938b684.zip
geom(4): make g_newprovider_event() return if G_P_WITHER is set
This fixes a failed assertion in scenario where the provider disappears, disk_gone() gets called, and at the exact same time something else closes the device node triggering a retaste. Reviewed By: mav Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D27330
Diffstat (limited to 'sys')
-rw-r--r--sys/geom/geom_subr.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/geom/geom_subr.c b/sys/geom/geom_subr.c
index c46eebf9e329..2f7ea7754f7b 100644
--- a/sys/geom/geom_subr.c
+++ b/sys/geom/geom_subr.c
@@ -575,8 +575,8 @@ g_new_provider_event(void *arg, int flag)
return;
pp = arg;
G_VALID_PROVIDER(pp);
- KASSERT(!(pp->flags & G_PF_WITHER),
- ("g_new_provider_event but withered"));
+ if ((pp->flags & G_PF_WITHER) != 0)
+ return;
LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, next_cp) {
if ((cp->flags & G_CF_ORPHAN) == 0 &&
cp->geom->attrchanged != NULL)