From 4e2840eee6b21cb5230bd7cac8407badb201aac3 Mon Sep 17 00:00:00 2001 From: John Fastabend Date: Wed, 17 Sep 2014 11:11:46 -0700 Subject: [PATCH] net: sched: cls_u32: rcu can not be last node tc_u32_sel 'sel' in tc_u_knode expects to be the last element in the structure and pads the structure with tc_u32_key fields for each key. kzalloc(sizeof(*n) + s->nkeys*sizeof(struct tc_u32_key), GFP_KERNEL) CC: Eric Dumazet Signed-off-by: John Fastabend Acked-by: Eric Dumazet Signed-off-by: David S. Miller --- net/sched/cls_u32.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index eceeb0456d26..730edb29d43b 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -64,8 +64,11 @@ struct tc_u_knode { u32 __percpu *pcpu_success; #endif struct tcf_proto *tp; - struct tc_u32_sel sel; struct rcu_head rcu; + /* The 'sel' field MUST be the last field in structure to allow for + * tc_u32_keys allocated at end of structure. + */ + struct tc_u32_sel sel; }; struct tc_u_hnode {