On 04 Oct 2014, at 16:36 , Konstantin Belousov <kostik...@gmail.com> wrote:

> On Sat, Oct 04, 2014 at 02:21:54PM +0000, Bjoern A. Zeeb wrote:
>> 
>> On 04 Oct 2014, at 08:08 , Mateusz Guzik <m...@freebsd.org> wrote:
>> 
>>> Author: mjg
>>> Date: Sat Oct  4 08:08:56 2014
>>> New Revision: 272505
>>> URL: https://svnweb.freebsd.org/changeset/base/272505
>>> 
>>> Log:
>>> Plug capability races.
>>> 
>>> fp and appropriate capability lookups were not atomic, which could result in
>>> improper capabilities being checked.
>>> 
>>> This could result either in protection bypass or in a spurious ENOTCAPABLE.
>>> 
>>> Make fp + capability check atomic with the help of sequence counters.
>>> 
>>> Reviewed by:        kib
>>> MFC after:  3 weeks
>>> 
>>> Modified:
>>> head/sys/kern/kern_descrip.c
>>> head/sys/sys/filedesc.h
>>> ?
>> 
>> 
>> This file is included from user space.  There is no opt_capsicum.h there.
>> Including an opt_* in the header file seems wrong in a lot of ways usually.
> I think that easiest, and probably the most correct, fix is to include
> the fde_seq member unconditionally.
> 
>> 
>> I tried to add a bandaid for the moment with r272523 which (to be honest) 
>> makes it worse.
>> 
>> This needs a better fix.
> Hm, I do see inclusion of sys/filedesc.h in the usermode programs, most
> worrying is libprocstat.  But, there is nothing useful for usermode in the
> header, except possibly for the code with inspects KVA.

It’s included indirectly imho through other sys/* header files  if I am not 
mistaken.


> 
>> 
>> 
>> I also wonder why the (conditional) fde_seq ended up at the beginning of the 
>> structure rather than the end?
>> 
> Why not ?

Because it guarantees the structure layout (offsets) to change for either way, 
where-as at the end things would at least be deterministic for the beginning;  
it might not make a change in reality, but it’s nice anyway (also for 
debugging).

— 
Bjoern A. Zeeb             "Come on. Learn, goddamn it.", WarGames, 1983

_______________________________________________
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