]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/net/xfrm.h
ipsec: Fix xfrm_state_walk race
[karo-tx-linux.git] / include / net / xfrm.h
index 4bb94992b5fab56e269ac4869393aeaa3d0f9b1c..48630b26659334175de2f9a8ae72f94e463d0bfc 100644 (file)
@@ -1246,6 +1246,8 @@ struct xfrm6_tunnel {
 };
 
 struct xfrm_state_walk {
+       struct list_head list;
+       unsigned long genid;
        struct xfrm_state *state;
        int count;
        u8 proto;
@@ -1281,13 +1283,7 @@ static inline void xfrm6_fini(void)
 extern int xfrm_proc_init(void);
 #endif
 
-static inline void xfrm_state_walk_init(struct xfrm_state_walk *walk, u8 proto)
-{
-       walk->proto = proto;
-       walk->state = NULL;
-       walk->count = 0;
-}
-
+extern void xfrm_state_walk_init(struct xfrm_state_walk *walk, u8 proto);
 extern int xfrm_state_walk(struct xfrm_state_walk *walk,
                           int (*func)(struct xfrm_state *, int, void*), void *);
 extern void xfrm_state_walk_done(struct xfrm_state_walk *walk);