From: Daeho Jeong <daehoje...@google.com> In current condition check, if it detects writecount, it return -EBUSY regardless of f_mode of the file. Fixed it.
Signed-off-by: Daeho Jeong <daehoje...@google.com> --- fs/f2fs/file.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 0a958eef3d1f..ef5a844de53f 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -3509,7 +3509,8 @@ static int f2fs_release_compress_blocks(struct file *filp, unsigned long arg) inode_lock(inode); writecount = atomic_read(&inode->i_writecount); - if ((filp->f_mode & FMODE_WRITE && writecount != 1) || writecount) { + if ((filp->f_mode & FMODE_WRITE && writecount != 1) || + (!(filp->f_mode & FMODE_WRITE) && writecount)) { ret = -EBUSY; goto out; } -- 2.28.0.1011.ga647a8990f-goog