[bug report] nfs: make sillyrename an async operation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[ Ancient code.  But NeilB changed get_cred() recently so Smatch thinks
  it understands it now.  - dan ]

Hello Jeff Layton,

The patch d3d4152a5d59: "nfs: make sillyrename an async operation"
from Sep 17, 2010, leads to the following static checker warning:

	fs/nfs/unlink.c:351 nfs_async_rename()
	warn: 'data->cred' isn't an ERR_PTR

fs/nfs/unlink.c
   330  struct rpc_task *
   331  nfs_async_rename(struct inode *old_dir, struct inode *new_dir,
   332                   struct dentry *old_dentry, struct dentry *new_dentry,
   333                   void (*complete)(struct rpc_task *, struct nfs_renamedata *))
   334  {
   335          struct nfs_renamedata *data;
   336          struct rpc_message msg = { };
   337          struct rpc_task_setup task_setup_data = {
   338                  .rpc_message = &msg,
   339                  .callback_ops = &nfs_rename_ops,
   340                  .workqueue = nfsiod_workqueue,
   341                  .rpc_client = NFS_CLIENT(old_dir),
   342                  .flags = RPC_TASK_ASYNC,
   343          };
   344  
   345          data = kzalloc(sizeof(*data), GFP_KERNEL);
   346          if (data == NULL)
   347                  return ERR_PTR(-ENOMEM);
   348          task_setup_data.callback_data = data;
   349  
   350          data->cred = get_current_cred();
   351          if (IS_ERR(data->cred)) {

get_current_cred() always returns a valid pointer, I think?  Can we
just remove this condition?

   352                  struct rpc_task *task = ERR_CAST(data->cred);
   353                  kfree(data);
   354                  return task;
   355          }

regards,
dan carpenter



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux