Author: zec
Date: Sun Sep 13 21:30:18 2009
New Revision: 197176
URL: http://svn.freebsd.org/changeset/base/197176

Log:
  Lock the ifnet list while iterating over it.
  
  Submitted by: julian
  MFC after:    3 days

Modified:
  head/sys/compat/linux/linux_ioctl.c

Modified: head/sys/compat/linux/linux_ioctl.c
==============================================================================
--- head/sys/compat/linux/linux_ioctl.c Sun Sep 13 20:19:02 2009        
(r197175)
+++ head/sys/compat/linux/linux_ioctl.c Sun Sep 13 21:30:18 2009        
(r197176)
@@ -2152,6 +2152,7 @@ linux_ifconf(struct thread *td, struct i
        /* handle the 'request buffer size' case */
        if (ifc.ifc_buf == PTROUT(NULL)) {
                ifc.ifc_len = 0;
+               IFNET_RLOCK();
                TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
                        TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
                                struct sockaddr *sa = ifa->ifa_addr;
@@ -2159,6 +2160,7 @@ linux_ifconf(struct thread *td, struct i
                                        ifc.ifc_len += sizeof(ifr);
                        }
                }
+               IFNET_RUNLOCK();
                error = copyout(&ifc, uifc, sizeof(ifc));
                CURVNET_RESTORE();
                return (error);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to