Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp10930ybt; Tue, 23 Jun 2020 13:57:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy2in6LuShgAGiVOxB4DcZvmr586NHr/WjiD9zEljN4LVIbtS7paH4isQk85xsvL6cf6GBo X-Received: by 2002:aa7:c68b:: with SMTP id n11mr23802495edq.278.1592945840779; Tue, 23 Jun 2020 13:57:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592945840; cv=none; d=google.com; s=arc-20160816; b=G+4ZGFpAGoL2UEZiSJmdnE9EPNBbXRE+9fgzq9CWNXtIC4LMXq7qi44WQmKAO8HtAe AF/eoBBwIrl5WUihHP5errVuqdxqeyFEoPVZ5+MSTxnaSORbvtMheED3q8l/WmVIdCwD x4PVTghgPyViDUnTReh6pJXBNtQsRnHNlHrcf85MqsDrEjwHMH5olIQBK5LNjvFblRU/ tMJ1cletJ5VOyv9lXP+7THm5hQbPMpS1uKAxQO+83KxI4PB9hv4y5JxzJ0ERhHfAm4HB A9iwUcJnB4MwF1pyrPJ2LxNaBGQM63tzJ4CDcypSrc1XVPz1+BNhpLVP9w4Is2XG4AO8 3VZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=H1tOZdo7enVPPEsKOuJ245bWh2QHdhjuc9Xd8vAZBok=; b=vK+LmBDGzIf41DiAgvhgjeNVFGDmJeEqfnDnnbwy6D+c7/K5My0gZE6OKymMgdk/Rf oaGKy4Be9Kx4+5+c5Im6HfBNelxYWsfi4qcUcNNPSXSsdK5FfPjCZaBtI+2k6sp14APN VW5v9GwygXHuI8Y6PiEj6At5EIF4ambHjUyf7oGwwJRlkz6QrIuFKNGA5O2lBOu4y0pF 458C1jn+E85qrxk9VbXvH4lpSugtBJ5Obp/GHAc5gk9m6F6ZiWEYvZlO2u1baPXCG1G7 tMC0fnoFCeycLKvu7hedAoZVRNXUE458gLijUbwfAoEvu5NMbCv6A16zrYHzfvNt7C9i TN2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ymEGM3e8; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l8si10816609ejb.670.2020.06.23.13.56.56; Tue, 23 Jun 2020 13:57:20 -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=@kernel.org header.s=default header.b=ymEGM3e8; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391867AbgFWUzo (ORCPT + 99 others); Tue, 23 Jun 2020 16:55:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:41748 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392578AbgFWUoc (ORCPT ); Tue, 23 Jun 2020 16:44:32 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0690D218AC; Tue, 23 Jun 2020 20:44:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592945072; bh=oLIKfJGCNx2bGod8RcZC+tmCFiA6XqLaQHeOA42g2oM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ymEGM3e8G3n2sbT90AcdMJYVwcWVSesHvYNFStSy1F5W6cjRVv9Mwx07Ys4L4RMje 4yF3Ked0aGWJJ78HxVfOxitXX31YJ1AKgSAHqvLZAxojaei9XY1ueY9MhzDuhpwdVg k7b7GMUHhM72nEfWhRvuO+QdTVTFG8cQhF59kRhc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xiyu Yang , Xin Tan , "J. Bruce Fields" , Sasha Levin Subject: [PATCH 4.14 028/136] nfsd: Fix svc_xprt refcnt leak when setup callback client failed Date: Tue, 23 Jun 2020 21:58:04 +0200 Message-Id: <20200623195305.070996150@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200623195303.601828702@linuxfoundation.org> References: <20200623195303.601828702@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xiyu Yang [ Upstream commit a4abc6b12eb1f7a533c2e7484cfa555454ff0977 ] nfsd4_process_cb_update() invokes svc_xprt_get(), which increases the refcount of the "c->cn_xprt". The reference counting issue happens in one exception handling path of nfsd4_process_cb_update(). When setup callback client failed, the function forgets to decrease the refcnt increased by svc_xprt_get(), causing a refcnt leak. Fix this issue by calling svc_xprt_put() when setup callback client failed. Signed-off-by: Xiyu Yang Signed-off-by: Xin Tan Signed-off-by: J. Bruce Fields Signed-off-by: Sasha Levin --- fs/nfsd/nfs4callback.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c index 80aeb19b176b2..22b784e7ef50b 100644 --- a/fs/nfsd/nfs4callback.c +++ b/fs/nfsd/nfs4callback.c @@ -1161,6 +1161,8 @@ static void nfsd4_process_cb_update(struct nfsd4_callback *cb) err = setup_callback_client(clp, &conn, ses); if (err) { nfsd4_mark_cb_down(clp, err); + if (c) + svc_xprt_put(c->cn_xprt); return; } } -- 2.25.1