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-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"