extern struct key_type key_type_keyring;
+/*
+ * ABI compat: Rename register function so newly built key type modules
+ * will require a new kernel and can then safely assume the existence of the
+ * key::state field. Other keys users don't access it and are unaffected.
+ */
+#define register_key_type register_key_type_2
extern int register_key_type(struct key_type *ktype);
extern void unregister_key_type(struct key_type *ktype);
* - may not match RCU dereferenced payload
* - payload should contain own length
*/
- short state; /* Key state (+) or rejection error (-) */
#ifdef KEY_DEBUGGING
unsigned magic;
#endif
unsigned long flags; /* status flags (change with bitops) */
-#define KEY_FLAG_DEAD 0 /* set if key type has been deleted */
-#define KEY_FLAG_REVOKED 1 /* set if key had been revoked */
-#define KEY_FLAG_IN_QUOTA 2 /* set if key consumes quota */
-#define KEY_FLAG_USER_CONSTRUCT 3 /* set if key is being constructed in userspace */
-#define KEY_FLAG_ROOT_CAN_CLEAR 4 /* set if key can be cleared by root without permission */
-#define KEY_FLAG_INVALIDATED 5 /* set if key has been invalidated */
-#define KEY_FLAG_BUILTIN 6 /* set if key is built in to the kernel */
-#define KEY_FLAG_ROOT_CAN_INVAL 7 /* set if key can be invalidated by root without permission */
-#define KEY_FLAG_KEEP 8 /* set if key should not be removed */
-#define KEY_FLAG_UID_KEYRING 9 /* set if key is a user or user session keyring */
+#define KEY_FLAG_DEAD 1 /* set if key type has been deleted */
+#define KEY_FLAG_REVOKED 2 /* set if key had been revoked */
+#define KEY_FLAG_IN_QUOTA 3 /* set if key consumes quota */
+#define KEY_FLAG_USER_CONSTRUCT 4 /* set if key is being constructed in userspace */
+#define KEY_FLAG_ROOT_CAN_CLEAR 6 /* set if key can be cleared by root without permission */
+#define KEY_FLAG_INVALIDATED 7 /* set if key has been invalidated */
+#define KEY_FLAG_BUILTIN 8 /* set if key is built in to the kernel */
+#define KEY_FLAG_ROOT_CAN_INVAL 9 /* set if key can be invalidated by root without permission */
+#define KEY_FLAG_KEEP 10 /* set if key should not be removed */
+#define KEY_FLAG_UID_KEYRING 11 /* set if key is a user or user session keyring */
/* the key type and key description string
* - the desc is used to match a key against search criteria
struct list_head name_link;
struct assoc_array keys;
};
+#ifdef __GENKSYMS__
+ int reject_error;
+#endif
};
/* This is set on a keyring to restrict the addition of a link to a key
int (*restrict_link)(struct key *keyring,
const struct key_type *type,
const union key_payload *payload);
+
+#ifndef __GENKSYMS__
+ short state; /* Key state (+) or rejection error (-) */
+#endif
};
extern struct key *key_alloc(struct key_type *type,