mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 02:36:02 +00:00
\n
-----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEq1nRK9aeMoq1VSgcnJ2qBz9kQNkFAmdO+0sACgkQnJ2qBz9k QNmO3ggAj4+twojXoYiJrB2s2p0hLa9ZSEvUyWAAo7KiThoImceT/Duv2jMjEAzS iOiNkzrsEYWXJXzE9qVjcWi6nar/SxV+P2T0fyrws3eYIQ1elj4Ju+6F+k8pM6Ji twa6Y5JYLsFwmGvMsW/Sv46neFqPrdFK56R+zDPumTWxcRawqNU8IGtpEAodBEjo F34J7/JZUraa3pTIDrEHDnyDqBeFY3XySofw/4+T6bQ4FE/hiqsXKI6cNc8nXqh4 GB+qISWes3YzGgt6tCC0PM9V1c4s1V//avO+6DRe+wrcVx3I6ZIZuC3Qcy2Eq4jh bZ6tYYlSfMH15Ajkxhuw+3hVZDq8nw== =imng -----END PGP SIGNATURE----- Merge tag 'fs_for_v6.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs Pull quota and udf fixes from Jan Kara: "Two small UDF fixes for better handling of corrupted filesystem and a quota fix to fix handling of filesystem freezing" * tag 'fs_for_v6.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs: udf: Verify inode link counts before performing rename udf: Skip parent dir link count update if corrupted quota: flush quota_release_work upon quota writeback
This commit is contained in:
commit
3d24694909
@ -688,6 +688,8 @@ int dquot_writeback_dquots(struct super_block *sb, int type)
|
||||
|
||||
WARN_ON_ONCE(!rwsem_is_locked(&sb->s_umount));
|
||||
|
||||
flush_delayed_work("a_release_work);
|
||||
|
||||
for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
|
||||
if (type != -1 && cnt != type)
|
||||
continue;
|
||||
|
@ -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)));
|
||||
@ -787,8 +791,18 @@ static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,
|
||||
retval = -ENOTEMPTY;
|
||||
if (!empty_dir(new_inode))
|
||||
goto out_oiter;
|
||||
retval = -EFSCORRUPTED;
|
||||
if (new_inode->i_nlink != 2)
|
||||
goto out_oiter;
|
||||
}
|
||||
retval = -EFSCORRUPTED;
|
||||
if (old_dir->i_nlink < 3)
|
||||
goto out_oiter;
|
||||
is_dir = true;
|
||||
} else if (new_inode) {
|
||||
retval = -EFSCORRUPTED;
|
||||
if (new_inode->i_nlink < 1)
|
||||
goto out_oiter;
|
||||
}
|
||||
if (is_dir && old_dir != new_dir) {
|
||||
retval = udf_fiiter_find_entry(old_inode, &dotdot_name,
|
||||
|
Loading…
Reference in New Issue
Block a user