aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2022-06-14 15:27:38 +0000
committerMark Johnston <markj@FreeBSD.org>2022-06-21 12:53:34 +0000
commit14f7dd4744e4ff0e4447fb6b07aea24dbfbda31c (patch)
tree211db5e9ac8cb847847ed13de04f9aca57c1e306
parentc75a5bc2f679d4d4b9324640ea0dfbd716530137 (diff)
rip6: Fix a lock order reversal in rip6_bind()
See also commit 71a1539e3783. Reported by: syzbot+9b461b6a07a83cc10daa@syzkaller.appspotmail.com Reported by: syzbot+b6ce0aec16f5fdab3282@syzkaller.appspotmail.com Reviewed by: glebius Sponsored by: The FreeBSD Foundation (cherry picked from commit a14465e1b9a53d6abf58f42e113c1888ffeebe42)
-rw-r--r--sys/netinet6/raw_ip6.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c
index aaba91c6d5e7..445912c965ba 100644
--- a/sys/netinet6/raw_ip6.c
+++ b/sys/netinet6/raw_ip6.c
@@ -791,11 +791,11 @@ rip6_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
return (EADDRNOTAVAIL);
}
NET_EPOCH_EXIT(et);
- INP_INFO_WLOCK(&V_ripcbinfo);
INP_WLOCK(inp);
+ INP_INFO_WLOCK(&V_ripcbinfo);
inp->in6p_laddr = addr->sin6_addr;
- INP_WUNLOCK(inp);
INP_INFO_WUNLOCK(&V_ripcbinfo);
+ INP_WUNLOCK(inp);
return (0);
}