From: Vitaliy Makkoveev Subject: Merge UNP_BINDING and UNP_CONNECTING flags to UNP_BUSY To: tech@openbsd.org Date: Tue, 19 Mar 2024 13:44:45 +0300 They are redundant because always checked together. These flags are not used outside unix(4) PCB layer, so the change is local. Index: sys/kern/uipc_usrreq.c =================================================================== RCS file: /cvs/src/sys/kern/uipc_usrreq.c,v retrieving revision 1.201 diff -u -p -r1.201 uipc_usrreq.c --- sys/kern/uipc_usrreq.c 17 Mar 2024 19:47:08 -0000 1.201 +++ sys/kern/uipc_usrreq.c 19 Mar 2024 10:37:21 -0000 @@ -329,14 +329,14 @@ uipc_bind(struct socket *so, struct mbuf struct nameidata nd; size_t pathlen; - if (unp->unp_flags & (UNP_BINDING | UNP_CONNECTING)) + if (unp->unp_flags & UNP_BUSY) return (EINVAL); if (unp->unp_vnode != NULL) return (EINVAL); if ((error = unp_nam2sun(nam, &soun, &pathlen))) return (error); - unp->unp_flags |= UNP_BINDING; + unp->unp_flags |= UNP_BUSY; /* * Enforce `i_lock' -> `solock' because fifo subsystem @@ -405,7 +405,7 @@ uipc_bind(struct socket *so, struct mbuf VOP_UNLOCK(vp); out: KERNEL_UNLOCK(); - unp->unp_flags &= ~UNP_BINDING; + unp->unp_flags &= ~UNP_BUSY; return (error); } @@ -415,7 +415,7 @@ uipc_listen(struct socket *so) { struct unpcb *unp = sotounpcb(so); - if (unp->unp_flags & (UNP_BINDING | UNP_CONNECTING)) + if (unp->unp_flags & UNP_BUSY) return (EINVAL); if (unp->unp_vnode == NULL) return (EINVAL); @@ -820,7 +820,7 @@ unp_connect(struct socket *so, struct mb int error; unp = sotounpcb(so); - if (unp->unp_flags & (UNP_BINDING | UNP_CONNECTING)) + if (unp->unp_flags & UNP_BUSY) return (EISCONN); if ((error = unp_nam2sun(nam, &soun, NULL))) return (error); @@ -829,7 +829,7 @@ unp_connect(struct socket *so, struct mb nd.ni_pledge = PLEDGE_UNIX; nd.ni_unveil = UNVEIL_WRITE; - unp->unp_flags |= UNP_CONNECTING; + unp->unp_flags |= UNP_BUSY; /* * Enforce `i_lock' -> `solock' because fifo subsystem @@ -921,7 +921,7 @@ put: unlock: KERNEL_UNLOCK(); solock(so); - unp->unp_flags &= ~UNP_CONNECTING; + unp->unp_flags &= ~UNP_BUSY; /* * The peer socket could be closed by concurrent thread Index: sys/sys/unpcb.h =================================================================== RCS file: /cvs/src/sys/sys/unpcb.h,v retrieving revision 1.45 diff -u -p -r1.45 unpcb.h --- sys/sys/unpcb.h 26 Nov 2022 17:51:18 -0000 1.45 +++ sys/sys/unpcb.h 19 Mar 2024 10:37:21 -0000 @@ -91,8 +91,7 @@ struct unpcb { */ #define UNP_FEIDS 0x01 /* unp_connid contains information */ #define UNP_FEIDSBIND 0x02 /* unp_connid was set by a bind */ -#define UNP_BINDING 0x04 /* unp is binding now */ -#define UNP_CONNECTING 0x08 /* unp is connecting now */ +#define UNP_BUSY 0x04 /* unp is binding or connecting now */ /* * flag bits in unp_gcflags