From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1EE27C43381 for ; Fri, 8 Mar 2019 23:49:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DDB7820851 for ; Fri, 8 Mar 2019 23:49:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mkTXWHcp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726338AbfCHXr2 (ORCPT ); Fri, 8 Mar 2019 18:47:28 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:37248 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726307AbfCHXr2 (ORCPT ); Fri, 8 Mar 2019 18:47:28 -0500 Received: by mail-pg1-f196.google.com with SMTP id q206so15335579pgq.4 for ; Fri, 08 Mar 2019 15:47:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=PRp3ZdViDTytHiztXN846hlcxSZMTPNqH9Dr9NqhJtg=; b=mkTXWHcpmco0ZKNgkvhOuxUW17tyDqW4xmwgIwxXvSiORefpALhZpKjJZb0Wxvydhi KYqd+gAhTk5hdv+CHaPfyZ5cAOXloi7jhauPtLnpmBVECvFyOZdO7BXBxpGdEHJrBeC3 wCx1lZ62qczPeHmNRVxZnbhe5phPp90gCdZBzz400okHq6u5v0D8jphaR13DKWTvvh6T VVlGxu0C5I8Mr0ITHucy5/QkVB7kfeUdLKIISFNSY0T/fxpw/Sl/0l2Nl/I+EAHnhX78 oOj8/gL9kgFFWJqH3KhiEYSo+IAcSuOOBMw4hF+psjxOhyAe+THOPXm5Fb7A7gcriesw uaWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=PRp3ZdViDTytHiztXN846hlcxSZMTPNqH9Dr9NqhJtg=; b=K/fkwuRcjATdr3ovcdTx90uC3tSGFfsGJx5MSGq1pJz0lPT3rhrdaGAOs9er5ynBwR 3uTThhEZIgssWtagka/hzC3unVPf9BFaZBj/Gh/TjNEULQMoQzpz94ILrPHv1pEG656E 7cxH0q9Mq6kMpj2pqFdoI2wv/xxAUWrGxuTmFwHH9D0MGv30GU51lOoyVDsgVcmsklju dBkapDh3/cwdLb0Pf7qlCKDi8j9wZx/UY/OoEPITFN+ZgzkTl7R90HtTBtWBmK6DIIIB eEnwuxinUKt+u8Dp1OePDYk9ZB4OtCKMIZUz4ZcfxLTx/aDCQSxayClGB8k1xjBx0MU9 5V4g== X-Gm-Message-State: APjAAAXWdWKFcqjyOiZqDNhdA2dWesg5aMJ4j7B0Idmzi2v0qIkdrJDg /YatDWGyOv5KlYaw41mc1Mu9dxeG X-Google-Smtp-Source: APXvYqwXaCk/p8vR90GGfGJkanHVnzKus0eixSDDs+bIdw01cMsVdur1SJz46/hvTx8DDz/ibd9CWw== X-Received: by 2002:a65:62c5:: with SMTP id m5mr4413852pgv.77.1552088847271; Fri, 08 Mar 2019 15:47:27 -0800 (PST) Received: from ?IPv6:2620:15c:2c1:200:55c7:81e6:c7d8:94b? ([2620:15c:2c1:200:55c7:81e6:c7d8:94b]) by smtp.gmail.com with ESMTPSA id c13sm11825290pfd.121.2019.03.08.15.47.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Mar 2019 15:47:26 -0800 (PST) Subject: Re: [PATCH net] tcp: handle inet_csk_reqsk_queue_add() failures To: Guillaume Nault , Eric Dumazet Cc: netdev@vger.kernel.org References: <9b8502f9cec31c971e480ee2281f5cd7088b50df.1552077823.git.gnault@redhat.com> <20190308222231.GA26006@pc-2.home> <20190308224023.GA26735@pc-2.home> From: Eric Dumazet Message-ID: <69908e11-c7c7-b0aa-0382-618bae4e4572@gmail.com> Date: Fri, 8 Mar 2019 15:47:25 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20190308224023.GA26735@pc-2.home> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On 03/08/2019 02:40 PM, Guillaume Nault wrote: > On Fri, Mar 08, 2019 at 02:34:07PM -0800, Eric Dumazet wrote: >> >> >> On 03/08/2019 02:22 PM, Guillaume Nault wrote: >>> On Fri, Mar 08, 2019 at 01:33:02PM -0800, Eric Dumazet wrote: >>>> >>>> >>>> On 03/08/2019 01:09 PM, Guillaume Nault wrote: >>>>> @@ -216,7 +216,12 @@ struct sock *tcp_get_cookie_sock(struct sock *sk, struct sk_buff *skb, >>>>> refcount_set(&req->rsk_refcnt, 1); >>>>> tcp_sk(child)->tsoffset = tsoff; >>>>> sock_rps_save_rxhash(child, skb); >>>>> - inet_csk_reqsk_queue_add(sk, req, child); >>>>> + if (!inet_csk_reqsk_queue_add(sk, req, child)) { >>>>> + bh_unlock_sock(child); >>>>> + sock_put(child); >>>>> + child = NULL; >>>>> + reqsk_put(req); >>>> >>>> Since we use reqsk_free(req) in the same function, we can use reqsk_free(req) >>>> here as well ? >>>> >>> That was my first approach, but reqsk_free() doesn't like it: >>> >>> static inline void reqsk_free(struct request_sock *req) >>> { >>> /* temporary debugging */ >>> WARN_ON_ONCE(refcount_read(&req->rsk_refcnt) != 0); >>> ... >>> } >> >> Oh right, there is this refcount_set(&req->rsk_refcnt, 1) before the call >> to inet_csk_reqsk_queue_add(sk, req, child); >> >> So just change the TFO case only :) >> > Well.. refcount is 1 in the TFO case too. Arg... > > Long term, do we want to keep the WARN_ON_ONCE()? If so, we should > probably remove the comment. We want to keep the warning. We do not have a way to tell if the req was ever inserted in a hash table, so better play safe. Signed-off-by: Eric Dumazet Thanks !