diff options
author | Hangbin Liu <liuhangbin@gmail.com> | 2018-07-20 14:04:27 +0800 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2018-11-20 18:05:46 +0000 |
commit | 841092b44ffdb5c82e71ec2c4c7507a53b52220b (patch) | |
tree | f6b78f10fdcb4529660b21fe7eb2f18962f0e3eb /samples/kprobes | |
parent | 7113a9af08c596c62e819857c9f9a39f7de0403e (diff) | |
download | linux-stable-841092b44ffdb5c82e71ec2c4c7507a53b52220b.tar.gz linux-stable-841092b44ffdb5c82e71ec2c4c7507a53b52220b.tar.bz2 linux-stable-841092b44ffdb5c82e71ec2c4c7507a53b52220b.zip |
multicast: do not restore deleted record source filter mode to new one
commit 08d3ffcc0cfaba36f6b86fd568cc3bc773061fa6 upstream.
There are two scenarios that we will restore deleted records. The first is
when device down and up(or unmap/remap). In this scenario the new filter
mode is same with previous one. Because we get it from in_dev->mc_list and
we do not touch it during device down and up.
The other scenario is when a new socket join a group which was just delete
and not finish sending status reports. In this scenario, we should use the
current filter mode instead of restore old one. Here are 4 cases in total.
old_socket new_socket before_fix after_fix
IN(A) IN(A) ALLOW(A) ALLOW(A)
IN(A) EX( ) TO_IN( ) TO_EX( )
EX( ) IN(A) TO_EX( ) ALLOW(A)
EX( ) EX( ) TO_EX( ) TO_EX( )
Fixes: 24803f38a5c0b (igmp: do not remove igmp souce list info when set link down)
Fixes: 1666d49e1d416 (mld: do not remove mld souce list info when set link down)
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'samples/kprobes')
0 files changed, 0 insertions, 0 deletions