Use domain name for socket lock.
authorbluhm <bluhm@openbsd.org>
Thu, 11 Jan 2024 14:15:11 +0000 (14:15 +0000)
committerbluhm <bluhm@openbsd.org>
Thu, 11 Jan 2024 14:15:11 +0000 (14:15 +0000)
commit66bd633ef3ceac8f520e69ac0537c92cf7c0b2e7
treec9b50d1d63d1de62223805499349cea5bceb3f72
parent41ac09096bccd529db79fac5770c7f673c3ebf1c
Use domain name for socket lock.

Syzkaller with witness complains about lock ordering of pf lock
with socket lock.  Socket lock for inet is taken before pf lock.
Pf lock is taken before socket lock for route.  This is a false
positive as route and inet socket locks are distinct.  Witness does
not know this.  Name the socket lock like the domain of the socket,
then rwlock name is used in witness lo_name subtype.  Make domain
names more consistent for locking, they were not used anyway.
Regardless of witness problem, unique lock name for each socket
type make sense.

Reported-by: syzbot+34d22dcbf20d76629c5a@syzkaller.appspotmail.com
Reported-by: syzbot+fde8d07ba74b69d0adfe@syzkaller.appspotmail.com
OK mvs@
sys/kern/uipc_domain.c
sys/kern/uipc_socket.c
sys/kern/uipc_socket2.c
sys/net/pfkeyv2.c
sys/netinet/in_proto.c
sys/netinet6/in6_proto.c
sys/sys/domain.h
sys/sys/protosw.h
sys/sys/socketvar.h