0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _KEYS_USER_TYPE_H
0009 #define _KEYS_USER_TYPE_H
0010
0011 #include <linux/key.h>
0012 #include <linux/rcupdate.h>
0013
0014 #ifdef CONFIG_KEYS
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 struct user_key_payload {
0028 struct rcu_head rcu;
0029 unsigned short datalen;
0030 char data[] __aligned(__alignof__(u64));
0031 };
0032
0033 extern struct key_type key_type_user;
0034 extern struct key_type key_type_logon;
0035
0036 struct key_preparsed_payload;
0037
0038 extern int user_preparse(struct key_preparsed_payload *prep);
0039 extern void user_free_preparse(struct key_preparsed_payload *prep);
0040 extern int user_update(struct key *key, struct key_preparsed_payload *prep);
0041 extern void user_revoke(struct key *key);
0042 extern void user_destroy(struct key *key);
0043 extern void user_describe(const struct key *user, struct seq_file *m);
0044 extern long user_read(const struct key *key, char *buffer, size_t buflen);
0045
0046 static inline const struct user_key_payload *user_key_payload_rcu(const struct key *key)
0047 {
0048 return (struct user_key_payload *)dereference_key_rcu(key);
0049 }
0050
0051 static inline struct user_key_payload *user_key_payload_locked(const struct key *key)
0052 {
0053 return (struct user_key_payload *)dereference_key_locked((struct key *)key);
0054 }
0055
0056 #endif
0057
0058 #endif