[PATCH v5 00/20] bio: check return values of bio_add_page

Johannes Thumshirn
2023-05-02T15:38:07Z

We have two functions for adding a page to a bio, __bio_add_page() which is
used to add a single page to a freshly created bio and bio_add_page() which is
used to add a page to an existing bio.

While __bio_add_page() is expected to succeed, bio_add_page() can fail.

This series converts the callers of bio_add_page() which can easily use
__bio_add_page() to using it and checks the return of bio_add_page() for
callers that don't work on a freshly created bio.

Lastly it marks bio_add_page() as __must_check so we don't have to go again
and audit all callers.

Changes to v4:
- Rebased onto latest Linus' master
- Dropped already merged patches
- Added Sergey's Reviewed-by

Changes to v3:
- Added __bio_add_folio and use it in iomap (Willy)
- Mark bio_add_folio must check (Willy)
- s/GFS/GFS2/ (Andreas)

Changes to v2:
- Removed 'wont fail' comments pointed out by Song

Changes to v1:
- Removed pointless comment pointed out by Willy
- Changed commit messages pointed out by Damien
- Colledted Damien's Reviews and Acks

Johannes Thumshirn (20):
swap: use __bio_add_page to add page to bio
drbd: use __bio_add_page to add page to bio
dm: dm-zoned: use __bio_add_page for adding single metadata page
fs: buffer: use __bio_add_page to add single page to bio
md: use __bio_add_page to add single page
md: raid5-log: use __bio_add_page to add single page
md: raid5: use __bio_add_page to add single page to new bio
jfs: logmgr: use __bio_add_page to add single page to bio
gfs2: use __bio_add_page for adding single page to bio
zonefs: use __bio_add_page for adding single page to bio
zram: use __bio_add_page for adding single page to bio
floppy: use __bio_add_page for adding single page to bio
md: check for failure when adding pages in alloc_behind_master_bio
md: raid1: use __bio_add_page for adding single page to bio
md: raid1: check if adding pages to resync bio fails
dm-crypt: check if adding pages to clone bio fails
block: mark bio_add_page as __must_check
block: add __bio_add_folio
fs: iomap: use __bio_add_folio where possible
block: mark bio_add_folio as __must_check

block/bio.c | 8 ++++++++
drivers/block/drbd/drbd_bitmap.c | 4 +---
drivers/block/floppy.c | 2 +-
drivers/block/zram/zram_drv.c | 2 +-
drivers/md/dm-crypt.c | 9 ++++++++-
drivers/md/dm-zoned-metadata.c | 6 +++---
drivers/md/md.c | 4 ++--
drivers/md/raid1-10.c | 11 ++++++-----
drivers/md/raid1.c | 7 +++++--
drivers/md/raid10.c | 20 ++++++++++----------
drivers/md/raid5-cache.c | 2 +-
drivers/md/raid5-ppl.c | 4 ++--
fs/buffer.c | 2 +-
fs/gfs2/ops_fstype.c | 2 +-
fs/iomap/buffered-io.c | 6 +++---
fs/jfs/jfs_logmgr.c | 4 ++--
fs/zonefs/super.c | 2 +-
include/linux/bio.h | 5 +++--
mm/page_io.c | 8 ++++----
19 files changed, 63 insertions(+), 45 deletions(-)

base-commit: 865fdb08197e657c59e74a35fa32362b12397f58
--
2.40.0