From patchwork Thu Mar 19 11:04:41 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kinglong Mee X-Patchwork-Id: 6048351 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 5A3A09F399 for ; Thu, 19 Mar 2015 11:04:54 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 83B0D2051D for ; Thu, 19 Mar 2015 11:04:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9FFCA204EC for ; Thu, 19 Mar 2015 11:04:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753123AbbCSLEv (ORCPT ); Thu, 19 Mar 2015 07:04:51 -0400 Received: from mail-pd0-f182.google.com ([209.85.192.182]:33506 "EHLO mail-pd0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751994AbbCSLEv (ORCPT ); Thu, 19 Mar 2015 07:04:51 -0400 Received: by pdnc3 with SMTP id c3so73269155pdn.0 for ; Thu, 19 Mar 2015 04:04:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :content-type:content-transfer-encoding; bh=fI7Kk7gaGz5gJNYnKh60ciPGsrol7N36X4NB6/1qBCI=; b=eOc1OVFSvu2qNobWfc76QK2kSfPAJjL/4zW91Y8g86SVTeKAprSsYqHA1GVbDBHc0D 5XJk6tjwDKJXm5GkDGEX+lFZnSj+P+jXt/tFTM784a7XkmO71Qc7+7v/RXRptGxYULmi 0jOKWAG2y57PK3Rqrdg1dX/iMXbiv/73EHb4S1B6qTTOfaJDSmcPtQ0Ui0KnkCx1Qvsv vfq3RtCLj4DN26Y9cMhSg20fDai1nULdrPBy3ixVvir6mmBxS6Ok/XRlue2lz3kFCZHQ wixnjhetjUwv6AAZPjcsDUuH7FapKUaC7RZpnSEkVMegAsH5Fw/UcUWysN5cC2zkRd9z FKtw== X-Received: by 10.70.91.167 with SMTP id cf7mr150616310pdb.7.1426763090549; Thu, 19 Mar 2015 04:04:50 -0700 (PDT) Received: from [192.168.99.4] ([104.143.41.80]) by mx.google.com with ESMTPSA id qa3sm2461297pab.16.2015.03.19.04.04.46 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 Mar 2015 04:04:49 -0700 (PDT) Message-ID: <550AAD49.2040906@gmail.com> Date: Thu, 19 Mar 2015 19:04:41 +0800 From: Kinglong Mee User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: "J. Bruce Fields" CC: Linux NFS Mailing List , Christoph Hellwig Subject: [PATCH] NFSD: Take care the return value from nfsd4_decode_stateid Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Return status after nfsd4_decode_stateid failed. Signed-off-by: Kinglong Mee Reviewed-by: Christoph Hellwig --- fs/nfsd/nfs4xdr.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index df5e66c..c76654c 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1562,7 +1562,11 @@ nfsd4_decode_layoutget(struct nfsd4_compoundargs *argp, p = xdr_decode_hyper(p, &lgp->lg_seg.offset); p = xdr_decode_hyper(p, &lgp->lg_seg.length); p = xdr_decode_hyper(p, &lgp->lg_minlength); - nfsd4_decode_stateid(argp, &lgp->lg_sid); + + status = nfsd4_decode_stateid(argp, &lgp->lg_sid); + if (status) + return status; + READ_BUF(4); lgp->lg_maxcount = be32_to_cpup(p++); @@ -1580,7 +1584,11 @@ nfsd4_decode_layoutcommit(struct nfsd4_compoundargs *argp, p = xdr_decode_hyper(p, &lcp->lc_seg.offset); p = xdr_decode_hyper(p, &lcp->lc_seg.length); lcp->lc_reclaim = be32_to_cpup(p++); - nfsd4_decode_stateid(argp, &lcp->lc_sid); + + status = nfsd4_decode_stateid(argp, &lcp->lc_sid); + if (status) + return status; + READ_BUF(4); lcp->lc_newoffset = be32_to_cpup(p++); if (lcp->lc_newoffset) { @@ -1628,7 +1636,11 @@ nfsd4_decode_layoutreturn(struct nfsd4_compoundargs *argp, READ_BUF(16); p = xdr_decode_hyper(p, &lrp->lr_seg.offset); p = xdr_decode_hyper(p, &lrp->lr_seg.length); - nfsd4_decode_stateid(argp, &lrp->lr_sid); + + status = nfsd4_decode_stateid(argp, &lrp->lr_sid); + if (status) + return status; + READ_BUF(4); lrp->lrf_body_len = be32_to_cpup(p++); if (lrp->lrf_body_len > 0) {