Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp4536168imm; Mon, 17 Sep 2018 16:04:10 -0700 (PDT) X-Google-Smtp-Source: ANB0VdY+RkCRkZTNf15ca9bcYyIzJJQkmYkzZrST2mIpicmHUaAUvYRUlzmCrRPfSZRF8yL03zlQ X-Received: by 2002:a17:902:6a8a:: with SMTP id n10-v6mr26922901plk.288.1537225450868; Mon, 17 Sep 2018 16:04:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537225450; cv=none; d=google.com; s=arc-20160816; b=UouC0S64iiv2oeWSDi2bd5wWav9LhHEONP4S/n5rkKKt0kKbypMHt46N5z1IwJfbvL PLm5k7Wn1bPPPwrXNDGP4Kb7q/LIZHhBNodvNFC6qG217FJZDdQfxpm85VhwJzWZvOEb KrhkSA1SYr2bKpEUedcpNlL/b+AtLvrZPlTArAEqDmldQd3tGCvERlVeGUX+n+rTruT3 MaXF5BOaahe6gyHBHBDjBPhMRtdMBi3OucSch2runikfFzhHMK4/QBad6VdanZhDjO6E axqm4T7TupCmALCGyo55gWAYnrTJjrSRHRtAbob565M+htIctfOuENpzlkFaHwya77HE DkXA== 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; bh=+Whj/e/COV28EisVD97kORptfcBaBapQp7KXsmWEzYs=; b=w8iJF/5lil+q+LPiK5ZN24N5Pa3aGmn2Zy6I33mGEl3WtiBxgS3zRU7zbuEjjGi5fl qq1Y0Tk1befDiIqVRCbdU7gwGbxa/5o9hvfaNJ9A+fo63XGcW0uGPTxiB8JSjBJv3W6/ eLYTW89S0F+nCYyjownhk6Z3xW39y/gCBKwg5Cn2ja7jNbJmR8dpkEGr9VCFM3nu9MwO Vu9LkdwOTaH8ZoPgF8jAH//9i1SOG6L7aLl8BRtUI5Jg4w/6mJarJ67vmLh1L2379u77 exUdAQ0KsFDm9/mEAxZIoyjbkqkQKaAxVkt+d5lPYPdIniDjLJqjnnl1+qOTpcOgk3eN YrBw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w3-v6si15876157pgb.119.2018.09.17.16.03.55; Mon, 17 Sep 2018 16:04:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730645AbeIREdF (ORCPT + 99 others); Tue, 18 Sep 2018 00:33:05 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:48936 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727202AbeIREdE (ORCPT ); Tue, 18 Sep 2018 00:33:04 -0400 Received: from localhost (li1825-44.members.linode.com [172.104.248.44]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 154C1C03; Mon, 17 Sep 2018 23:03:34 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Olga Kornievskaia , Anna Schumaker , Sasha Levin Subject: [PATCH 4.14 047/126] NFSv4.0 fix client reference leak in callback Date: Tue, 18 Sep 2018 00:41:35 +0200 Message-Id: <20180917211707.702093233@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180917211703.481236999@linuxfoundation.org> References: <20180917211703.481236999@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Olga Kornievskaia [ Upstream commit 32cd3ee511f4e07ca25d71163b50e704808d22f4 ] If there is an error during processing of a callback message, it leads to refrence leak on the client structure and eventually an unclean superblock. Signed-off-by: Olga Kornievskaia Signed-off-by: Anna Schumaker Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- fs/nfs/callback_xdr.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) --- a/fs/nfs/callback_xdr.c +++ b/fs/nfs/callback_xdr.c @@ -904,16 +904,21 @@ static __be32 nfs4_callback_compound(str if (hdr_arg.minorversion == 0) { cps.clp = nfs4_find_client_ident(SVC_NET(rqstp), hdr_arg.cb_ident); - if (!cps.clp || !check_gss_callback_principal(cps.clp, rqstp)) + if (!cps.clp || !check_gss_callback_principal(cps.clp, rqstp)) { + if (cps.clp) + nfs_put_client(cps.clp); goto out_invalidcred; + } } cps.minorversion = hdr_arg.minorversion; hdr_res.taglen = hdr_arg.taglen; hdr_res.tag = hdr_arg.tag; - if (encode_compound_hdr_res(&xdr_out, &hdr_res) != 0) + if (encode_compound_hdr_res(&xdr_out, &hdr_res) != 0) { + if (cps.clp) + nfs_put_client(cps.clp); return rpc_system_err; - + } while (status == 0 && nops != hdr_arg.nops) { status = process_op(nops, rqstp, &xdr_in, rqstp->rq_argp, &xdr_out, rqstp->rq_resp,