Description for this pull request:
- Fix xfstests generic/482 test failure. - Fix double free in delayed_free. -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEE6NzKS6Uv/XAAGHgyZwv7A1FEIQgFAmg1BJgWHGxpbmtpbmpl b25Aa2VybmVsLm9yZwAKCRBnC/sDUUQhCGtXD/9ZIcwcPFqAs08LU8XXi6PXw5/6 UbA868SO1tI1aOc5IzMZWmIc0tRYaDHigWazO1DHIENt/UvixVOdOuOgn/BcCjv+ 2bZdrId3H2n6JaDu9XR/yYZl7iotYtNpxNC1TKBGXF9ah3uZc6LTHAxVAgkPfWY/ 1mr6vLF1+K+Z5GRtC/U0HBkkdMcmd5pJUYWH0aZPUJnP/6drfbrzvIsI3m01xqWZ B/+TnjOmFQLBlv7mIabIqE2O/oERHVLjMRNwdkQOrpGLqtfJiHAs6O4NluVvBeQ1 sNUkAPl/2R/ya8CZdDpZYsDWTjJ7PHyHuUrCCj47A8lC/rAwOXidqUckSaGNtJDN Zk10N/ciiXgjuCBR6SoJrQHmHacCvyo/bamHzP23yevKxIY2t4DGuiOrYWZ7aXSZ T7WoptzxrhxGuIhV5l/req97ZNE2WOe3OkSRacAVjtHxmsjL/+/gGF//bupRIILt xEsZNvaxo84U468+O4FXZvaYlwCk31Jj6ihglnHmyGoCy14P9v/Ksf9DTZYYTZvm OVkaSa7B/+w10q/43u5V0FCwyfgk8KiPI/rgwi3KaAUhMbg+6EKhwwj651KytCuf xPyGvHmvvXR8h1fbm8pSX7R11jDBcM2nP2YxX3AJK/K8m5pW/+Dhi6iYXnjITJ8C vNPgd2OSyqzXOB/gOg== =p5zT -----END PGP SIGNATURE----- Merge tag 'exfat-for-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat Pull exfat updates from Namjae Jeon: - Fix xfstests generic/482 test failure - Fix double free in delayed_free * tag 'exfat-for-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat: exfat: do not clear volume dirty flag during sync exfat: fix double free in delayed_freepull/1112/head
commit
c69d8e9de0
|
|
@ -801,4 +801,5 @@ load_default:
|
|||
void exfat_free_upcase_table(struct exfat_sb_info *sbi)
|
||||
{
|
||||
kvfree(sbi->vol_utbl);
|
||||
sbi->vol_utbl = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,31 +36,12 @@ static void exfat_put_super(struct super_block *sb)
|
|||
struct exfat_sb_info *sbi = EXFAT_SB(sb);
|
||||
|
||||
mutex_lock(&sbi->s_lock);
|
||||
exfat_clear_volume_dirty(sb);
|
||||
exfat_free_bitmap(sbi);
|
||||
brelse(sbi->boot_bh);
|
||||
mutex_unlock(&sbi->s_lock);
|
||||
}
|
||||
|
||||
static int exfat_sync_fs(struct super_block *sb, int wait)
|
||||
{
|
||||
struct exfat_sb_info *sbi = EXFAT_SB(sb);
|
||||
int err = 0;
|
||||
|
||||
if (unlikely(exfat_forced_shutdown(sb)))
|
||||
return 0;
|
||||
|
||||
if (!wait)
|
||||
return 0;
|
||||
|
||||
/* If there are some dirty buffers in the bdev inode */
|
||||
mutex_lock(&sbi->s_lock);
|
||||
sync_blockdev(sb->s_bdev);
|
||||
if (exfat_clear_volume_dirty(sb))
|
||||
err = -EIO;
|
||||
mutex_unlock(&sbi->s_lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int exfat_statfs(struct dentry *dentry, struct kstatfs *buf)
|
||||
{
|
||||
struct super_block *sb = dentry->d_sb;
|
||||
|
|
@ -219,7 +200,6 @@ static const struct super_operations exfat_sops = {
|
|||
.write_inode = exfat_write_inode,
|
||||
.evict_inode = exfat_evict_inode,
|
||||
.put_super = exfat_put_super,
|
||||
.sync_fs = exfat_sync_fs,
|
||||
.statfs = exfat_statfs,
|
||||
.show_options = exfat_show_options,
|
||||
.shutdown = exfat_shutdown,
|
||||
|
|
@ -751,10 +731,14 @@ static void exfat_free(struct fs_context *fc)
|
|||
|
||||
static int exfat_reconfigure(struct fs_context *fc)
|
||||
{
|
||||
struct super_block *sb = fc->root->d_sb;
|
||||
fc->sb_flags |= SB_NODIRATIME;
|
||||
|
||||
/* volume flag will be updated in exfat_sync_fs */
|
||||
sync_filesystem(fc->root->d_sb);
|
||||
sync_filesystem(sb);
|
||||
mutex_lock(&EXFAT_SB(sb)->s_lock);
|
||||
exfat_clear_volume_dirty(sb);
|
||||
mutex_unlock(&EXFAT_SB(sb)->s_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue