All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Chuck Lever <chuck.lever@oracle.com>, linux-nfs@vger.kernel.org
Cc: kbuild-all@lists.01.org
Subject: Re: [PATCH v1] NFSD: Increase NFSD_MAX_OPS_PER_COMPOUND
Date: Sat, 3 Sep 2022 04:28:22 +0800	[thread overview]
Message-ID: <202209030446.TMHuJXY9-lkp@intel.com> (raw)
In-Reply-To: <166214486962.101939.2252490595444681944.stgit@bazille.1015granger.net>

Hi Chuck,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.0-rc3 next-20220901]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Chuck-Lever/NFSD-Increase-NFSD_MAX_OPS_PER_COMPOUND/20220903-025613
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 0b3acd1cc0222953035d18176b1e4aa06624fd6e
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20220903/202209030446.TMHuJXY9-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/2b18db50c1618d5efba82c205ab1d127cf210862
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Chuck-Lever/NFSD-Increase-NFSD_MAX_OPS_PER_COMPOUND/20220903-025613
        git checkout 2b18db50c1618d5efba82c205ab1d127cf210862
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=alpha SHELL=/bin/bash fs/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   fs/nfsd/nfs4xdr.c: In function 'nfsd4_decode_compound':
   fs/nfsd/nfs4xdr.c:2372:29: error: implicit declaration of function 'vcalloc'; did you mean 'kvcalloc'? [-Werror=implicit-function-declaration]
    2372 |                 argp->ops = vcalloc(argp->opcnt, sizeof(*argp->ops));
         |                             ^~~~~~~
         |                             kvcalloc
>> fs/nfsd/nfs4xdr.c:2372:27: warning: assignment to 'struct nfsd4_op *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
    2372 |                 argp->ops = vcalloc(argp->opcnt, sizeof(*argp->ops));
         |                           ^
   fs/nfsd/nfs4xdr.c: In function 'nfsd4_release_compoundargs':
   fs/nfsd/nfs4xdr.c:5396:17: error: implicit declaration of function 'vfree'; did you mean 'kvfree'? [-Werror=implicit-function-declaration]
    5396 |                 vfree(args->ops);
         |                 ^~~~~
         |                 kvfree
   cc1: some warnings being treated as errors


vim +2372 fs/nfsd/nfs4xdr.c

  2329	
  2330	static bool
  2331	nfsd4_decode_compound(struct nfsd4_compoundargs *argp)
  2332	{
  2333		struct nfsd4_op *op;
  2334		bool cachethis = false;
  2335		int auth_slack= argp->rqstp->rq_auth_slack;
  2336		int max_reply = auth_slack + 8; /* opcnt, status */
  2337		int readcount = 0;
  2338		int readbytes = 0;
  2339		__be32 *p;
  2340		int i;
  2341	
  2342		if (xdr_stream_decode_u32(argp->xdr, &argp->taglen) < 0)
  2343			return false;
  2344		max_reply += XDR_UNIT;
  2345		argp->tag = NULL;
  2346		if (unlikely(argp->taglen)) {
  2347			if (argp->taglen > NFSD4_MAX_TAGLEN)
  2348				return false;
  2349			p = xdr_inline_decode(argp->xdr, argp->taglen);
  2350			if (!p)
  2351				return false;
  2352			argp->tag = svcxdr_savemem(argp, p, argp->taglen);
  2353			if (!argp->tag)
  2354				return false;
  2355			max_reply += xdr_align_size(argp->taglen);
  2356		}
  2357	
  2358		if (xdr_stream_decode_u32(argp->xdr, &argp->minorversion) < 0)
  2359			return false;
  2360		if (xdr_stream_decode_u32(argp->xdr, &argp->opcnt) < 0)
  2361			return false;
  2362	
  2363		/*
  2364		 * NFS4ERR_RESOURCE is a more helpful error than GARBAGE_ARGS
  2365		 * here, so we return success at the xdr level so that
  2366		 * nfsd4_proc can handle this is an NFS-level error.
  2367		 */
  2368		if (argp->opcnt > NFSD_MAX_OPS_PER_COMPOUND)
  2369			return true;
  2370	
  2371		if (argp->opcnt > ARRAY_SIZE(argp->iops)) {
> 2372			argp->ops = vcalloc(argp->opcnt, sizeof(*argp->ops));
  2373			if (!argp->ops) {
  2374				argp->ops = argp->iops;
  2375				return false;
  2376			}
  2377		}
  2378	
  2379		if (argp->minorversion > NFSD_SUPPORTED_MINOR_VERSION)
  2380			argp->opcnt = 0;
  2381	
  2382		for (i = 0; i < argp->opcnt; i++) {
  2383			op = &argp->ops[i];
  2384			op->replay = NULL;
  2385	
  2386			if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0)
  2387				return false;
  2388			if (nfsd4_opnum_in_range(argp, op)) {
  2389				op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);
  2390				if (op->status != nfs_ok)
  2391					trace_nfsd_compound_decode_err(argp->rqstp,
  2392								       argp->opcnt, i,
  2393								       op->opnum,
  2394								       op->status);
  2395			} else {
  2396				op->opnum = OP_ILLEGAL;
  2397				op->status = nfserr_op_illegal;
  2398			}
  2399			op->opdesc = OPDESC(op);
  2400			/*
  2401			 * We'll try to cache the result in the DRC if any one
  2402			 * op in the compound wants to be cached:
  2403			 */
  2404			cachethis |= nfsd4_cache_this_op(op);
  2405	
  2406			if (op->opnum == OP_READ || op->opnum == OP_READ_PLUS) {
  2407				readcount++;
  2408				readbytes += nfsd4_max_reply(argp->rqstp, op);
  2409			} else
  2410				max_reply += nfsd4_max_reply(argp->rqstp, op);
  2411			/*
  2412			 * OP_LOCK and OP_LOCKT may return a conflicting lock.
  2413			 * (Special case because it will just skip encoding this
  2414			 * if it runs out of xdr buffer space, and it is the only
  2415			 * operation that behaves this way.)
  2416			 */
  2417			if (op->opnum == OP_LOCK || op->opnum == OP_LOCKT)
  2418				max_reply += NFS4_OPAQUE_LIMIT;
  2419	
  2420			if (op->status) {
  2421				argp->opcnt = i+1;
  2422				break;
  2423			}
  2424		}
  2425		/* Sessions make the DRC unnecessary: */
  2426		if (argp->minorversion)
  2427			cachethis = false;
  2428		svc_reserve(argp->rqstp, max_reply + readbytes);
  2429		argp->rqstp->rq_cachetype = cachethis ? RC_REPLBUFF : RC_NOCACHE;
  2430	
  2431		if (readcount > 1 || max_reply > PAGE_SIZE - auth_slack)
  2432			__clear_bit(RQ_SPLICE_OK, &argp->rqstp->rq_flags);
  2433	
  2434		return true;
  2435	}
  2436	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

      reply	other threads:[~2022-09-02 20:29 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-02 18:54 [PATCH v1] NFSD: Increase NFSD_MAX_OPS_PER_COMPOUND Chuck Lever
2022-09-02 20:28 ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202209030446.TMHuJXY9-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=chuck.lever@oracle.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.