It is unclear why in6_pcblookup_local() would require write access

to the PCB hash.  The function doesn't modify the hash. It always
asserted write lock historically, but with epoch conversion this
fails in some special cases.

Reviewed by:	rwatson, bz
Reported-by:	syzbot+0b0488ca537e20cb2429@syzkaller.appspotmail.com
This commit is contained in:
Gleb Smirnoff 2019-11-11 06:28:25 +00:00
parent f2cb29075f
commit c17cd08f53
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=354607

View File

@ -714,7 +714,7 @@ in6_pcblookup_local(struct inpcbinfo *pcbinfo, struct in6_addr *laddr,
KASSERT((lookupflags & ~(INPLOOKUP_WILDCARD)) == 0,
("%s: invalid lookup flags %d", __func__, lookupflags));
INP_HASH_WLOCK_ASSERT(pcbinfo);
INP_HASH_LOCK_ASSERT(pcbinfo);
if ((lookupflags & INPLOOKUP_WILDCARD) == 0) {
struct inpcbhead *head;