Re: [RFC] [PATCH 2/2] capabilities: implement 64-bit capabilities

From: Chris Wright
Date: Thu Oct 18 2007 - 11:32:17 EST


* Serge E. Hallyn (serge@xxxxxxxxxx) wrote:
> Quoting Chris Wright (chrisw@xxxxxxxxxxxx):
> > * Serge E. Hallyn (serge@xxxxxxxxxx) wrote:
> > > I guess now that I've written this out, it seems pretty clear
> > > that capget64() and capget64() are the way to go. Any objections?
> >
> > How is capget64() different from capget() that supports 2 different
> > header->versions (I thought that was the whole point of the versioned,
> > rather opaque interface)? I don't object to a new syscall, but I don't
> > see why it's required to avoid breaking libcap.
>
> Hmm, I guess it *works*, it's just harder to explain the "inconsistent"
> behavior. Now instead of saying "capget() will fail under certain
> conditions while capget64() will always succeed", capget() will actually
> fail under certain conditions only if you send in a certain header.
>
> Again, once I've written it out, I guess it isn't *so* bad.

It's not really any different than issuing capget(0x19980330) (assuming
capget64 is different), and getting -EINVAL when the actual in-use
caps are > 32 bits wide. In either case the rules are the same --
old interface works fine as long as you don't have new caps involved.
Only advantage I see to using the extant interface is that the cap[sg]et
interface is already designed to be future-proof (albeit in an unusual
way compared with most other kernel syscalls).

thanks,
-chris
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/