kern/165643: Missing vnet restores in net/if_ethersubr.c
Vijay Singh
vijju.singh at gmail.com
Sat Mar 3 01:10:09 UTC 2012
>Number: 165643
>Category: kern
>Synopsis: Missing vnet restores in net/if_ethersubr.c
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Mar 03 01:10:08 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: Vijay Singh
>Release: 9/stable
>Organization:
>Environment:
>Description:
There are some missing vnet restore in net/if_ethersubr.c that can cause networking code to execute in the wrong vnet context.
A patch is provided here:
[pc20 /u/vijay/bsd/CODE/9s/sys]# svn diff net/if_ethersubr.c
Index: net/if_ethersubr.c
===================================================================
--- net/if_ethersubr.c (revision 232242)
+++ net/if_ethersubr.c (working copy)
@@ -661,8 +661,10 @@
m = (*lagg_input_p)(ifp, m);
if (m != NULL)
ifp = m->m_pkthdr.rcvif;
- else
+ else {
+ CURVNET_RESTORE();
return;
+ }
}
/*
@@ -681,6 +683,7 @@
#endif
ifp->if_ierrors++;
m_freem(m);
+ CURVNET_RESTORE();
return;
}
>How-To-Repeat:
>Fix:
[pc20 /u/vijay/bsd/CODE/9s/sys]# svn diff net/if_ethersubr.c
Index: net/if_ethersubr.c
===================================================================
--- net/if_ethersubr.c (revision 232242)
+++ net/if_ethersubr.c (working copy)
@@ -661,8 +661,10 @@
m = (*lagg_input_p)(ifp, m);
if (m != NULL)
ifp = m->m_pkthdr.rcvif;
- else
+ else {
+ CURVNET_RESTORE();
return;
+ }
}
/*
@@ -681,6 +683,7 @@
#endif
ifp->if_ierrors++;
m_freem(m);
+ CURVNET_RESTORE();
return;
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list