aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLutz Donnerhacke <donner@FreeBSD.org>2021-05-04 19:20:39 +0000
committerLutz Donnerhacke <donner@FreeBSD.org>2021-06-10 09:35:21 +0000
commitb57a593cb2d69a684e4be04e8cea7fe7a7f43b24 (patch)
tree6ee9e7e3a0de50154b5b93c2337f45daf50a2e9b
parent90e161ec6d1127f30f92bf0b8c59dd4bd5a8bc26 (diff)
downloadsrc-b57a593cb2d69a684e4be04e8cea7fe7a7f43b24.tar.gz
src-b57a593cb2d69a684e4be04e8cea7fe7a7f43b24.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 Differential Revision: https://reviews.freebsd.org/D30110 (cherry picked from commit 0345fd891fe13a191fc0fae9463ea9458bfaff5a)
-rw-r--r--sys/netgraph/ng_base.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/netgraph/ng_base.c b/sys/netgraph/ng_base.c
index 065a539a7eec..b39c1b831b31 100644
--- a/sys/netgraph/ng_base.c
+++ b/sys/netgraph/ng_base.c
@@ -854,6 +854,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] == ':')