On 10/24/25 21:13, Yongpeng Yang wrote:
> From: Yongpeng Yang <[email protected]>
> 
> Change the type of the unlock parameter of f2fs_put_page to bool.
> All callers should consistently pass true or false. No logical change.
> 
> Signed-off-by: Yongpeng Yang <[email protected]>
> ---
>  fs/f2fs/compress.c |  8 ++++----
>  fs/f2fs/data.c     | 12 ++++--------
>  fs/f2fs/f2fs.h     |  2 +-
>  fs/f2fs/gc.c       |  6 +++---
>  fs/f2fs/inline.c   |  4 ++--
>  fs/f2fs/namei.c    |  4 ++--
>  6 files changed, 16 insertions(+), 20 deletions(-)
> 
> diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c
> index 811bfe38e5c0..716004ba44dc 100644
> --- a/fs/f2fs/compress.c
> +++ b/fs/f2fs/compress.c
> @@ -120,7 +120,7 @@ static void f2fs_unlock_rpages(struct compress_ctx *cc, 
> int len)
>  }
>  
>  static void f2fs_put_rpages_wbc(struct compress_ctx *cc,
> -             struct writeback_control *wbc, bool redirty, int unlock)
> +             struct writeback_control *wbc, bool redirty, bool unlock)
>  {
>       unsigned int i;
>  
> @@ -1202,7 +1202,7 @@ bool f2fs_compress_write_end(struct inode *inode, void 
> *fsdata,
>       if (copied)
>               set_cluster_dirty(&cc);
>  
> -     f2fs_put_rpages_wbc(&cc, NULL, false, 1);
> +     f2fs_put_rpages_wbc(&cc, NULL, false, true);
>       f2fs_destroy_compress_ctx(&cc, false);
>  
>       return first_index;
> @@ -1605,7 +1605,7 @@ int f2fs_write_multi_pages(struct compress_ctx *cc,
>                       add_compr_block_stat(cc->inode, cc->cluster_size);
>                       goto write;
>               } else if (err) {
> -                     f2fs_put_rpages_wbc(cc, wbc, true, 1);
> +                     f2fs_put_rpages_wbc(cc, wbc, true, true);
>                       goto destroy_out;
>               }
>  
> @@ -1619,7 +1619,7 @@ int f2fs_write_multi_pages(struct compress_ctx *cc,
>       f2fs_bug_on(F2FS_I_SB(cc->inode), *submitted);
>  
>       err = f2fs_write_raw_pages(cc, submitted, wbc, io_type);
> -     f2fs_put_rpages_wbc(cc, wbc, false, 0);
> +     f2fs_put_rpages_wbc(cc, wbc, false, false);
>  destroy_out:
>       f2fs_destroy_compress_ctx(cc, false);
>       return err;
> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> index 1f090c018f1b..daca2a42b20c 100644
> --- a/fs/f2fs/data.c
> +++ b/fs/f2fs/data.c
> @@ -3621,8 +3621,7 @@ static int f2fs_write_begin(const struct kiocb *iocb,
>               folio_lock(folio);
>               if (folio->mapping != mapping) {
>                       /* The folio got truncated from under us */
> -                     folio_unlock(folio);
> -                     folio_put(folio);
> +                     f2fs_folio_put(folio, true);

Yongpeng,

I prefer to not use f2fs_folio_put() here, to avoid potential null-ptr 
dereference
on folio->mapping via f2fs_folio_put() -> F2FS_F_SB(), as folio->mapping could 
be
NULL due to race w/ truncation.

>                       goto repeat;
>               }
>       }
> @@ -3653,8 +3652,7 @@ static int f2fs_write_begin(const struct kiocb *iocb,
>  
>               folio_lock(folio);
>               if (unlikely(folio->mapping != mapping)) {
> -                     folio_unlock(folio);
> -                     folio_put(folio);
> +                     f2fs_folio_put(folio, true);

Ditto,

Thanks,

>                       goto repeat;
>               }
>               if (unlikely(!folio_test_uptodate(folio))) {
> @@ -3665,8 +3663,7 @@ static int f2fs_write_begin(const struct kiocb *iocb,
>       return 0;
>  
>  put_folio:
> -     folio_unlock(folio);
> -     folio_put(folio);
> +     f2fs_folio_put(folio, true);
>  fail:
>       f2fs_write_failed(inode, pos + len);
>       return err;
> @@ -3722,8 +3719,7 @@ static int f2fs_write_end(const struct kiocb *iocb,
>                                       pos + copied);
>       }
>  unlock_out:
> -     folio_unlock(folio);
> -     folio_put(folio);
> +     f2fs_folio_put(folio, true);
>       f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
>       return copied;
>  }
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index 94eb9a2d3a73..32fb2e7338b7 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -2979,7 +2979,7 @@ static inline void f2fs_folio_put(struct folio *folio, 
> bool unlock)
>       folio_put(folio);
>  }
>  
> -static inline void f2fs_put_page(struct page *page, int unlock)
> +static inline void f2fs_put_page(struct page *page, bool unlock)
>  {
>       if (!page)
>               return;
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index 22fe6e2c6d5c..fd8bb0424bf3 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -1278,7 +1278,7 @@ static int ra_data_block(struct inode *inode, pgoff_t 
> index)
>       err = f2fs_submit_page_bio(&fio);
>       if (err)
>               goto put_encrypted_page;
> -     f2fs_put_page(fio.encrypted_page, 0);
> +     f2fs_put_page(fio.encrypted_page, false);
>       f2fs_folio_put(folio, true);
>  
>       f2fs_update_iostat(sbi, inode, FS_DATA_READ_IO, F2FS_BLKSIZE);
> @@ -1286,7 +1286,7 @@ static int ra_data_block(struct inode *inode, pgoff_t 
> index)
>  
>       return 0;
>  put_encrypted_page:
> -     f2fs_put_page(fio.encrypted_page, 1);
> +     f2fs_put_page(fio.encrypted_page, true);
>  put_folio:
>       f2fs_folio_put(folio, true);
>       return err;
> @@ -1442,7 +1442,7 @@ static int move_data_block(struct inode *inode, block_t 
> bidx,
>       f2fs_update_data_blkaddr(&dn, newaddr);
>       set_inode_flag(inode, FI_APPEND_WRITE);
>  
> -     f2fs_put_page(fio.encrypted_page, 1);
> +     f2fs_put_page(fio.encrypted_page, true);
>  recover_block:
>       if (err)
>               f2fs_do_replace_block(fio.sbi, &sum, newaddr, fio.old_blkaddr,
> diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
> index 58ac831ef704..e5c6a08b7e4f 100644
> --- a/fs/f2fs/inline.c
> +++ b/fs/f2fs/inline.c
> @@ -287,7 +287,7 @@ int f2fs_write_inline_data(struct inode *inode, struct 
> folio *folio)
>       set_inode_flag(inode, FI_DATA_EXIST);
>  
>       folio_clear_f2fs_inline(ifolio);
> -     f2fs_folio_put(ifolio, 1);
> +     f2fs_folio_put(ifolio, true);
>       return 0;
>  }
>  
> @@ -577,7 +577,7 @@ static int f2fs_move_rehashed_dirents(struct inode *dir, 
> struct folio *ifolio,
>       f2fs_i_depth_write(dir, 0);
>       f2fs_i_size_write(dir, MAX_INLINE_DATA(dir));
>       folio_mark_dirty(ifolio);
> -     f2fs_folio_put(ifolio, 1);
> +     f2fs_folio_put(ifolio, true);
>  
>       kfree(backup_dentry);
>       return err;
> diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
> index 68b33e8089b0..07ceed173ffe 100644
> --- a/fs/f2fs/namei.c
> +++ b/fs/f2fs/namei.c
> @@ -1259,11 +1259,11 @@ static int f2fs_cross_rename(struct inode *old_dir, 
> struct dentry *old_dentry,
>       return 0;
>  out_new_dir:
>       if (new_dir_entry) {
> -             f2fs_folio_put(new_dir_folio, 0);
> +             f2fs_folio_put(new_dir_folio, false);
>       }
>  out_old_dir:
>       if (old_dir_entry) {
> -             f2fs_folio_put(old_dir_folio, 0);
> +             f2fs_folio_put(old_dir_folio, false);
>       }
>  out_new:
>       f2fs_folio_put(new_folio, false);



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to