From patchwork Mon Mar 20 22:45:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 741235 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vn9z763Vgz9s7m for ; Tue, 21 Mar 2017 09:46:11 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="e6TAzknD"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755290AbdCTWqB (ORCPT ); Mon, 20 Mar 2017 18:46:01 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:35902 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754058AbdCTWp7 (ORCPT ); Mon, 20 Mar 2017 18:45:59 -0400 Received: by mail-pf0-f193.google.com with SMTP id r137so15468444pfr.3 for ; Mon, 20 Mar 2017 15:45:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:subject:from:to:cc:date:in-reply-to:references :mime-version:content-transfer-encoding; bh=esAh8HDarBo1TwIlRiQFyFFxyiPAx+vmRcx9Gl4OwFs=; b=e6TAzknDzdRabXp5o1mqHt/GBf61TkVmfAXOJsSyjZ5rgV+jH9hJztqsUp5D0wE8J8 Vv+MN3YvnHJq0dz4I9zFtH/70JQCGf7VGi8Y0A+PPQ9iV4BljjA8/e2ILQTWmMmF6+Fh WidJ8EA/9yPGVkBZZtYRWBB667X+ibpKrpZ+KNlr32rze/0JK20m2IjJTx73WgGRnzdZ /KKigfr8TzeP7/ERuYAC0Eij07E1Di1WANbaPaxoxetKQXAKuepTTxQZ/zckMl2gPsLi wzS+eRj5iAFJQ0FiH2eXgpm3VrXJ4UkY5XO9XDBwHmEg+jaYn2+QSwqzCYzHTzptmbte 2lGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:mime-version:content-transfer-encoding; bh=esAh8HDarBo1TwIlRiQFyFFxyiPAx+vmRcx9Gl4OwFs=; b=dnSDVw1qBFkTZTcMP3Qsqj9yoxl2eT4uJ/8fz/3TVcfn+emBT9GkbXXms39PxIBgsY dlmS/Ae3iNumtTdhCgOBv1DyoO54T5TUJgK0up2fHwMip90HV2TbKZ2NArlni+ZI9NZd ihAaHv9ZenT5qrPl7YR2bChq0fVVUvbspvei8hXiW6/juX8CHxWQbdaN54R/sGS3C7IU 65jFoKJ67d9eVZC65DHrkRbanN5arKLSKGCkhUozF5WpJpxIPwK+1B5cvoCAuoD0Zd/B izKicYBAytC019j2dXOLU4uv9tQoOHP431RVzM8Dus6dLBRUl+voPcz/uy83KnKoU3xP si/A== X-Gm-Message-State: AFeK/H3Ci+8ZixnhydM3no5L3jnOyByBYIp8bmDtufl9nAByqSEIaYn2BrY+hGkktu9f/g== X-Received: by 10.84.248.4 with SMTP id p4mr43237280pll.72.1490049949138; Mon, 20 Mar 2017 15:45:49 -0700 (PDT) Received: from ?IPv6:2620:0:1000:1704:996f:f372:800f:e4c? ([2620:0:1000:1704:996f:f372:800f:e4c]) by smtp.googlemail.com with ESMTPSA id v79sm28920065pfi.120.2017.03.20.15.45.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 Mar 2017 15:45:47 -0700 (PDT) Message-ID: <1490049947.16816.89.camel@edumazet-glaptop3.roam.corp.google.com> Subject: Re: [PATCH net 1/1] net: tcp: Permit user set TCP_MAXSEG to default value From: Eric Dumazet To: fgao@ikuai8.com Cc: davem@davemloft.net, kuznet@ms2.inr.ac.ru, jmorris@namei.org, netdev@vger.kernel.org, gfree.wind@gmail.com Date: Mon, 20 Mar 2017 15:45:47 -0700 In-Reply-To: <1490045417-32412-1-git-send-email-fgao@ikuai8.com> References: <1490045417-32412-1-git-send-email-fgao@ikuai8.com> X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Tue, 2017-03-21 at 05:30 +0800, fgao@ikuai8.com wrote: > From: Gao Feng > > 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 > --- > net/ipv4/tcp.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c > index 1e319a5..dd5e8e2 100644 > --- a/net/ipv4/tcp.c > +++ b/net/ipv4/tcp.c > @@ -2470,7 +2470,8 @@ 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 < 0 || (val > 0 && val < TCP_MIN_MSS) || > + val > MAX_TCP_WINDOW) { > err = -EINVAL; > break; > } This is a convoluted way to express that val == 0 is accepted ... What about : diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 1e319a525d51b0b603a5ccc5143381c752b9f2c7..7db78d72896ac7c4befba5966704ed18ecbac409 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -2469,8 +2469,9 @@ static int do_tcp_setsockopt(struct sock *sk, int level, case TCP_MAXSEG: /* 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) { + * know which interface is going to be used. + */ + if (val && (val < TCP_MIN_MSS || val > MAX_TCP_WINDOW)) { err = -EINVAL; break; }