Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: CVS commit: src/sys



"Maxime Villard" writes:
> Module Name:	src
> Committed By:	maxv
> Date:		Mon Jul 27 09:24:28 UTC 2015
> 
> Modified Files:
> 	src/sys/kern: subr_kmem.c
> 	src/sys/uvm: files.uvm
> Removed Files:
> 	src/sys/uvm: uvm_kmguard.c uvm_kmguard.h
> 
> Log Message:
> Several changes and improvements in KMEM_GUARD:
>  - merge uvm_kmguard.{c,h} into subr_kmem.c. It is only user there, and
>    makes it more consistent. Also, it allows us to enable KMEM_GUARD
>    without enabling DEBUG.
>  - rename uvm_kmguard_XXX to kmem_guard_XXX, for consistency
>  - improve kmem_guard_alloc() so that it supports allocations bigger than
>    PAGE_SIZE
>  - remove the canary value, and use directly the kmem header as underflow
>    pattern.
>  - fix some comments
> 
> (The UAF fifo is disabled for the moment; we actually need to register
> the va and its size, and add a weight support not to consume too much
> memory.)

thanks for extending KMEM_GUARD beyond PAGE_SIZE.  this will be
quite helpful, if even now requiring a lot more memory when
using kmguard :)

was this change presented for review anywhere before commit?

i'm not convinced that moving directly into subr_kmem.c is the
right thing or the only way to solve the problem of depending
on DEBUG.  could you separate them again, please?

the failure mode in the new kmem_guard_alloc() is also expensive,
in that instead of knowing how to unwind itself, it calls into
UVM to figure out all the details (which involves pmap_extract()
and a bunch more accounting.)  it would probably be best to
replace this with a call to uvm_pglistalloc() in the new version,
and then you'll never have a partial allocation failure to deal
with and you only make a single call to allocate these pages.

also, about removing the canary -- can you explain this a little
more, i'm not sure i understand this part.

thanks.


.mrg.


Home | Main Index | Thread Index | Old Index