[OpenAFS-devel] linux keyring handling

Marc Dionne marc.c.dionne@gmail.com
Thu, 29 Aug 2013 08:02:40 -0400


On Thu, Aug 29, 2013 at 3:44 AM, Christof Hanke
<christof.hanke@rzg.mpg.de> wrote:
> Hello,
>
> we just had a problem with the kernels of SLES 11 SP3.
> The keyrings wouldn't work and the pagsh would be apparently
> work, but was ineffective. (That's why http://gerrit.openafs.org/#change,10179)
>
> The problem is that in linux/security/keys/key.c __key_instantiate_and_link() they make a decision upon
> what's done for STRUCT_KEY_TYPE_HAS_PREPARSE in the cachemanager like this :
>
>                 /* instantiate the key */
>                 if (key->type->instantiate)
>                         ret = key->type->instantiate(key, prep->data, prep->datalen);
>                 else if (key->type->instantiate_prep)
>                         ret = key->type->instantiate_prep(key, prep);
>
>
>
> So, the question is :
> is the member key->type->instantiate_prep present in any other Linux-kernels ?

Hi Christof,

Searching through Google suggests that instantiate_prep is a Suse
specific change, which they probably did to minimize the impact on
some out of tree code, theirs or their customers.  The mainline kernel
has never had an instantiate_prep key type op.

> I have a patch in the srpm which applies only to the affected kernels.
> However, I am a bit reluctant to add yet another ifdef to the cachemanager just for one flavour  of kernel, which will
> go away in a few years time anyway again.
>
> Is it ok to keep that patch distribution-local or should I push a generic patch (including configure test etc) ?

Given that it's a major distribution, It's much better to add one more
test and ifdef than to have someone carry a local patch that other
users will not be aware of, IMO.  The configure test can be a
one-liner with AC_CHECK_LINUX_STRUCT.

Marc