act_nat: use stack variable
Subsystems (3)
PATCH 1/1 act_nat: use stack variable
act_nat: use stack variable
structure tc_nat isn't too big for stack, so we can put it in stack.
Signed-off-by Changli Gao <[email protected]>
----
net/sched/act_nat.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-)
net/sched/act_nat.c +10 -21
@@ -265,40 +265,29 @@ static int tcf_nat_dump(struct sk_buff *skb, struct tc_action *a, {unsigned char *b =skb_tail_pointer (skb);struct tcf_nat *p = a->priv; -struct tc_nat *opt; +struct tc_nat opt;struct tcf_t t; -int s; - s =sizeof (*opt); + opt.old_addr = p->old_addr; + opt.new_addr = p->new_addr; + opt.mask = p->mask; + opt.flags = p->flags; -/* netlink spinlocks held above us - must use ATOMIC */ - opt =kzalloc (s,GFP_ATOMIC ); -if (unlikely (!opt)) -return -ENOBUFS ; + opt.index = p->tcf_index; + opt.action = p->tcf_action; + opt.refcnt = p->tcf_refcnt - ref; + opt.bindcnt = p->tcf_bindcnt - bind; - opt->old_addr = p->old_addr; - opt->new_addr = p->new_addr; - opt->mask = p->mask; - opt->flags = p->flags; - - opt->index = p->tcf_index; - opt->action = p->tcf_action; - opt->refcnt = p->tcf_refcnt - ref; - opt->bindcnt = p->tcf_bindcnt - bind; - -NLA_PUT (skb,TCA_NAT_PARMS , s, opt); +NLA_PUT (skb,TCA_NAT_PARMS ,sizeof (opt), &opt); t.install =jiffies_to_clock_t (jiffies - p->tcf_tm.install); t.lastuse =jiffies_to_clock_t (jiffies - p->tcf_tm.lastuse); t.expires =jiffies_to_clock_t (p->tcf_tm.expires);NLA_PUT (skb,TCA_NAT_TM ,sizeof (t), &t); -kfree (opt); -return skb->len; nla_put_failure:nlmsg_trim (skb, b); -kfree (opt);return -1 ; }
Quoted 5 lines · Changli Gao
act_nat: use stack variablestructure
tc_natisn't too big for stack, so we can put it in stack.Signed-off-by Changli Gao <[email protected]>
Doesnt look unreasonable - will let Herbert make the call..
cheers,
jamal
Quoted 8 lines · jamal
Quoted 5 lines · Changli Gao
act_nat: use stack variablestructure
tc_natisn't too big for stack, so we can put it in stack.Signed-off-by Changli Gao <[email protected]>Doesnt look unreasonable - will let Herbert make the call..
Looks good to me too.
Thanks!
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
From: Herbert Xu <[email protected]>
Date: Wed, 30 Jun 2010 18:30:05 +0800
Quoted 11 lines · jamal
Quoted 8 lines · Changli Gao
Quoted 5 lines
act_nat: use stack variablestructure
tc_natisn't too big for stack, so we can put it in stack.Signed-off-by Changli Gao <[email protected]>Doesnt look unreasonable - will let Herbert make the call..
Looks good to me too.
Applied.