v9fs.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@linaro.org>
To: ericvh@kernel.org
Cc: v9fs@lists.linux.dev
Subject: [bug report]  fs/9p: mitigate inode collisions
Date: Wed, 17 Apr 2024 21:11:53 +0300	[thread overview]
Message-ID: <5d527d1e-95de-4e36-845a-897cabdcaccd@moroto.mountain> (raw)

Hello Eric Van Hensbergen,

Commit 6ae7784008d9 (" fs/9p: mitigate inode collisions") from Apr
15, 2024 (linux-next), leads to the following Smatch static checker
warning:

	fs/9p/vfs_inode.c:513 v9fs_remove()
	error: uninitialized symbol 'v9fid'.

fs/9p/vfs_inode.c
    470 static int v9fs_remove(struct inode *dir, struct dentry *dentry, int flags)
    471 {
    472         struct inode *inode;
    473         int retval = -EOPNOTSUPP;
    474         struct p9_fid *v9fid, *dfid;
    475         struct v9fs_session_info *v9ses;
    476 
    477         p9_debug(P9_DEBUG_VFS, "inode: %p dentry: %p rmdir: %x\n",
    478                  dir, dentry, flags);
    479 
    480         v9ses = v9fs_inode2v9ses(dir);
    481         inode = d_inode(dentry);
    482         dfid = v9fs_parent_fid(dentry);
    483         if (IS_ERR(dfid)) {
    484                 retval = PTR_ERR(dfid);
    485                 p9_debug(P9_DEBUG_VFS, "fid lookup failed %d\n", retval);
    486                 return retval;
    487         }
    488         if (v9fs_proto_dotl(v9ses))
    489                 retval = p9_client_unlinkat(dfid, dentry->d_name.name,
    490                                             v9fs_at_to_dotl_flags(flags));
    491         p9_fid_put(dfid);
    492         if (retval == -EOPNOTSUPP) {
    493                 /* Try the one based on path */
    494                 v9fid = v9fs_fid_clone(dentry);
    495                 if (IS_ERR(v9fid))
    496                         return PTR_ERR(v9fid);
    497                 retval = p9_client_remove(v9fid);
    498         }

v9fid is not initialized if retval != -EOPNOTSUPP.

    499         if (!retval) {
    500                 /*
    501                  * directories on unlink should have zero
    502                  * link count
    503                  */
    504                 if (flags & AT_REMOVEDIR) {
    505                         clear_nlink(inode);
    506                         v9fs_dec_count(dir);
    507                 } else
    508                         v9fs_dec_count(inode);
    509 
    510                 if (inode->i_nlink <= 0) { /* no more refs unhash it */
    511                         remove_inode_hash(inode);
    512                 } else {
--> 513                         p9_debug(P9_DEBUG_ERROR,
    514                         "WARNING: unlink inode %lx %s qid->path=%llx w/i_nlink==%d\n",
    515                         inode->i_ino, dentry->d_name.name, v9fid->qid.path, inode->i_nlink);
                                                                   ^^^^^^^^^^^^^^^
Uninitialized.

    516                 }
    517 
    518                 v9fs_invalidate_inode_attr(inode);
    519                 v9fs_invalidate_inode_attr(dir);
    520 
    521                 /* invalidate all fids associated with dentry */
    522                 /* NOTE: This will not include open fids */
    523                 dentry->d_op->d_release(dentry);
    524         }
    525         return retval;
    526 }

regards,
dan carpenter

             reply	other threads:[~2024-04-17 18:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-17 18:11 Dan Carpenter [this message]
2024-04-17 18:50 ` [bug report] fs/9p: mitigate inode collisions Eric Van Hensbergen

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=5d527d1e-95de-4e36-845a-897cabdcaccd@moroto.mountain \
    --to=dan.carpenter@linaro.org \
    --cc=ericvh@kernel.org \
    --cc=v9fs@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).