diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2020-06-05 16:05:09 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2020-06-05 16:05:09 +0000 |
commit | c726a670dfd99130aefeb7243cccb806e3661a94 (patch) | |
tree | 385b2d19c9e045b0b8701680a4f6eb66c26b1661 /sys/geom | |
parent | fc68af7962b9635383388318ff3f2acb4223ee92 (diff) | |
download | src-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.c | 9 |
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); |