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])
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;
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 */
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;