<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/sched/sch_api.c, branch linux-2.6.27.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.27.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.27.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-02-11T14:37:52Z</updated>
<entry>
<title>net_sched: Fix qdisc_notify()</title>
<updated>2012-02-11T14:37:52Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-05-22T20:37:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3c87aca6dc9691b010dc4f06b24902fd35965520'/>
<id>urn:sha1:3c87aca6dc9691b010dc4f06b24902fd35965520</id>
<content type='text'>
commit 53b0f08042f04813cd1a7473dacd3edfacb28eb3 upstream.

Ben Pfaff reported a kernel oops and provided a test program to
reproduce it.

https://kerneltrap.org/mailarchive/linux-netdev/2010/5/21/6277805

tc_fill_qdisc() should not be called for builtin qdisc, or it
dereference a NULL pointer to get device ifindex.

Fix is to always use tc_qdisc_dump_ignore() before calling
tc_fill_qdisc().

Reported-by: Ben Pfaff &lt;blp@nicira.com&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Signed-off-by: Willy Tarreau &lt;w@1wt.eu&gt;
</content>
</entry>
<entry>
<title>tc: Fix unitialized kernel memory leak</title>
<updated>2010-04-01T22:52:24Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2009-09-02T02:40:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=910e88a0698da1f483603c603b04c780cb87dd08'/>
<id>urn:sha1:910e88a0698da1f483603c603b04c780cb87dd08</id>
<content type='text'>
commit 16ebb5e0b36ceadc8186f71d68b0c4fa4b6e781b upstream.

Three bytes of uninitialized kernel memory are currently leaked to user

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Reviewed-by: Jiri Pirko &lt;jpirko@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>pkt_sched: Fix locking of qdisc_root with qdisc_root_sleeping_lock()</title>
<updated>2008-08-29T21:27:52Z</updated>
<author>
<name>Jarek Poplawski</name>
</author>
<published>2008-08-29T21:21:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=102396ae65108b026e4e1868e30fa013f45a169e'/>
<id>urn:sha1:102396ae65108b026e4e1868e30fa013f45a169e</id>
<content type='text'>
Use qdisc_root_sleeping_lock() instead of qdisc_root_lock() where
appropriate. The only difference is while dev is deactivated, when
currently we can use a sleeping qdisc with the lock of noop_qdisc.
This shouldn't be dangerous since after deactivation root lock could
be used only by gen_estimator code, but looks wrong anyway.

Signed-off-by: Jarek Poplawski &lt;jarkao2@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>pkt_sched: Fix gen_estimator locks</title>
<updated>2008-08-27T09:25:17Z</updated>
<author>
<name>Jarek Poplawski</name>
</author>
<published>2008-08-27T09:25:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6f9b93f1624206c802ac9162c9302edaf59bfd9'/>
<id>urn:sha1:f6f9b93f1624206c802ac9162c9302edaf59bfd9</id>
<content type='text'>
While passing a qdisc root lock to gen_new_estimator() and
gen_replace_estimator() dev could be deactivated or even before
grafting proper root qdisc as qdisc_sleeping (e.g. qdisc_create), so
using qdisc_root_lock() is not enough. This patch adds
qdisc_root_sleeping_lock() for this, plus additional checks, where
necessary.

Signed-off-by: Jarek Poplawski &lt;jarkao2@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>pkt_sched: Use rcu_assign_pointer() to change dev_queue-&gt;qdisc</title>
<updated>2008-08-27T09:22:07Z</updated>
<author>
<name>Jarek Poplawski</name>
</author>
<published>2008-08-27T09:22:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f7a54c13c7b072d9426bd5cec1cdb8306df5ef55'/>
<id>urn:sha1:f7a54c13c7b072d9426bd5cec1cdb8306df5ef55</id>
<content type='text'>
These pointers are RCU protected, so proper primitives should be used.

Signed-off-by: Jarek Poplawski &lt;jarkao2@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>pkt_sched: Fix dev_graft_qdisc() locking</title>
<updated>2008-08-27T09:15:20Z</updated>
<author>
<name>Jarek Poplawski</name>
</author>
<published>2008-08-27T09:12:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=666d9bbedfff7c2c37eab92e715641922dee6864'/>
<id>urn:sha1:666d9bbedfff7c2c37eab92e715641922dee6864</id>
<content type='text'>
During dev_graft_qdisc() dev is deactivated, so qdisc_root_lock()
returns wrong lock of noop_qdisc instead of qdisc_sleeping.

Signed-off-by: Jarek Poplawski &lt;jarkao2@gmail.com&gt;
Acked-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>pkt_sched: Fix qdisc list locking</title>
<updated>2008-08-22T10:31:39Z</updated>
<author>
<name>Jarek Poplawski</name>
</author>
<published>2008-08-22T10:24:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6e0b239a2657ea8cb67f0d83d0bfdbfd19a481b'/>
<id>urn:sha1:f6e0b239a2657ea8cb67f0d83d0bfdbfd19a481b</id>
<content type='text'>
Since some qdiscs call qdisc_tree_decrease_qlen() (so qdisc_lookup())
without rtnl_lock(), adding and deleting from a qdisc list needs
additional locking. This patch adds global spinlock qdisc_list_lock
and wrapper functions for modifying the list. It is considered as a
temporary solution until hfsc_dequeue(), netem_dequeue() and
tbf_dequeue() (or qdisc_tree_decrease_qlen()) are redone.

With feedback from Herbert Xu and David S. Miller.

Signed-off-by: Jarek Poplawski &lt;jarkao2@gmail.com&gt;
Acked-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>pkt_sched: Fix qdisc_watchdog() vs. dev_deactivate() race</title>
<updated>2008-08-21T12:11:14Z</updated>
<author>
<name>Jarek Poplawski</name>
</author>
<published>2008-08-21T12:11:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2540e0511ea17e25831be543cdf9381e6209950d'/>
<id>urn:sha1:2540e0511ea17e25831be543cdf9381e6209950d</id>
<content type='text'>
dev_deactivate() can skip rescheduling of a qdisc by qdisc_watchdog()
or other timer calling netif_schedule() after dev_queue_deactivate().
We prevent this checking aliveness before scheduling the timer. Since
during deactivation the root qdisc is available only as qdisc_sleeping
additional accessor qdisc_root_sleeping() is created.

With feedback from Herbert Xu &lt;herbert@gondor.apana.org.au&gt;

Signed-off-by: Jarek Poplawski &lt;jarkao2@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Revert "pkt_sched: Add BH protection for qdisc_stab_lock."</title>
<updated>2008-08-19T05:33:05Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2008-08-19T05:33:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f3b9605d744df537dee10fd06630f35a62b343ec'/>
<id>urn:sha1:f3b9605d744df537dee10fd06630f35a62b343ec</id>
<content type='text'>
This reverts commit 1cfa26661a85549063e369e2b40275eeaa7b923c.

qdisc_destroy() runs fully under RTNL again and not from softint any
longer, so this change is no longer needed.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>pkt_sched: remove bogus block (cleanup)</title>
<updated>2008-08-19T05:30:01Z</updated>
<author>
<name>Ilpo Järvinen</name>
</author>
<published>2008-08-19T05:30:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e5befbd9525d92bb074b70192eb2c69aae65fc60'/>
<id>urn:sha1:e5befbd9525d92bb074b70192eb2c69aae65fc60</id>
<content type='text'>
...Last block local var got just deleted.

Signed-off-by: Ilpo Järvinen &lt;ilpo.jarvinen@helsinki.fi&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
