From ea162ac5b01ddb87475f2a2a0da052d9a0bcff2f Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Wed, 3 Sep 2008 18:49:42 +0000 Subject: [PATCH] Merge r182537 from head to stable/7: In UDPv6, reduce scope of global udbinfo lock during append to last matching socket by dropping it before udp6_append(), and remove duplicate unlocks of udbinfo and inpcb in sysctl return path. Approved by: re (kensmith) --- sys/netinet6/udp6_usrreq.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c index 456d620eba73..b19b25166c5b 100644 --- a/sys/netinet6/udp6_usrreq.c +++ b/sys/netinet6/udp6_usrreq.c @@ -307,9 +307,9 @@ udp6_input(struct mbuf **mp, int *offp, int proto) goto badheadlocked; } INP_RLOCK(last); + INP_INFO_RUNLOCK(&udbinfo); udp6_append(last, m, off, &fromsa); INP_RUNLOCK(last); - INP_INFO_RUNLOCK(&udbinfo); return (IPPROTO_DONE); } /* @@ -464,8 +464,6 @@ udp6_getcred(SYSCTL_HANDLER_ARGS) INP_INFO_RUNLOCK(&udbinfo); error = ENOENT; } - INP_RUNLOCK(inp); - INP_INFO_RUNLOCK(&udbinfo); if (error == 0) error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred)); return (error);