OSDN Git Service

sock: Reset dst when changing sk_mark via setsockopt
authorDavid Barmann <david.barmann@stackpath.com>
Thu, 8 Nov 2018 14:13:35 +0000 (08:13 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Nov 2019 17:26:08 +0000 (18:26 +0100)
commit4c5ce7ca90e00164f954d727215fc227addc467c
tree12d4c41aa74edd12ed7fe185aaa35819587e366e
parent37464741cd55eba19672b0d2aa444cb41c6e2aea
sock: Reset dst when changing sk_mark via setsockopt

[ Upstream commit 50254256f382c56bde87d970f3d0d02fdb76ec70 ]

When setting the SO_MARK socket option, if the mark changes, the dst
needs to be reset so that a new route lookup is performed.

This fixes the case where an application wants to change routing by
setting a new sk_mark.  If this is done after some packets have already
been sent, the dst is cached and has no effect.

Signed-off-by: David Barmann <david.barmann@stackpath.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/core/sock.c