Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Oct 2014 19:36:33 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        "Bjoern A. Zeeb" <bz@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Mateusz Guzik <mjg@FreeBSD.org>
Subject:   Re: svn commit: r272505 - in head/sys: kern sys
Message-ID:  <20141004163633.GT26076@kib.kiev.ua>
In-Reply-To: <42180557-0119-4597-9492-662E1671A840@FreeBSD.org>
References:  <201410040808.s9488uAI099166@svn.freebsd.org> <42180557-0119-4597-9492-662E1671A840@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Oct 04, 2014 at 02:21:54PM +0000, Bjoern A. Zeeb wrote:
> 
> On 04 Oct 2014, at 08:08 , Mateusz Guzik <mjg@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.

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141004163633.GT26076>