X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fnet%2Fxfrm.h;h=1dd20cf17982663b8881f55c76440d7dd096d98d;hb=29bd17af7d8ffc16bb5eb286947495c166ea826e;hp=58dfa82889aa498be489d11ada7a163f3277f134;hpb=53173920dab204a31ef37e7d2cb25b964a8a7752;p=linux-2.6 diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 58dfa82889..1dd20cf179 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -1188,10 +1188,15 @@ static inline int xfrm_aevent_is_on(void) return ret; } +static inline int xfrm_alg_len(struct xfrm_algo *alg) +{ + return sizeof(*alg) + ((alg->alg_key_len + 7) / 8); +} + #ifdef CONFIG_XFRM_MIGRATE static inline struct xfrm_algo *xfrm_algo_clone(struct xfrm_algo *orig) { - return (struct xfrm_algo *)kmemdup(orig, sizeof(*orig) + orig->alg_key_len, GFP_KERNEL); + return kmemdup(orig, xfrm_alg_len(orig), GFP_KERNEL); } static inline void xfrm_states_put(struct xfrm_state **states, int n)