From: Marc Dionne Date: Fri, 16 Nov 2012 01:58:03 +0000 (-0500) Subject: Linux 3.7: key instantiate API change X-Git-Tag: openafs-stable-1_8_0pre1~1804 X-Git-Url: http://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=aeb2763b741a218ad6fd93adc6157a6a31f27e13 Linux 3.7: key instantiate API change Adapt to the new parameters for the instantiate key operation. Change-Id: I25dea3489b68cad662e962a4973ee98ec7228cd3 Reviewed-on: http://gerrit.openafs.org/8470 Tested-by: BuildBot Reviewed-by: Hans-Werner Paulsen Reviewed-by: Derrick Brashear --- diff --git a/acinclude.m4 b/acinclude.m4 index 83ce22d..44ce680 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -825,6 +825,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h]) AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h]) AC_CHECK_LINUX_STRUCT([filename], [name], [fs.h]) + AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h]) AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h]) AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h]) AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h]) diff --git a/src/afs/LINUX/osi_groups.c b/src/afs/LINUX/osi_groups.c index 1903a54..c2a0308 100644 --- a/src/afs/LINUX/osi_groups.c +++ b/src/afs/LINUX/osi_groups.c @@ -457,7 +457,11 @@ static void afs_pag_describe(const struct key *key, struct seq_file *m) seq_printf(m, ": %u", key->datalen); } +#if defined(STRUCT_KEY_TYPE_HAS_PREPARSE) +static int afs_pag_instantiate(struct key *key, struct key_preparsed_payload *prep) +#else static int afs_pag_instantiate(struct key *key, const void *data, size_t datalen) +#endif { int code; afs_uint32 *userpag, pag = NOPAG; @@ -468,7 +472,11 @@ static int afs_pag_instantiate(struct key *key, const void *data, size_t datalen code = -EINVAL; get_group_info(current_group_info()); +#if defined(STRUCT_KEY_TYPE_HAS_PREPARSE) + if (prep->datalen != sizeof(afs_uint32) || !prep->data) +#else if (datalen != sizeof(afs_uint32) || !data) +#endif goto error; /* ensure key being set matches current pag */ @@ -477,7 +485,11 @@ static int afs_pag_instantiate(struct key *key, const void *data, size_t datalen if (pag == NOPAG) goto error; - userpag = (afs_uint32 *) data; +#if defined(STRUCT_KEY_TYPE_HAS_PREPARSE) + userpag = (afs_uint32 *)prep->data; +#else + userpag = (afs_uint32 *)data; +#endif if (*userpag != pag) goto error;