lkml.org 
[lkml]   [2023]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 6.5 06/52] fs/ntfs3: fix deadlock in mark_as_free_ex
    Date
    From: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>

    [ Upstream commit bfbe5b31caa74ab97f1784fe9ade5f45e0d3de91 ]

    Reported-by: syzbot+e94d98936a0ed08bde43@syzkaller.appspotmail.com
    Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/ntfs3/fsntfs.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    diff --git a/fs/ntfs3/fsntfs.c b/fs/ntfs3/fsntfs.c
    index edb51dc12f65f..fbfe21dbb4259 100644
    --- a/fs/ntfs3/fsntfs.c
    +++ b/fs/ntfs3/fsntfs.c
    @@ -2454,10 +2454,12 @@ void mark_as_free_ex(struct ntfs_sb_info *sbi, CLST lcn, CLST len, bool trim)
    {
    CLST end, i, zone_len, zlen;
    struct wnd_bitmap *wnd = &sbi->used.bitmap;
    + bool dirty = false;

    down_write_nested(&wnd->rw_lock, BITMAP_MUTEX_CLUSTERS);
    if (!wnd_is_used(wnd, lcn, len)) {
    - ntfs_set_state(sbi, NTFS_DIRTY_ERROR);
    + /* mark volume as dirty out of wnd->rw_lock */
    + dirty = true;

    end = lcn + len;
    len = 0;
    @@ -2511,6 +2513,8 @@ void mark_as_free_ex(struct ntfs_sb_info *sbi, CLST lcn, CLST len, bool trim)

    out:
    up_write(&wnd->rw_lock);
    + if (dirty)
    + ntfs_set_state(sbi, NTFS_DIRTY_ERROR);
    }

    /*
    --
    2.42.0
    \
     
     \ /
      Last update: 2023-10-29 23:56    [W:4.280 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site