All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [RFC v2 4/4] fs: Optimize credentials reference count for backing file ops
Date: Sun, 28 Jan 2024 20:27:55 +0800	[thread overview]
Message-ID: <202401282026.OY6K7pyk-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20240125235723.39507-5-vinicius.gomes@intel.com>
References: <20240125235723.39507-5-vinicius.gomes@intel.com>
TO: Vinicius Costa Gomes <vinicius.gomes@intel.com>

Hi Vinicius,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:

[auto build test WARNING on brauner-vfs/vfs.all]
[also build test WARNING on linus/master v6.8-rc1 next-20240125]
[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/Vinicius-Costa-Gomes/cleanup-Fix-discarded-const-warning-when-defining-guards/20240126-080128
base:   https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git vfs.all
patch link:    https://lore.kernel.org/r/20240125235723.39507-5-vinicius.gomes%40intel.com
patch subject: [RFC v2 4/4] fs: Optimize credentials reference count for backing file ops
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: i386-randconfig-141-20240128 (https://download.01.org/0day-ci/archive/20240128/202401282026.OY6K7pyk-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202401282026.OY6K7pyk-lkp@intel.com/

smatch warnings:
fs/backing-file.c:181 backing_file_read_iter() error: uninitialized symbol 'ret'.
fs/backing-file.c:265 backing_file_splice_read() error: uninitialized symbol 'ret'.
fs/backing-file.c:318 backing_file_mmap() error: uninitialized symbol 'ret'.

vim +/ret +181 fs/backing-file.c

a6293b3e285cd0 Amir Goldstein       2023-11-22  136  
a6293b3e285cd0 Amir Goldstein       2023-11-22  137  
a6293b3e285cd0 Amir Goldstein       2023-11-22  138  ssize_t backing_file_read_iter(struct file *file, struct iov_iter *iter,
a6293b3e285cd0 Amir Goldstein       2023-11-22  139  			       struct kiocb *iocb, int flags,
a6293b3e285cd0 Amir Goldstein       2023-11-22  140  			       struct backing_file_ctx *ctx)
a6293b3e285cd0 Amir Goldstein       2023-11-22  141  {
a6293b3e285cd0 Amir Goldstein       2023-11-22  142  	struct backing_aio *aio = NULL;
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  143  	const struct cred *old_cred = ctx->cred;
a6293b3e285cd0 Amir Goldstein       2023-11-22  144  	ssize_t ret;
a6293b3e285cd0 Amir Goldstein       2023-11-22  145  
a6293b3e285cd0 Amir Goldstein       2023-11-22  146  	if (WARN_ON_ONCE(!(file->f_mode & FMODE_BACKING)))
a6293b3e285cd0 Amir Goldstein       2023-11-22  147  		return -EIO;
a6293b3e285cd0 Amir Goldstein       2023-11-22  148  
a6293b3e285cd0 Amir Goldstein       2023-11-22  149  	if (!iov_iter_count(iter))
a6293b3e285cd0 Amir Goldstein       2023-11-22  150  		return 0;
a6293b3e285cd0 Amir Goldstein       2023-11-22  151  
a6293b3e285cd0 Amir Goldstein       2023-11-22  152  	if (iocb->ki_flags & IOCB_DIRECT &&
a6293b3e285cd0 Amir Goldstein       2023-11-22  153  	    !(file->f_mode & FMODE_CAN_ODIRECT))
a6293b3e285cd0 Amir Goldstein       2023-11-22  154  		return -EINVAL;
a6293b3e285cd0 Amir Goldstein       2023-11-22  155  
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  156  	scoped_guard(cred, old_cred) {
a6293b3e285cd0 Amir Goldstein       2023-11-22  157  		if (is_sync_kiocb(iocb)) {
a6293b3e285cd0 Amir Goldstein       2023-11-22  158  			rwf_t rwf = iocb_to_rw_flags(flags);
a6293b3e285cd0 Amir Goldstein       2023-11-22  159  
a6293b3e285cd0 Amir Goldstein       2023-11-22  160  			ret = vfs_iter_read(file, iter, &iocb->ki_pos, rwf);
a6293b3e285cd0 Amir Goldstein       2023-11-22  161  		} else {
a6293b3e285cd0 Amir Goldstein       2023-11-22  162  			ret = -ENOMEM;
a6293b3e285cd0 Amir Goldstein       2023-11-22  163  			aio = kmem_cache_zalloc(backing_aio_cachep, GFP_KERNEL);
a6293b3e285cd0 Amir Goldstein       2023-11-22  164  			if (!aio)
a6293b3e285cd0 Amir Goldstein       2023-11-22  165  				goto out;
a6293b3e285cd0 Amir Goldstein       2023-11-22  166  
a6293b3e285cd0 Amir Goldstein       2023-11-22  167  			aio->orig_iocb = iocb;
a6293b3e285cd0 Amir Goldstein       2023-11-22  168  			kiocb_clone(&aio->iocb, iocb, get_file(file));
a6293b3e285cd0 Amir Goldstein       2023-11-22  169  			aio->iocb.ki_complete = backing_aio_rw_complete;
a6293b3e285cd0 Amir Goldstein       2023-11-22  170  			refcount_set(&aio->ref, 2);
a6293b3e285cd0 Amir Goldstein       2023-11-22  171  			ret = vfs_iocb_iter_read(file, &aio->iocb, iter);
a6293b3e285cd0 Amir Goldstein       2023-11-22  172  			backing_aio_put(aio);
a6293b3e285cd0 Amir Goldstein       2023-11-22  173  			if (ret != -EIOCBQUEUED)
a6293b3e285cd0 Amir Goldstein       2023-11-22  174  				backing_aio_cleanup(aio, ret);
a6293b3e285cd0 Amir Goldstein       2023-11-22  175  		}
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  176  	}
a6293b3e285cd0 Amir Goldstein       2023-11-22  177  out:
a6293b3e285cd0 Amir Goldstein       2023-11-22  178  	if (ctx->accessed)
a6293b3e285cd0 Amir Goldstein       2023-11-22  179  		ctx->accessed(ctx->user_file);
a6293b3e285cd0 Amir Goldstein       2023-11-22  180  
a6293b3e285cd0 Amir Goldstein       2023-11-22 @181  	return ret;
a6293b3e285cd0 Amir Goldstein       2023-11-22  182  }
a6293b3e285cd0 Amir Goldstein       2023-11-22  183  EXPORT_SYMBOL_GPL(backing_file_read_iter);
a6293b3e285cd0 Amir Goldstein       2023-11-22  184  
a6293b3e285cd0 Amir Goldstein       2023-11-22  185  ssize_t backing_file_write_iter(struct file *file, struct iov_iter *iter,
a6293b3e285cd0 Amir Goldstein       2023-11-22  186  				struct kiocb *iocb, int flags,
a6293b3e285cd0 Amir Goldstein       2023-11-22  187  				struct backing_file_ctx *ctx)
a6293b3e285cd0 Amir Goldstein       2023-11-22  188  {
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  189  	const struct cred *old_cred = ctx->cred;
a6293b3e285cd0 Amir Goldstein       2023-11-22  190  	ssize_t ret;
a6293b3e285cd0 Amir Goldstein       2023-11-22  191  
a6293b3e285cd0 Amir Goldstein       2023-11-22  192  	if (WARN_ON_ONCE(!(file->f_mode & FMODE_BACKING)))
a6293b3e285cd0 Amir Goldstein       2023-11-22  193  		return -EIO;
a6293b3e285cd0 Amir Goldstein       2023-11-22  194  
a6293b3e285cd0 Amir Goldstein       2023-11-22  195  	if (!iov_iter_count(iter))
a6293b3e285cd0 Amir Goldstein       2023-11-22  196  		return 0;
a6293b3e285cd0 Amir Goldstein       2023-11-22  197  
a6293b3e285cd0 Amir Goldstein       2023-11-22  198  	ret = file_remove_privs(ctx->user_file);
a6293b3e285cd0 Amir Goldstein       2023-11-22  199  	if (ret)
a6293b3e285cd0 Amir Goldstein       2023-11-22  200  		return ret;
a6293b3e285cd0 Amir Goldstein       2023-11-22  201  
a6293b3e285cd0 Amir Goldstein       2023-11-22  202  	if (iocb->ki_flags & IOCB_DIRECT &&
a6293b3e285cd0 Amir Goldstein       2023-11-22  203  	    !(file->f_mode & FMODE_CAN_ODIRECT))
a6293b3e285cd0 Amir Goldstein       2023-11-22  204  		return -EINVAL;
a6293b3e285cd0 Amir Goldstein       2023-11-22  205  
a6293b3e285cd0 Amir Goldstein       2023-11-22  206  	/*
a6293b3e285cd0 Amir Goldstein       2023-11-22  207  	 * Stacked filesystems don't support deferred completions, don't copy
a6293b3e285cd0 Amir Goldstein       2023-11-22  208  	 * this property in case it is set by the issuer.
a6293b3e285cd0 Amir Goldstein       2023-11-22  209  	 */
a6293b3e285cd0 Amir Goldstein       2023-11-22  210  	flags &= ~IOCB_DIO_CALLER_COMP;
a6293b3e285cd0 Amir Goldstein       2023-11-22  211  
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  212  	scoped_guard(cred, old_cred) {
a6293b3e285cd0 Amir Goldstein       2023-11-22  213  		if (is_sync_kiocb(iocb)) {
a6293b3e285cd0 Amir Goldstein       2023-11-22  214  			rwf_t rwf = iocb_to_rw_flags(flags);
a6293b3e285cd0 Amir Goldstein       2023-11-22  215  
a6293b3e285cd0 Amir Goldstein       2023-11-22  216  			ret = vfs_iter_write(file, iter, &iocb->ki_pos, rwf);
a6293b3e285cd0 Amir Goldstein       2023-11-22  217  			if (ctx->end_write)
a6293b3e285cd0 Amir Goldstein       2023-11-22  218  				ctx->end_write(ctx->user_file);
a6293b3e285cd0 Amir Goldstein       2023-11-22  219  		} else {
a6293b3e285cd0 Amir Goldstein       2023-11-22  220  			struct backing_aio *aio;
a6293b3e285cd0 Amir Goldstein       2023-11-22  221  
a6293b3e285cd0 Amir Goldstein       2023-11-22  222  			ret = backing_aio_init_wq(iocb);
a6293b3e285cd0 Amir Goldstein       2023-11-22  223  			if (ret)
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  224  				return ret;
a6293b3e285cd0 Amir Goldstein       2023-11-22  225  
a6293b3e285cd0 Amir Goldstein       2023-11-22  226  			ret = -ENOMEM;
a6293b3e285cd0 Amir Goldstein       2023-11-22  227  			aio = kmem_cache_zalloc(backing_aio_cachep, GFP_KERNEL);
a6293b3e285cd0 Amir Goldstein       2023-11-22  228  			if (!aio)
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  229  				return ret;
a6293b3e285cd0 Amir Goldstein       2023-11-22  230  
a6293b3e285cd0 Amir Goldstein       2023-11-22  231  			aio->orig_iocb = iocb;
a6293b3e285cd0 Amir Goldstein       2023-11-22  232  			aio->end_write = ctx->end_write;
a6293b3e285cd0 Amir Goldstein       2023-11-22  233  			kiocb_clone(&aio->iocb, iocb, get_file(file));
a6293b3e285cd0 Amir Goldstein       2023-11-22  234  			aio->iocb.ki_flags = flags;
a6293b3e285cd0 Amir Goldstein       2023-11-22  235  			aio->iocb.ki_complete = backing_aio_queue_completion;
a6293b3e285cd0 Amir Goldstein       2023-11-22  236  			refcount_set(&aio->ref, 2);
a6293b3e285cd0 Amir Goldstein       2023-11-22  237  			ret = vfs_iocb_iter_write(file, &aio->iocb, iter);
a6293b3e285cd0 Amir Goldstein       2023-11-22  238  			backing_aio_put(aio);
a6293b3e285cd0 Amir Goldstein       2023-11-22  239  			if (ret != -EIOCBQUEUED)
a6293b3e285cd0 Amir Goldstein       2023-11-22  240  				backing_aio_cleanup(aio, ret);
a6293b3e285cd0 Amir Goldstein       2023-11-22  241  		}
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  242  	}
a6293b3e285cd0 Amir Goldstein       2023-11-22  243  	return ret;
a6293b3e285cd0 Amir Goldstein       2023-11-22  244  }
a6293b3e285cd0 Amir Goldstein       2023-11-22  245  EXPORT_SYMBOL_GPL(backing_file_write_iter);
a6293b3e285cd0 Amir Goldstein       2023-11-22  246  
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  247  ssize_t backing_file_splice_read(struct file *in, loff_t *ppos,
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  248  				 struct pipe_inode_info *pipe, size_t len,
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  249  				 unsigned int flags,
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  250  				 struct backing_file_ctx *ctx)
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  251  {
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  252  	const struct cred *old_cred = ctx->cred;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  253  	ssize_t ret;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  254  
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  255  	if (WARN_ON_ONCE(!(in->f_mode & FMODE_BACKING)))
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  256  		return -EIO;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  257  
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  258  	scoped_guard(cred, old_cred) {
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  259  		ret = vfs_splice_read(in, ppos, pipe, len, flags);
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  260  	}
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  261  
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  262  	if (ctx->accessed)
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  263  		ctx->accessed(ctx->user_file);
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  264  
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13 @265  	return ret;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  266  }
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  267  EXPORT_SYMBOL_GPL(backing_file_splice_read);
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  268  
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  269  ssize_t backing_file_splice_write(struct pipe_inode_info *pipe,
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  270  				  struct file *out, loff_t *ppos, size_t len,
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  271  				  unsigned int flags,
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  272  				  struct backing_file_ctx *ctx)
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  273  {
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  274  	const struct cred *old_cred = ctx->cred;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  275  	ssize_t ret;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  276  
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  277  	if (WARN_ON_ONCE(!(out->f_mode & FMODE_BACKING)))
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  278  		return -EIO;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  279  
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  280  	ret = file_remove_privs(ctx->user_file);
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  281  	if (ret)
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  282  		return ret;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  283  
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  284  	scoped_guard(cred, old_cred) {
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  285  		file_start_write(out);
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  286  		ret = iter_file_splice_write(pipe, out, ppos, len, flags);
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  287  		file_end_write(out);
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  288  	}
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  289  	if (ctx->end_write)
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  290  		ctx->end_write(ctx->user_file);
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  291  
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  292  	return ret;
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  293  }
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  294  EXPORT_SYMBOL_GPL(backing_file_splice_write);
9b7e9e2f5d5c3d Amir Goldstein       2023-10-13  295  
f567377e406c03 Amir Goldstein       2023-10-13  296  int backing_file_mmap(struct file *file, struct vm_area_struct *vma,
f567377e406c03 Amir Goldstein       2023-10-13  297  		      struct backing_file_ctx *ctx)
f567377e406c03 Amir Goldstein       2023-10-13  298  {
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  299  	const struct cred *old_cred = ctx->cred;
f567377e406c03 Amir Goldstein       2023-10-13  300  	int ret;
f567377e406c03 Amir Goldstein       2023-10-13  301  
f567377e406c03 Amir Goldstein       2023-10-13  302  	if (WARN_ON_ONCE(!(file->f_mode & FMODE_BACKING)) ||
f567377e406c03 Amir Goldstein       2023-10-13  303  	    WARN_ON_ONCE(ctx->user_file != vma->vm_file))
f567377e406c03 Amir Goldstein       2023-10-13  304  		return -EIO;
f567377e406c03 Amir Goldstein       2023-10-13  305  
f567377e406c03 Amir Goldstein       2023-10-13  306  	if (!file->f_op->mmap)
f567377e406c03 Amir Goldstein       2023-10-13  307  		return -ENODEV;
f567377e406c03 Amir Goldstein       2023-10-13  308  
f567377e406c03 Amir Goldstein       2023-10-13  309  	vma_set_file(vma, file);
f567377e406c03 Amir Goldstein       2023-10-13  310  
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  311  	scoped_guard(cred, old_cred) {
f567377e406c03 Amir Goldstein       2023-10-13  312  		ret = call_mmap(vma->vm_file, vma);
3da9951cd3bbfa Vinicius Costa Gomes 2024-01-25  313  	}
f567377e406c03 Amir Goldstein       2023-10-13  314  
f567377e406c03 Amir Goldstein       2023-10-13  315  	if (ctx->accessed)
f567377e406c03 Amir Goldstein       2023-10-13  316  		ctx->accessed(ctx->user_file);
f567377e406c03 Amir Goldstein       2023-10-13  317  
f567377e406c03 Amir Goldstein       2023-10-13 @318  	return ret;
f567377e406c03 Amir Goldstein       2023-10-13  319  }
f567377e406c03 Amir Goldstein       2023-10-13  320  EXPORT_SYMBOL_GPL(backing_file_mmap);
f567377e406c03 Amir Goldstein       2023-10-13  321  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

             reply	other threads:[~2024-01-28 12:28 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-28 12:27 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-01-25 23:57 [RFC v2 0/4] overlayfs: Optimize override/revert creds Vinicius Costa Gomes
2024-01-25 23:57 ` [RFC v2 4/4] fs: Optimize credentials reference count for backing file ops Vinicius Costa Gomes
2024-01-26 14:50   ` Amir Goldstein
2024-01-27  0:25     ` Vinicius Costa Gomes

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=202401282026.OY6K7pyk-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /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.