Author: mmacy
Date: Thu Jun 21 06:10:52 2018
New Revision: 335468
URL: https://svnweb.freebsd.org/changeset/base/335468

Log:
  udp_ctlinput: don't refer to unpcb after we drop the lock
  
  Reported by: pho@

Modified:
  head/sys/netinet/udp_usrreq.c

Modified: head/sys/netinet/udp_usrreq.c
==============================================================================
--- head/sys/netinet/udp_usrreq.c       Thu Jun 21 05:28:00 2018        
(r335467)
+++ head/sys/netinet/udp_usrreq.c       Thu Jun 21 06:10:52 2018        
(r335468)
@@ -802,14 +802,15 @@ udp_common_ctlinput(int cmd, struct sockaddr *sa, void
                                           INPLOOKUP_WILDCARD | 
INPLOOKUP_RLOCKPCB, NULL);
                        if (inp != NULL) {
                                struct udpcb *up;
+                               void *ctx;
+                               udp_tun_icmp_t func;
 
                                up = intoudpcb(inp);
-                               if (up->u_icmp_func != NULL) {
-                                       INP_RUNLOCK(inp);
-                                       (*up->u_icmp_func)(cmd, sa, vip, 
up->u_tun_ctx);
-                               } else {
-                                       INP_RUNLOCK(inp);
-                               }
+                               ctx = up->u_tun_ctx;
+                               func = up->u_icmp_func;
+                               INP_RUNLOCK(inp);
+                               if (func != NULL)
+                                       (*func)(cmd, sa, vip, ctx);
                        }
                }
        } else
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to