aboutsummaryrefslogtreecommitdiff
path: root/sys/geom
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2020-06-05 16:05:09 +0000
committerConrad Meyer <cem@FreeBSD.org>2020-06-05 16:05:09 +0000
commitc726a670dfd99130aefeb7243cccb806e3661a94 (patch)
tree385b2d19c9e045b0b8701680a4f6eb66c26b1661 /sys/geom
parentfc68af7962b9635383388318ff3f2acb4223ee92 (diff)
downloadsrc-c726a670dfd99130aefeb7243cccb806e3661a94.tar.gz
src-c726a670dfd99130aefeb7243cccb806e3661a94.zip
geom: Don't re-add duplicate aliases
Reviewed by: imp (informal +1; extracted from phab 24968)
Notes
Notes: svn path=/head/; revision=361837
Diffstat (limited to 'sys/geom')
-rw-r--r--sys/geom/geom_subr.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/geom/geom_subr.c b/sys/geom/geom_subr.c
index a5d4a9dcece3..eb3bc9af4153 100644
--- a/sys/geom/geom_subr.c
+++ b/sys/geom/geom_subr.c
@@ -652,6 +652,15 @@ g_provider_add_alias(struct g_provider *pp, const char *fmt, ...)
sbuf_vprintf(sb, fmt, ap);
va_end(ap);
sbuf_finish(sb);
+
+ LIST_FOREACH(gap, &pp->aliases, ga_next) {
+ if (strcmp(gap->ga_alias, sbuf_data(sb)) != 0)
+ continue;
+ /* Don't re-add the same alias. */
+ sbuf_delete(sb);
+ return;
+ }
+
gap = g_malloc(sizeof(*gap) + sbuf_len(sb) + 1, M_WAITOK | M_ZERO);
memcpy((char *)(gap + 1), sbuf_data(sb), sbuf_len(sb));
sbuf_delete(sb);