Skip to content

cachefiles: Fix excess dput() after end_removing()#918

Closed
vfsci-bot[bot] wants to merge 1 commit intovfs.base.cifrom
pw/1072865/vfs.base.ci
Closed

cachefiles: Fix excess dput() after end_removing()#918
vfsci-bot[bot] wants to merge 1 commit intovfs.base.cifrom
pw/1072865/vfs.base.ci

Conversation

@vfsci-bot
Copy link
Copy Markdown

@vfsci-bot vfsci-bot Bot commented Mar 26, 2026

Series: https://patchwork.kernel.org/project/linux-fsdevel/list/?series=1072865
Submitter: David Howells
Version: 2
Patches: 1/1
Message-ID: <508495.1774520128@warthog.procyon.org.uk>
Base: vfs.base.ci
Lore: https://lore.kernel.org/linux-fsdevel/508495.1774520128@warthog.procyon.org.uk


Automated by ml2pr

When cachefiles_cull() calls cachefiles_bury_object(), the latter eats the
former's ref on the victim dentry that it obtained from
cachefiles_lookup_for_cull().  However, commit 7bb1eb4 left the dput
of the victim in place, resulting in occasional:

  WARNING: fs/dcache.c:829 at dput.part.0+0xf5/0x110, CPU#7: cachefilesd/11831
  cachefiles_cull+0x8c/0xe0 [cachefiles]
  cachefiles_daemon_cull+0xcd/0x120 [cachefiles]
  cachefiles_daemon_write+0x14e/0x1d0 [cachefiles]
  vfs_write+0xc3/0x480
  ...

reports.

Actually, it's worse than that: cachefiles_bury_object() eats the ref it
was given - and then may continue to access the now-unref'd dentry it if it
turns out to be a directory.  So simply removing the aberrant dput() is not
sufficient.

Fix this by making cachefiles_bury_object() retain the ref itself around
end_removing() if it needs to keep it and then drop the ref before returning.

Fixes: bd6ede8 ("VFS/nfsd/cachefiles/ovl: introduce start_removing() and end_removing()")
Reported-by: Marc Dionne <marc.dionne@auristor.com>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: NeilBrown <neil@brown.name>
cc: Paulo Alcantara <pc@manguebit.org>
cc: netfs@lists.linux.dev
cc: linux-afs@lists.infradead.org
cc: linux-fsdevel@vger.kernel.org
@vfsci-bot
Copy link
Copy Markdown
Author

vfsci-bot Bot commented Apr 9, 2026

This PR is older than 14 days. Closing automatically. If the series is still relevant, a new version will create a new PR.


Automated by ml2pr

@vfsci-bot vfsci-bot Bot closed this Apr 9, 2026
@vfsci-bot vfsci-bot Bot deleted the pw/1072865/vfs.base.ci branch April 9, 2026 10:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant