[PATCH net v2 1/1] net: tcp: Permit user set TCP_MAXSEG to default value

Subsystems: networking [general], networking [tcp], the rest

STALE3421d

3 messages, 3 authors, 2017-03-21 · open the first message on its own page

[PATCH net v2 1/1] net: tcp: Permit user set TCP_MAXSEG to default value

From: <hidden>
Date: 2017-03-21 00:55:43

From: Gao Feng <redacted>

When user_mss is zero, it means use the default value. But the current
codes don't permit user set TCP_MAXSEG to the default value.
It would return the -EINVAL when val is zero.

Signed-off-by: Gao Feng <redacted>
---
 v2: Make codes more clearer, per Eric
 v1: initial version

 net/ipv4/tcp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 1e319a5..4f7f163 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -2470,7 +2470,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
 		/* Values greater than interface MTU won't take effect. However
 		 * at the point when this call is done we typically don't yet
 		 * know which interface is going to be used */
-		if (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW) {
+		if (!val && (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW)) {
 			err = -EINVAL;
 			break;
 		}
-- 
1.9.1

Re: [PATCH net v2 1/1] net: tcp: Permit user set TCP_MAXSEG to default value

From: Neal Cardwell <ncardwell@google.com>
Date: 2017-03-21 01:23:46

On Mon, Mar 20, 2017 at 8:45 PM, [off-list ref] wrote:
quoted hunk
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 1e319a5..4f7f163 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -2470,7 +2470,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
                /* Values greater than interface MTU won't take effect. However
                 * at the point when this call is done we typically don't yet
                 * know which interface is going to be used */
-               if (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW) {
+               if (!val && (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW)) {
                        err = -EINVAL;
                        break;
I believe the sense of the val check is flipped in the proposed patch.

I believe Eric suggested:

  if (val && (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW)) {

Has this been tested?

neal

Re: [PATCH net v2 1/1] net: tcp: Permit user set TCP_MAXSEG to default value

From: Feng Gao <hidden>
Date: 2017-03-21 01:27:38

On Tue, Mar 21, 2017 at 9:23 AM, Neal Cardwell [off-list ref] wrote:
On Mon, Mar 20, 2017 at 8:45 PM, [off-list ref] wrote:
quoted
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 1e319a5..4f7f163 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -2470,7 +2470,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
                /* Values greater than interface MTU won't take effect. However
                 * at the point when this call is done we typically don't yet
                 * know which interface is going to be used */
-               if (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW) {
+               if (!val && (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW)) {
                        err = -EINVAL;
                        break;
I believe the sense of the val check is flipped in the proposed patch.

I believe Eric suggested:

  if (val && (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW)) {

Has this been tested?

neal
Sorry, I missed the test this time because of the minor fix.
As a result, wrote the wrong logic.

Regards
Feng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help