aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2024-11-26 12:46:00 +0100
committerJan Kara <jack@suse.cz>2024-11-26 22:54:24 +0100
commitc5566903af56dd1abb092f18dcb0c770d6cd8dcb (patch)
tree2d64dec3d3d71d2a21d5956f45bb7de31b6d0c18
parentquota: flush quota_release_work upon quota writeback (diff)
downloadwireguard-linux-c5566903af56dd1abb092f18dcb0c770d6cd8dcb.tar.xz
wireguard-linux-c5566903af56dd1abb092f18dcb0c770d6cd8dcb.zip
udf: Skip parent dir link count update if corrupted
If the parent directory link count is too low (likely directory inode corruption), just skip updating its link count as if it goes to 0 too early it can cause unexpected issues. Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to '')
-rw-r--r--fs/udf/namei.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/udf/namei.c b/fs/udf/namei.c
index 78a603129dd5..2be775d30ac1 100644
--- a/fs/udf/namei.c
+++ b/fs/udf/namei.c
@@ -517,7 +517,11 @@ static int udf_rmdir(struct inode *dir, struct dentry *dentry)
inode->i_nlink);
clear_nlink(inode);
inode->i_size = 0;
- inode_dec_link_count(dir);
+ if (dir->i_nlink >= 3)
+ inode_dec_link_count(dir);
+ else
+ udf_warn(inode->i_sb, "parent dir link count too low (%u)\n",
+ dir->i_nlink);
udf_add_fid_counter(dir->i_sb, true, -1);
inode_set_mtime_to_ts(dir,
inode_set_ctime_to_ts(dir, inode_set_ctime_current(inode)));