Received: by 2002:ac0:e34a:0:0:0:0:0 with SMTP id g10csp928677imn; Tue, 26 Jul 2022 13:18:34 -0700 (PDT) X-Google-Smtp-Source: AGRyM1taVfRjFIYaauNPRzMH6YJPD5Xh+PgQv+aCFH5oLIacHzKdUI5HBl7oHmK92eBn54do5Bma X-Received: by 2002:a05:6402:540c:b0:434:d965:f8a with SMTP id ev12-20020a056402540c00b00434d9650f8amr20173334edb.30.1658866714372; Tue, 26 Jul 2022 13:18:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658866714; cv=none; d=google.com; s=arc-20160816; b=TIkfmjqHdi8FLOwNgoCCbtJNWzu9qh5Od3gC/IwyAUwj53tdpxuN07kjZ4af4zLIUb ENyCLkdv4Xb/kbRuE8VVINOcR1kIi1CZeTdp7+K6G9p3MndWTQqbWzUvoEL/qiyrm1SD TyYMU1c1fapClOEBoUeX0eE/F5V9RpainCxxEIWP6GUe8ReJiPlDwbyvA9YmgTXhmg/g qu4zlmdRNrrFiuNzoBasozgS2K8pWVEyTvrUyP372C6S1bLS7CXID2VuXuViZESYrCqN 8/FgU+qh5SrhjKM9fnXQspnRaik17IkrNNVdMnr3FfYc0rQiVO36+KozS5qrm0kEqP9o XSuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=xN/m9n+QB+L0yLZWGe1DxdsMbZbPfnSILzV2EtfRlDU=; b=qB/P0ZNBT/wV/qMCz6DPZM3sYRwjg43NTwheQbujLStMeaHdKPTGsOV4bhq29ORYfG wAsqMxnzTDvUPyEsH6fys0g4X+Q1wRbK041JNQzbjBxgnmrjWLf8YCvoC8RS8iauKMUX x+ick8AG5CddeDC8Q+hdbzriiScp5kBo5u/KxW12by/Va4JYEGWbnoQ9tgSCS+reXpkZ OJTRF4FicFcKml5oNSMLTEIDCkwf0NKLINuJag4TVQ0ZhKJU8L4Elz0oMP06y0nvYr1e AsC6R1AoF+NStsHf4TELnPGDz+TuZ6tUGQZm7W493JU9+4mFbC1nlEmyPjOo25Voi6m+ 1Y4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cfa.harvard.edu header.s=google header.b="zgnMm/bK"; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=cfa.harvard.edu Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e12-20020a17090658cc00b0072b147e5ccbsi18845483ejs.390.2022.07.26.13.16.48; Tue, 26 Jul 2022 13:18:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@cfa.harvard.edu header.s=google header.b="zgnMm/bK"; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=cfa.harvard.edu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231731AbiGZUNs (ORCPT + 99 others); Tue, 26 Jul 2022 16:13:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229929AbiGZUNs (ORCPT ); Tue, 26 Jul 2022 16:13:48 -0400 Received: from mail-qv1-xf35.google.com (mail-qv1-xf35.google.com [IPv6:2607:f8b0:4864:20::f35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 740DD32477 for ; Tue, 26 Jul 2022 13:13:46 -0700 (PDT) Received: by mail-qv1-xf35.google.com with SMTP id j11so11470889qvt.10 for ; Tue, 26 Jul 2022 13:13:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cfa.harvard.edu; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xN/m9n+QB+L0yLZWGe1DxdsMbZbPfnSILzV2EtfRlDU=; b=zgnMm/bKDjtWlOn9Njjd+LKqzZAyNsLo9uVwnCmF8IDUCB+OVL9Dc7rLjcp9M6to3d 5u0XjMktfnBNywIz7Q5DJ0nJwZkXa85/uT38/+CWBZXqYPg0w5/roMD1PogjOP7oGnzY YsLTkOfQ7i00WC193bJ6dsexJ8gtuPvP9/7UqSmjgflSlBOFezkcTH97Yzn2BQ5/rqbo lUUb4LUMba+GmuYBrzdHOCT8ozeP4AGvhRJfJvi4FgRfqO/yOa9pFzsGjf3pUKtSgEt5 Mw+TKbWrjehIPbrJqjjYRqnFLhJmxn9Gb9tlSKcSpKvoy/Sv+9nN2zNvqiS6HgQQou2a +RXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xN/m9n+QB+L0yLZWGe1DxdsMbZbPfnSILzV2EtfRlDU=; b=1NSCfkqDL9e+ksb02TzskyZXzKUrPKvJnJNwDoQ6XdTglpWNw5fPkBrt8O/zuD2AEc ngFLRbhCG2BPvkXU03HYxZiO9FX1tjFuFkLWm+wY+qPF5sz9XwuvcSzPTE8yvpaw9bLe iMUT/uuDengb1gU+Ck2PXTFHkZoJ2rDKGl0XNwVr33e84lfvjkNcA+6/91hILp2ZpG6W nS8wk90b8yKr8Hyxo7FhiqyeeAK4U1AzMqERG2tyrMlk3qThSrRd38fW/cF9AdLBR+PD ETLSY5jIA3omYN6iBE07/DvJ2PCFebGPCOZ5YUBa4ygHAoMaxVoITQhsLQv79aT84L6a EROA== X-Gm-Message-State: AJIora/o1SqI9f5gqFAzfHIqYtJoIIxnrNSekid7j+iBVRk3Q5aXfDsE hjh3a0UdxaZf5k2y2ZpdQRJ9pN4g4ptPYg== X-Received: by 2002:a05:6214:2423:b0:474:184d:866d with SMTP id gy3-20020a056214242300b00474184d866dmr16909122qvb.25.1658866425422; Tue, 26 Jul 2022 13:13:45 -0700 (PDT) Received: from pihe (dhcp-131-142-152-103.cfa.harvard.edu. [131.142.152.103]) by smtp.gmail.com with ESMTPSA id o7-20020a05620a2a0700b006b5683ee311sm12747714qkp.100.2022.07.26.13.13.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Jul 2022 13:13:45 -0700 (PDT) Received: from pihe (localhost [127.0.0.1]) by pihe (8.17.1/8.17.1) with ESMTPS id 26QKDhog103918 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 26 Jul 2022 16:13:43 -0400 Received: (from pumukli@localhost) by pihe (8.17.1/8.17.1/Submit) id 26QKDh36103809; Tue, 26 Jul 2022 16:13:43 -0400 From: Attila Kovacs To: Libtirpc-devel Mailing List Cc: Linux NFS Mailing list Subject: [PATCH] SUNRPC: mutexed access blacklist_read state variable. Date: Tue, 26 Jul 2022 16:12:43 -0400 Message-Id: <20220726201243.103800-1-attila.kovacs@cfa.harvard.edu> X-Mailer: git-send-email 2.37.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org From: Attila Kovacs bindresvport()_sa(), in bidresvport.c checks blacklist_read w/o mutex before calling load_blacklist() which changes blacklist_read() also unmutexed. Clearly, the point is to read the blacklist only once on the first call, but because the checking whether the blacklist is loaded is not mutexed, more than one thread may race to load the blacklist concurrently, which of course can jumble the list because of the race condition. The fix simply moves the checking within the mutexed aread of the code to eliminate the race condition. --- src/bindresvport.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bindresvport.c b/src/bindresvport.c index ef9b345..5c0ddcf 100644 --- a/src/bindresvport.c +++ b/src/bindresvport.c @@ -164,10 +164,11 @@ bindresvport_sa(sd, sa) int endport = ENDPORT; int i; + mutex_lock(&port_lock); + if (!blacklist_read) load_blacklist(); - mutex_lock(&port_lock); nports = ENDPORT - startport + 1; if (sa == NULL) { -- 2.37.1