Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp691501pxb; Mon, 25 Oct 2021 16:44:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwO+LLorlrfM/dH3zcxLa0owtaYtgA15+5dWygyAESSBHUnIEobvN6McWCAqjfm5RElTOpX X-Received: by 2002:a50:ed85:: with SMTP id h5mr30683132edr.385.1635205489239; Mon, 25 Oct 2021 16:44:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635205489; cv=none; d=google.com; s=arc-20160816; b=bv79jjMOuYcc3dV1JWizVXH5X/+aAFJ0gIlK8Q+49JQe1ij5AAp03SG6QoHV+2B5u8 2ddJXUivnRNjhh6P5vKkhb5ZY+NV3bEXaI/5BAUcORn3Rh+GjFEPfHs7myE+xhWp/f9B x597AkdId+JitOmWcIcezfz2EYOp4+llBqoxhPpzYI4jdimt4/zXU0OAPnZ7P/ZdsA1e 8kSa9wwVuwTObJ/Nw6yytHrV2IodkqF+McYQNJ4f3ZXf1GFig4jD46zgDNxrWvTjQSIG bKL2Rd02Z/4ruyzq+EKl/0Psatz+ymvDpzSfVFzyiGCdgaROrDAXjJh7lKScYKQZ8LBT Hf6w== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qcV3bbecTjiwx0p6OgEGWljFQFjMpCKr9aDBip4EOZc=; b=ZQeObdxk3YFrl5+t2MRq1F8/CvCjjL1ceQNRU/iRKsvqeMPRM4tTzbSrQE7kQlOOzL ngjB6a7DxBc6ZvZ51zUPxxDawfbXSfJ5giFyhcSNzesBFb+VEgthb61y9OMDhSTdzWli +qo0NCGX6VGpbjeEm17GITRL+lLmyaF9DZc9YcScAduy6Dvo5gxIkiooOXq+T1lUR1L3 kbE5APKfwbzdI/3b+rb6y6QJvZ2kMb4me852hdziHT046N5E5R4V36hkVA3d77RmtYe6 HJhBtBrTDb0E29Lz8ZjcT3nTe8eUGuv/JM0iN1HHTPb300lJYpd4vw/Ccru44bLKJ7B8 JFjg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=b5EhlRgT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id nd7si35259907ejc.595.2021.10.25.16.44.23; Mon, 25 Oct 2021 16:44:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=b5EhlRgT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234771AbhJYTk1 (ORCPT + 99 others); Mon, 25 Oct 2021 15:40:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:49322 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236413AbhJYTeh (ORCPT ); Mon, 25 Oct 2021 15:34:37 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 450EC610A1; Mon, 25 Oct 2021 19:30:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1635190243; bh=fJO2zM3lNbBpdnT+XD0C2MDUrkXfNfKA8UFUJvPhCpM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b5EhlRgTreLUceRMWntrapQt8BG/GPYu/vEVXDODZe8CyOiNMoOWjv/yGs/8becmq IoP17/qoeeoaQx2Muo1frDuPYfRgno60edKvWemw1GInuH/pvQwdjs6rSCMOWyyjLL paR1+K1j3uA5PdzelFqh73Y2EXynSOQfyJRUzPPk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Benjamin Coddington , Chuck Lever , Sasha Levin Subject: [PATCH 5.10 11/95] NFSD: Keep existing listeners on portlist error Date: Mon, 25 Oct 2021 21:14:08 +0200 Message-Id: <20211025190958.504059365@linuxfoundation.org> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211025190956.374447057@linuxfoundation.org> References: <20211025190956.374447057@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Benjamin Coddington [ Upstream commit c20106944eb679fa3ab7e686fe5f6ba30fbc51e5 ] If nfsd has existing listening sockets without any processes, then an error returned from svc_create_xprt() for an additional transport will remove those existing listeners. We're seeing this in practice when userspace attempts to create rpcrdma transports without having the rpcrdma modules present before creating nfsd kernel processes. Fix this by checking for existing sockets before calling nfsd_destroy(). Signed-off-by: Benjamin Coddington Signed-off-by: Chuck Lever Signed-off-by: Sasha Levin --- fs/nfsd/nfsctl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c index ddf2b375632b..21c4ffda5f94 100644 --- a/fs/nfsd/nfsctl.c +++ b/fs/nfsd/nfsctl.c @@ -792,7 +792,10 @@ out_close: svc_xprt_put(xprt); } out_err: - nfsd_destroy(net); + if (!list_empty(&nn->nfsd_serv->sv_permsocks)) + nn->nfsd_serv->sv_nrthreads--; + else + nfsd_destroy(net); return err; } -- 2.33.0