lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 28 Jun 2007 11:13:40 +0200 From: Jarek Poplawski <jarkao2@...pl> To: Patrick McHardy <kaber@...sh.net> Cc: David Miller <davem@...emloft.net>, Andrew Morton <akpm@...ux-foundation.org>, netdev@...r.kernel.org, "bugme-daemon\@kernel-bugs\.osdl\.org" <bugme-daemon@...nel-bugs.osdl.org>, ranko@...dernet.net Subject: Re: [NET]: gen_estimator: fix locking and timer related bugs [Re: [Bugme-new] [Bug 8668] New: HTB Deadlock] On Wed, Jun 27, 2007 at 05:25:45PM +0200, Patrick McHardy wrote: ... > Additionally there are a few more related problems that seem to be > relicts from the timer when the estimator was qdisc specific and > could rely on the rtnl or dev->qdisc_lock: > > - the check whether the list is empty and a timer needs to be started > when adding a new estimator doesn't take the lock, so it races > against concurrent additions, which can result in the timer beeing > added twice or getting reinitialized after being added. > > - the new estimator's next pointer is also set without holding the > lock, again racing against concurrent additions with possible > list corruption as a result. > > - the timer deletion when killing an estimator is also not under > the lock and races against timer arming when adding a new estimator. > > Fix by holding the lock around the entire list addition and initial > timer arming. Removal is not done explicitly anymore, instead the > timer function only rearms the timer when there are still estimators > present. ... > @@ -202,7 +201,6 @@ void gen_kill_estimator(struct gnet_stats_basic *bstats, > struct gen_estimator *est, **pest; > > for (idx=0; idx <= EST_MAX_INTERVAL; idx++) { > - int killed = 0; > pest = &elist[idx].list; > while ((est=*pest) != NULL) { So, maybe this list walking here needs some locking too? Jarek P. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists