linux/include
Eric Dumazet 5d944c640b gen_estimator: deadlock fix
One of my test machine got a deadlock during "tc" sessions,
adding/deleting classes & filters, using traffic estimators.

After some analysis, I believe we have a potential use after free case
in est_timer() :

spin_lock(e->stats_lock); << HERE >>
read_lock(&est_lock);
if (e->bstats == NULL)   << TEST >>
	goto skip;

Test is done a bit late, because after estimator is killed, and before
rcu grace period elapsed, we might already have freed/reuse memory where
e->stats_locks points to (some qdisc->q.lock)

A possible fix is to respect a rcu grace period at Qdisc dismantle time.

On 64bit, sizeof(struct Qdisc) is exactly 192 bytes. Adding 16 bytes to
it (for struct rcu_head) is a problem because it might change
performance, given QDISC_ALIGNTO is 32 bytes.

This is why I also change QDISC_ALIGNTO to 64 bytes, to satisfy most
current alignment requirements.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-04-01 18:38:48 -07:00
..
acpi ACPI: processor: export acpi_get_cpuid() 2010-03-14 21:17:18 -04:00
asm-generic dma-mapping: pci: move pci_set_dma_mask and pci_set_consistent_dma_mask to pci-dma-compat.h 2010-03-12 15:52:42 -08:00
crypto crypto: md5 - Add export support 2010-01-17 21:55:31 +11:00
drm Merge branch 'drm-radeon-testing' of /ssd/git/drm-radeon-next into drm-next-stage 2010-03-01 16:08:57 +10:00
keys
linux Add hotplug support to mcp251x driver 2010-03-30 23:51:09 -07:00
math-emu Fix misspellings of "truly" in comments. 2010-02-04 11:55:45 +01:00
media Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
mtd
net gen_estimator: deadlock fix 2010-04-01 18:38:48 -07:00
pcmcia Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2010-02-28 19:23:06 -08:00
rdma Merge branch 'misc' into for-next 2010-03-01 23:52:31 -08:00
rxrpc
scsi sysctl extern cleanup: sg 2010-03-12 15:53:10 -08:00
sound Merge branch 'topic/misc' into for-linus 2010-03-08 09:35:50 +01:00
trace Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-03-13 14:43:01 -08:00
video broadsheetfb: support storing waveform 2010-03-12 15:52:34 -08:00
xen
Kbuild