De-virtualize V_pf_mtag_z to eliminate kernel panics.

Marko Zec zec at fer.hr
Sat Jul 27 14:20:01 UTC 2013


On Saturday 27 July 2013 08:31:48 Craig Rodrigues wrote:
> Gleb,
>
> Since you did a lot of work in GRN 240233
> to fix PF issues, especially for VIMAGE, I thought I would
> ask your opinion on the attached patch.
>
> In this post:
>
> http://lists.freebsd.org/pipermail/freebsd-virtualization/2013-July/00140
>5.html
>
> I reported multiple PF-related panics when VIMAGE was enabled
> in my kernel config.
>
> In these posts:
> http://lists.freebsd.org/pipermail/freebsd-virtualization/2013-July/00141
>3.html
> http://lists.freebsd.org/pipermail/freebsd-virtualization/2013-July/00142
>0.html
>
> Marko Zec seemed to think that de-virtualizing V_pf_mtag_z
> would be a valid solution to this problem, and that keeping
> V_pf_mtag_z as a per-vnet variable is not necessary.
>
> What do you think of Marko's comments, and this patch?

Hi Craig,

while in principle I agree with the intent to de-virtualize V_pf_mtag_z 
(after all, this was my suggestion in the first place), your proposed patch 
isn't the valid solution, since on each vnet creation you'll be clobbering 
(now global) variable pf_mtag_z, which would imminently cause double-free 
or similar issues later during runtime.  You should move

pf_mtag_z = uma_zcreate(...)

to some other function which isn't called for each vnet, or at least as a 
crude kludge, do this conditionally if (curvnet == vnet0).  The same goes 
for uma_zdestroy(pf_mtag_z)...

Cheers,

Marko


More information about the freebsd-pf mailing list