These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / include / linux / key.h
index e1d4715..66f7052 100644 (file)
@@ -89,6 +89,11 @@ struct keyring_index_key {
        size_t                  desc_len;
 };
 
+union key_payload {
+       void __rcu              *rcu_data0;
+       void                    *data[4];
+};
+
 /*****************************************************************************/
 /*
  * key reference with possession attribute handling
@@ -186,28 +191,18 @@ struct key {
                };
        };
 
-       /* type specific data
-        * - this is used by the keyring type to index the name
-        */
-       union {
-               struct list_head        link;
-               unsigned long           x[2];
-               void                    *p[2];
-               int                     reject_error;
-       } type_data;
-
        /* key data
         * - this is used to hold the data actually used in cryptography or
         *   whatever
         */
        union {
-               union {
-                       unsigned long           value;
-                       void __rcu              *rcudata;
-                       void                    *data;
-                       void                    *data2[2];
-               } payload;
-               struct assoc_array keys;
+               union key_payload payload;
+               struct {
+                       /* Keyring bits */
+                       struct list_head name_link;
+                       struct assoc_array keys;
+               };
+               int reject_error;
        };
 };
 
@@ -336,12 +331,12 @@ static inline bool key_is_instantiated(const struct key *key)
 }
 
 #define rcu_dereference_key(KEY)                                       \
-       (rcu_dereference_protected((KEY)->payload.rcudata,              \
+       (rcu_dereference_protected((KEY)->payload.rcu_data0,            \
                                   rwsem_is_locked(&((struct key *)(KEY))->sem)))
 
 #define rcu_assign_keypointer(KEY, PAYLOAD)                            \
 do {                                                                   \
-       rcu_assign_pointer((KEY)->payload.rcudata, (PAYLOAD));          \
+       rcu_assign_pointer((KEY)->payload.rcu_data0, (PAYLOAD));        \
 } while (0)
 
 #ifdef CONFIG_SYSCTL