* sch_dsmark bug @ 2004-04-11 12:43 Hugo Santos 2004-04-11 19:43 ` jamal 0 siblings, 1 reply; 3+ messages in thread From: Hugo Santos @ 2004-04-11 12:43 UTC (permalink / raw) To: netdev; +Cc: davem Hi there, I tried to contact the person whose name is in the source file but with no success. While developing some code that handles with kernel's TC objects direcly (by netlink) i found a small problem with dsmark (maybe other scheds have it too, but i haven't checked). This is in linux 2.6.4 (there is no change in this context in 2.6.5); in dsmark_init, if opt is NULL, the module will crash and TC will get stuck. the module will have a ref count of 1 so i can't unload it, and i can't change any other TC stuff since the netlink socket gets stuck when dsmark crashes. So, a simple if (!opt) return -EINVAL; would prevent such problems. If you prefer i may send a patch, but since it's only a one line patch i didn't send one. Best regards, Hugo Santos ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: sch_dsmark bug 2004-04-11 12:43 sch_dsmark bug Hugo Santos @ 2004-04-11 19:43 ` jamal 2004-04-11 22:52 ` Sven Schuster 0 siblings, 1 reply; 3+ messages in thread From: jamal @ 2004-04-11 19:43 UTC (permalink / raw) To: Hugo Santos; +Cc: netdev, David S. Miller, Werner Almesberger [-- Attachment #1: Type: text/plain, Size: 1030 bytes --] Looks legit nit. Why are you sending empty opts anyways? ;-> patchlet attached - you should have sent one ;-> Maybe you can inspect other qdiscs. cheers, jamal On Sun, 2004-04-11 at 08:43, Hugo Santos wrote: > Hi there, > > I tried to contact the person whose name is in the source file but with > no success. While developing some code that handles with kernel's TC > objects direcly (by netlink) i found a small problem with dsmark (maybe > other scheds have it too, but i haven't checked). This is in linux 2.6.4 > (there is no change in this context in 2.6.5); in dsmark_init, if opt is > NULL, the module will crash and TC will get stuck. the module will have a > ref count of 1 so i can't unload it, and i can't change any other TC > stuff since the netlink socket gets stuck when dsmark crashes. So, a simple > > if (!opt) return -EINVAL; > > would prevent such problems. > > If you prefer i may send a patch, but since it's only a one line patch i didn't > send one. > > Best regards, > Hugo Santos > > > > > [-- Attachment #2: p1 --] [-- Type: text/plain, Size: 353 bytes --] --- sch_dsmark.c 2004/04/11 19:39:16 1.1 +++ sch_dsmark.c 2004/04/11 19:39:41 @@ -321,6 +321,7 @@ struct rtattr *tb[TCA_DSMARK_MAX]; __u16 tmp; + if (!opt) return -EINVAL; DPRINTK("dsmark_init(sch %p,[qdisc %p],opt %p)\n",sch,p,opt); if (rtattr_parse(tb,TCA_DSMARK_MAX,RTA_DATA(opt),RTA_PAYLOAD(opt)) < 0 || !tb[TCA_DSMARK_INDICES-1] || ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: sch_dsmark bug 2004-04-11 19:43 ` jamal @ 2004-04-11 22:52 ` Sven Schuster 0 siblings, 0 replies; 3+ messages in thread From: Sven Schuster @ 2004-04-11 22:52 UTC (permalink / raw) To: netdev [-- Attachment #1.1: Type: text/plain, Size: 465 bytes --] On Sun, Apr 11, 2004 at 03:43:03PM -0400, jamal told us: > > Looks legit nit. Why are you sending empty opts anyways? ;-> > patchlet attached - you should have sent one ;-> > Maybe you can inspect other qdiscs. > > cheers, > jamal > I took a look at the others and found this ones... Sven -- Linux zion 2.6.5 #1 Sun Apr 4 19:56:55 CEST 2004 i686 athlon i386 GNU/Linux 00:43:25 up 7 days, 1:27, 2 users, load average: 0.02, 0.05, 0.01 [-- Attachment #1.2: sched.patch --] [-- Type: text/plain, Size: 1011 bytes --] --- net/sched/sch_cbq.c.orig 2004-04-12 00:24:08.123743284 +0200 +++ net/sched/sch_cbq.c 2004-04-12 00:40:30.186534165 +0200 @@ -1399,7 +1399,8 @@ static int cbq_init(struct Qdisc *sch, s struct rtattr *tb[TCA_CBQ_MAX]; struct tc_ratespec *r; - if (rtattr_parse(tb, TCA_CBQ_MAX, RTA_DATA(opt), RTA_PAYLOAD(opt)) < 0 || + if (!opt || + rtattr_parse(tb, TCA_CBQ_MAX, RTA_DATA(opt), RTA_PAYLOAD(opt)) < 0 || tb[TCA_CBQ_RTAB-1] == NULL || tb[TCA_CBQ_RATE-1] == NULL || RTA_PAYLOAD(tb[TCA_CBQ_RATE-1]) < sizeof(struct tc_ratespec)) return -EINVAL; --- net/sched/sch_csz.c.orig 2004-04-12 00:24:08.126743018 +0200 +++ net/sched/sch_csz.c 2004-04-12 00:36:16.195184499 +0200 @@ -763,6 +763,8 @@ static int csz_init(struct Qdisc *sch, s struct tc_csz_qopt *qopt; int i; + if (!opt) + return -EINVAL; rtattr_parse(tb, TCA_CSZ_PTAB, RTA_DATA(opt), RTA_PAYLOAD(opt)); if (tb[TCA_CSZ_PARMS-1] == NULL || RTA_PAYLOAD(tb[TCA_CSZ_PARMS-1]) < sizeof(*qopt)) [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-04-11 22:52 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-04-11 12:43 sch_dsmark bug Hugo Santos 2004-04-11 19:43 ` jamal 2004-04-11 22:52 ` Sven Schuster
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).