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=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT 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 D1E98C282C8 for ; Mon, 28 Jan 2019 07:09:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8E82620881 for ; Mon, 28 Jan 2019 07:09:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nbhQvVPP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726823AbfA1HJD (ORCPT ); Mon, 28 Jan 2019 02:09:03 -0500 Received: from mail-pf1-f196.google.com ([209.85.210.196]:39596 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726612AbfA1HJC (ORCPT ); Mon, 28 Jan 2019 02:09:02 -0500 Received: by mail-pf1-f196.google.com with SMTP id r136so7600738pfc.6; Sun, 27 Jan 2019 23:09:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=HktZuwqSultugrlC5v2BrY+0/8juM2QQzZc2M1GSXDk=; b=nbhQvVPP8cu1J6yViwVSR2+rkcehkqHjlqaUM6/e8sTzUAMdcqtmvz7yItaDulnjYa AAqv1eUPYKgXSkvXvRLoI37YxJF72wh9uKGb/+JjwjxBjWwTXubA7k0xQ37C5lQgKhqc z6pXphKH6G6fjUP5ETOQuDZ41bsRadsXUKpZb6il9DccTnMtjDpjjU2sDUJP2VIu76V1 fZ7iEZqAM//LpLbl9iR4eqFEkdZ7BHPSHjYC66cN3JtkDXXhuoo3b1ba35Eva+5eMloc POKDg5i/2+D1SMox8qTdZEWDf1m1WI1G8dku+HUniz7B6XtGgAbbMVJH7j+uwgYiBKNi yeiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=HktZuwqSultugrlC5v2BrY+0/8juM2QQzZc2M1GSXDk=; b=Lywcwe+iGNSHEhUIhVhaRG7nU+c+4IktQQiwh6sXHTumqBM4aIgfMrOGCvWwYG6zHS u0Kr8eDADM3PZnFa0utpwQxGn+sf0jGLNWy+fx8Xm3sWq8VU+Co5rNtLMe1rAcRx07Ky Xx7hJW1pTBXIUBefOPaRrdLU4N5xfg23Z2MddMr8YXzndDX1jrFiup6imoi0ZowOPTzV dcGkeKYHgBJtqvxCyQLwTjOhTJ1aWpYJcezgoBy5m8OY72wD1itw1AbmkcHN1lxk1DVD kRYGVIrv0aZmXmT9LrdCWn2vRYcqkWeS7hPd/bXoudzEc+B4Kn348gubum4eF3hil+A6 Mv/A== X-Gm-Message-State: AJcUukcT7AB6+5TFf5Vhd9CfEDUw31W2427zwsTWHO7z/cdwHKzqVv1A qstXRC/eOXBAPU9DNLM5dEjF9CqAcEg= X-Google-Smtp-Source: ALg8bN4rTITJV4T5nYUdfuRKSJ+GphHbM2mGpxcMFHvlJtUBPDefP9tMt/gKTG6DlRtSwc4To0pjqA== X-Received: by 2002:a63:1e17:: with SMTP id e23mr18593453pge.130.1548659341961; Sun, 27 Jan 2019 23:09:01 -0800 (PST) Received: from localhost ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id p77sm57552855pfi.85.2019.01.27.23.09.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 27 Jan 2019 23:09:01 -0800 (PST) From: Xin Long To: network dev , linux-sctp@vger.kernel.org Cc: Marcelo Ricardo Leitner , Neil Horman , davem@davemloft.net Subject: [PATCH net-next 01/24] sctp: introduce SCTP_FUTURE/CURRENT/ALL_ASSOC Date: Mon, 28 Jan 2019 15:08:23 +0800 Message-Id: <3ca66b981a0fe9368bd976676fe7450634b091cd.1548659198.git.lucien.xin@gmail.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: References: In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch is to add 3 constants SCTP_FUTURE_ASSOC, SCTP_CURRENT_ASSOC and SCTP_ALL_ASSOC for reserved assoc_ids, as defined in rfc6458#section-7.2. And add the process for them when doing lookup and inserting in sctp_id2assoc and sctp_assoc_set_id. Signed-off-by: Xin Long --- include/uapi/linux/sctp.h | 4 ++++ net/sctp/associola.c | 7 +++++-- net/sctp/socket.c | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/uapi/linux/sctp.h b/include/uapi/linux/sctp.h index d584073..b8f2c4d 100644 --- a/include/uapi/linux/sctp.h +++ b/include/uapi/linux/sctp.h @@ -59,6 +59,10 @@ typedef __s32 sctp_assoc_t; +#define SCTP_FUTURE_ASSOC 0 +#define SCTP_CURRENT_ASSOC 1 +#define SCTP_ALL_ASSOC 2 + /* The following symbols come from the Sockets API Extensions for * SCTP . */ diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 201c888..b99f163 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -1651,8 +1651,11 @@ int sctp_assoc_set_id(struct sctp_association *asoc, gfp_t gfp) if (preload) idr_preload(gfp); spin_lock_bh(&sctp_assocs_id_lock); - /* 0 is not a valid assoc_id, must be >= 1 */ - ret = idr_alloc_cyclic(&sctp_assocs_id, asoc, 1, 0, GFP_NOWAIT); + /* 0, 1, 2 are used as SCTP_FUTURE_ASSOC, SCTP_CURRENT_ASSOC and + * SCTP_ALL_ASSOC, so an available id must be > SCTP_ALL_ASSOC. + */ + ret = idr_alloc_cyclic(&sctp_assocs_id, asoc, SCTP_ALL_ASSOC + 1, 0, + GFP_NOWAIT); spin_unlock_bh(&sctp_assocs_id_lock); if (preload) idr_preload_end(); diff --git a/net/sctp/socket.c b/net/sctp/socket.c index f93c3cf..a52d132 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -248,7 +248,7 @@ struct sctp_association *sctp_id2assoc(struct sock *sk, sctp_assoc_t id) } /* Otherwise this is a UDP-style socket. */ - if (!id || (id == (sctp_assoc_t)-1)) + if (id <= SCTP_ALL_ASSOC) return NULL; spin_lock_bh(&sctp_assocs_id_lock); -- 2.1.0