From patchwork Thu Mar 12 21:50:12 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 449660 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 033C414009B for ; Fri, 13 Mar 2015 08:50:55 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=google.com header.i=@google.com header.b=pV4jdeiC; dkim-adsp=none (unprotected policy); dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755103AbbCLVuu (ORCPT ); Thu, 12 Mar 2015 17:50:50 -0400 Received: from mail-oi0-f73.google.com ([209.85.218.73]:34134 "EHLO mail-oi0-f73.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753725AbbCLVut (ORCPT ); Thu, 12 Mar 2015 17:50:49 -0400 Received: by oifu20 with SMTP id u20so5354324oif.1 for ; Thu, 12 Mar 2015 14:50:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=4tYxga2VXSUDMt1CxmsXhD42cCv+ECQXsNhhgnvbtdM=; b=pV4jdeiCPF5E6uaIhOpqdQplIow2QCzQUkxfkcHWiD0AnWOOyAM46Z3S7hhwXEWz64 2Sj8DMRE7wtUv9M/W5f7emSboFYlXJOd3BVVIIwXrsDy2mjPSsq424BBM7Hlyy5sZrMI X+83BpksgWqdTyk3mpPMJ/JnjP42DTSKeyvQaXz85mKq0vVE+aT23DYg6/Jr24YPz/j7 5v5zQPd0UoxpSQfFDnVTu7UAXz/f+bNQgMPto+Sr3m+/smNjSTbSyy0Plf/bvw5ZCt+n 0Ng6tdsJ5O9kzmTTpBf2hUx2gu7ZCWsogg2kiG8nRu3NUHpXzGAgdLKEI/+Z4qNW/y5p b23g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=4tYxga2VXSUDMt1CxmsXhD42cCv+ECQXsNhhgnvbtdM=; b=biqpwPWklaYzK+QL/IuslXM8cxxnmL6GNUJp/bleUkdGT195VBG1/kyjqn9OE+rc+g R83WEzntt16Ztc/zc1alwQCsIiMLdxXiy4UETK2nYcTM9/Lvbjok1Q9ycV939QelX3iW ADWt0B2Ibtfy5rU/gTStsBS5Z3QPlhIQWIwrUaOS1bEzQEWBaIX1KWJ6Th6r5jP0MFEm S7qtuO5fykUxRDW9kPNLwysCf7pO+LB4qrEVb1hAfDekp7Xu0AMwF/+35MFpc5GP0G8B x6NQ29t1F5uIXolfWFe1hNYCXNjOGaNS+D8IALW8SeSUZSkzwyc1+CR325j6PsJf48JZ K2aQ== X-Gm-Message-State: ALoCoQkMev4I6XMoLJjMRRP/maCzBKZpSJbfP1AXgXpHXDRJ/9vsj271+G5MgfkoOtK5UZaE5FKI X-Received: by 10.42.95.209 with SMTP id g17mr38975620icn.18.1426197049040; Thu, 12 Mar 2015 14:50:49 -0700 (PDT) Received: from corpmail-nozzle1-2.hot.corp.google.com ([100.108.1.103]) by gmr-mx.google.com with ESMTPS id d72si6561yhb.5.2015.03.12.14.50.48 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 12 Mar 2015 14:50:49 -0700 (PDT) Received: from manihi.mtv.corp.google.com ([172.17.131.143]) by corpmail-nozzle1-2.hot.corp.google.com with ESMTP id NYIM7IeZ.1; Thu, 12 Mar 2015 14:50:48 -0700 Received: by manihi.mtv.corp.google.com (Postfix, from userid 160623) id 6C6E5A0B61; Thu, 12 Mar 2015 14:50:48 -0700 (PDT) From: Eric Dumazet To: "David S. Miller" Cc: netdev@vger.kernel.org, Eric Dumazet Subject: [PATCH net-next 3/7] inet: add rsk_refcnt/ireq_refcnt to request socks Date: Thu, 12 Mar 2015 14:50:12 -0700 Message-Id: <1426197016-14482-4-git-send-email-edumazet@google.com> X-Mailer: git-send-email 2.2.0.rc0.207.ga3a616c In-Reply-To: <1426197016-14482-1-git-send-email-edumazet@google.com> References: <1426197016-14482-1-git-send-email-edumazet@google.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When request socks will be in ehash, they'll need to be refcounted. This patch adds rsk_refcnt/ireq_refcnt macros, and adds reqsk_put() function, but nothing yet use them. Signed-off-by: Eric Dumazet --- include/net/inet_sock.h | 1 + include/net/request_sock.h | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index e6991bff91b0..dd8a8e37fa9e 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h @@ -80,6 +80,7 @@ struct inet_request_sock { #define ir_cookie req.__req_common.skc_cookie #define ireq_net req.__req_common.skc_net #define ireq_state req.__req_common.skc_state +#define ireq_refcnt req.__req_common.skc_refcnt kmemcheck_bitfield_begin(flags); u16 snd_wscale : 4, diff --git a/include/net/request_sock.h b/include/net/request_sock.h index 7f830ff67f08..e255ecf8bb40 100644 --- a/include/net/request_sock.h +++ b/include/net/request_sock.h @@ -49,6 +49,8 @@ int inet_rtx_syn_ack(struct sock *parent, struct request_sock *req); */ struct request_sock { struct sock_common __req_common; +#define rsk_refcnt __req_common.skc_refcnt + struct request_sock *dl_next; u16 mss; u8 num_retrans; /* number of retransmits */ @@ -86,6 +88,12 @@ static inline void reqsk_free(struct request_sock *req) __reqsk_free(req); } +static inline void reqsk_put(struct request_sock *req) +{ + if (atomic_dec_and_test(&req->rsk_refcnt)) + reqsk_free(req); +} + extern int sysctl_max_syn_backlog; /** struct listen_sock - listen state