* [NET_SCHED]: policer: restore compatibility with old iproute binaries
@ 2006-11-26 13:59 Patrick McHardy
[not found] ` <4466a10611300343s2e5fe865t874a9f74bb75fe81@mail.gmail.com>
0 siblings, 1 reply; 2+ messages in thread
From: Patrick McHardy @ 2006-11-26 13:59 UTC (permalink / raw)
To: David S. Miller; +Cc: Kernel Netdev Mailing List, jamal
[-- Attachment #1: Type: text/plain, Size: 0 bytes --]
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 2656 bytes --]
[NET_SCHED]: policer: restore compatibility with old iproute binaries
The tc actions increased the size of struct tc_police, which broke
compatibility with old iproute binaries since both the act_police
and the old NET_CLS_POLICE code check for an exact size match.
Since the new members are not even used, the simple fix is to also
accept the size of the old structure. Dumping is not affected since
old userspace will receive a bigger structure, which is handled fine.
Signed-off-by: Patrick McHardy <kaber@trash.net>
---
commit 8c69566fc6b34f819d1002fdc76cdb2611e37dcb
tree dd502f69be944acd744f19392f3e3145552ca6b2
parent c498fe066d393b0f677fd0a857c0b25f24dd2049
author Patrick McHardy <kaber@gw.localnet> Sun, 26 Nov 2006 14:56:09 +0100
committer Patrick McHardy <kaber@gw.localnet> Sun, 26 Nov 2006 14:56:09 +0100
net/sched/act_police.c | 26 ++++++++++++++++++++++----
1 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/net/sched/act_police.c b/net/sched/act_police.c
index fed47b6..af68e1e 100644
--- a/net/sched/act_police.c
+++ b/net/sched/act_police.c
@@ -46,6 +46,18 @@ static struct tcf_hashinfo police_hash_i
.lock = &police_lock,
};
+/* old policer structure from before tc actions */
+struct tc_police_compat
+{
+ u32 index;
+ int action;
+ u32 limit;
+ u32 burst;
+ u32 mtu;
+ struct tc_ratespec rate;
+ struct tc_ratespec peakrate;
+};
+
/* Each policer is serialized by its individual spinlock */
#ifdef CONFIG_NET_CLS_ACT
@@ -131,12 +143,15 @@ static int tcf_act_police_locate(struct
struct tc_police *parm;
struct tcf_police *police;
struct qdisc_rate_table *R_tab = NULL, *P_tab = NULL;
+ int size;
if (rta == NULL || rtattr_parse_nested(tb, TCA_POLICE_MAX, rta) < 0)
return -EINVAL;
- if (tb[TCA_POLICE_TBF-1] == NULL ||
- RTA_PAYLOAD(tb[TCA_POLICE_TBF-1]) != sizeof(*parm))
+ if (tb[TCA_POLICE_TBF-1] == NULL)
+ return -EINVAL;
+ size = RTA_PAYLOAD(tb[TCA_POLICE_TBF-1]);
+ if (size != sizeof(*parm) && size != sizeof(struct tc_police_compat))
return -EINVAL;
parm = RTA_DATA(tb[TCA_POLICE_TBF-1]);
@@ -415,12 +430,15 @@ struct tcf_police *tcf_police_locate(str
struct tcf_police *police;
struct rtattr *tb[TCA_POLICE_MAX];
struct tc_police *parm;
+ int size;
if (rtattr_parse_nested(tb, TCA_POLICE_MAX, rta) < 0)
return NULL;
- if (tb[TCA_POLICE_TBF-1] == NULL ||
- RTA_PAYLOAD(tb[TCA_POLICE_TBF-1]) != sizeof(*parm))
+ if (tb[TCA_POLICE_TBF-1] == NULL)
+ return NULL;
+ size = RTA_PAYLOAD(tb[TCA_POLICE_TBF-1]);
+ if (size != sizeof(*parm) && size != sizeof(struct tc_police_compat))
return NULL;
parm = RTA_DATA(tb[TCA_POLICE_TBF-1]);
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [NET_SCHED]: policer: restore compatibility with old iproute binaries
[not found] ` <4466a10611300343s2e5fe865t874a9f74bb75fe81@mail.gmail.com>
@ 2006-12-01 3:54 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2006-12-01 3:54 UTC (permalink / raw)
To: hadi; +Cc: kaber, netdev
From: jamal <hadi@cyberus.ca>
Date: Thu, 30 Nov 2006 06:43:36 -0500
> On 11/26/06, Patrick McHardy <kaber@trash.net> wrote:
> >
> >
> >
> > [NET_SCHED]: policer: restore compatibility with old iproute binaries
> >
> > The tc actions increased the size of struct tc_police, which broke
> > compatibility with old iproute binaries since both the act_police
> > and the old NET_CLS_POLICE code check for an exact size match.
> >
> > Since the new members are not even used, the simple fix is to also
> > accept the size of the old structure. Dumping is not affected since
> > old userspace will receive a bigger structure, which is handled fine.
> >
> > Signed-off-by: Patrick McHardy <kaber@trash.net>
>
>
> Sorry, couldnt respond sooner. Was travelling and overloaded.
> Looks good although i havent run any of my tests. I will at some point.
>
> Acked-by: Jamal Hadi Salim
Applied to net-2.6.20, and I'll push this to -stable too.
Thanks everyone.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-12-01 3:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-26 13:59 [NET_SCHED]: policer: restore compatibility with old iproute binaries Patrick McHardy
[not found] ` <4466a10611300343s2e5fe865t874a9f74bb75fe81@mail.gmail.com>
2006-12-01 3:54 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).