summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorFrancesco Ruggeri <fruggeri@aristanetworks.com>2012-08-24 07:38:35 +0000
committerDavid S. Miller <davem@davemloft.net>2012-08-30 12:51:32 -0400
commitacbb219d5f53821b2d0080d047800410c0420ea1 (patch)
tree348529ced444b13de65015643505ce19b429488c /include
parentd821a4c4d11ad160925dab2bb009b8444beff484 (diff)
downloadlinux-stable-acbb219d5f53821b2d0080d047800410c0420ea1.tar.gz
linux-stable-acbb219d5f53821b2d0080d047800410c0420ea1.tar.bz2
linux-stable-acbb219d5f53821b2d0080d047800410c0420ea1.zip
net: ipv4: ipmr_expire_timer causes crash when removing net namespace
When tearing down a net namespace, ipv4 mr_table structures are freed without first deactivating their timers. This can result in a crash in run_timer_softirq. This patch mimics the corresponding behaviour in ipv6. Locking and synchronization seem to be adequate. We are about to kfree mrt, so existing code should already make sure that no other references to mrt are pending or can be created by incoming traffic. The functions invoked here do not cause new references to mrt or other race conditions to be created. Invoking del_timer_sync guarantees that ipmr_expire_timer is inactive. Both ipmr_expire_process (whose completion we may have to wait in del_timer_sync) and mroute_clean_tables internally use mfc_unres_lock or other synchronizations when needed, and they both only modify mrt. Tested in Linux 3.4.8. Signed-off-by: Francesco Ruggeri <fruggeri@aristanetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions