diff options
author | Lutz Donnerhacke <donner@FreeBSD.org> | 2021-05-04 19:20:39 +0000 |
---|---|---|
committer | Lutz Donnerhacke <donner@FreeBSD.org> | 2021-06-04 09:20:19 +0000 |
commit | 0345fd891fe13a191fc0fae9463ea9458bfaff5a (patch) | |
tree | 802216191c3703b4fae68df759624dad7e8e4ab3 | |
parent | 9b236631b1ec50e90bef1995aff68fed65b21be5 (diff) | |
download | src-0345fd891fe13a191fc0fae9463ea9458bfaff5a.tar.gz src-0345fd891fe13a191fc0fae9463ea9458bfaff5a.zip |
netgraph/ng_base: Renaming a node to the same name is a noop
Detailed analysis in https://github.com/genneko/freebsd-vimage-jails/issues/2
brought the problem down to a double call of ng_node_name() before and
after a vnet move. Because the name of the node is already known
(occupied by itself), the second call fails.
PR: 241954
Reported by: Paul Armstrong
MFC: 1 week
Differential Revision: https://reviews.freebsd.org/D30110
-rw-r--r-- | sys/netgraph/ng_base.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/netgraph/ng_base.c b/sys/netgraph/ng_base.c index 63bc251f52f9..ae179cf13a45 100644 --- a/sys/netgraph/ng_base.c +++ b/sys/netgraph/ng_base.c @@ -855,6 +855,10 @@ ng_name_node(node_p node, const char *name) node_p node2; int i; + /* Rename without change is a noop */ + if (strcmp(NG_NODE_NAME(node), name) == 0) + return (0); + /* Check the name is valid */ for (i = 0; i < NG_NODESIZ; i++) { if (name[i] == '\0' || name[i] == '.' || name[i] == ':') |