From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: yupeng <yupeng0921@gmail.com>,
"David S . Miller" <davem@davemloft.net>,
Sasha Levin <sashal@kernel.org>,
netdev@vger.kernel.org
Subject: [PATCH AUTOSEL 3.18 07/19] net: call sk_dst_reset when set SO_DONTROUTE
Date: Tue, 8 Jan 2019 14:35:19 -0500 [thread overview]
Message-ID: <20190108193534.124555-7-sashal@kernel.org> (raw)
In-Reply-To: <20190108193534.124555-1-sashal@kernel.org>
From: yupeng <yupeng0921@gmail.com>
[ Upstream commit 0fbe82e628c817e292ff588cd5847fc935e025f2 ]
after set SO_DONTROUTE to 1, the IP layer should not route packets if
the dest IP address is not in link scope. But if the socket has cached
the dst_entry, such packets would be routed until the sk_dst_cache
expires. So we should clean the sk_dst_cache when a user set
SO_DONTROUTE option. Below are server/client python scripts which
could reprodue this issue:
server side code:
==========================================================================
import socket
import struct
import time
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 9000))
s.listen(1)
sock, addr = s.accept()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_DONTROUTE, struct.pack('i', 1))
while True:
sock.send(b'foo')
time.sleep(1)
==========================================================================
client side code:
==========================================================================
import socket
import time
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('server_address', 9000))
while True:
data = s.recv(1024)
print(data)
==========================================================================
Signed-off-by: yupeng <yupeng0921@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/core/sock.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/core/sock.c b/net/core/sock.c
index 55f35765c6e0..76959d941a1f 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -720,6 +720,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
break;
case SO_DONTROUTE:
sock_valbool_flag(sk, SOCK_LOCALROUTE, valbool);
+ sk_dst_reset(sk);
break;
case SO_BROADCAST:
sock_valbool_flag(sk, SOCK_BROADCAST, valbool);
--
2.19.1
next prev parent reply other threads:[~2019-01-08 19:37 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-08 19:35 [PATCH AUTOSEL 3.18 01/19] MIPS: SiByte: Enable swiotlb for SWARM, LittleSur and BigSur Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 02/19] USB: serial: ftdi_sio: use rounding when calculating baud rate divisors Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 03/19] jffs2: Fix use of uninitialized delayed_work, lockdep breakage Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 04/19] pstore/ram: Do not treat empty buffers as valid Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 05/19] powerpc/pseries/cpuidle: Fix preempt warning Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 06/19] media: firewire: Fix app_info parameter type in avc_ca{,_app}_info Sasha Levin
2019-01-08 19:35 ` Sasha Levin [this message]
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 08/19] scsi: target: use consistent left-aligned ASCII INQUIRY data Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 09/19] clk: imx6q: reset exclusive gates on init Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 10/19] kconfig: fix memory leak when EOF is encountered in quotation Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 11/19] mmc: atmel-mci: do not assume idle after atmci_request_end Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 12/19] perf svghelper: Fix unchecked usage of strncpy() Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 13/19] perf parse-events: " Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 14/19] dm kcopyd: Fix bug causing workqueue stalls Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 15/19] dm snapshot: Fix excessive memory usage and " Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 16/19] ALSA: bebob: fix model-id of unit for Apogee Ensemble Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 17/19] sysfs: Disable lockdep for driver bind/unbind files Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 18/19] ocfs2: fix panic due to unrecovered local alloc Sasha Levin
2019-01-08 19:35 ` [PATCH AUTOSEL 3.18 19/19] mm, proc: be more verbose about unstable VMA flags in /proc/<pid>/smaps Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190108193534.124555-7-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=yupeng0921@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome