ufs_get_locked_folio() may return either an error pointer (when read_mapping_folio() fails) or NULL (when a concurrent truncate has detached the folio from its mapping). In ufs_alloc_lastblock() the NULL path cannot be reached in practice because the only caller, ufs_truncate(), holds i_rwsem and so serialises against other truncates. Still, the current IS_ERR()-only check does not match the documented contract of ufs_get_locked_folio() and is fragile against future callers. Use IS_ERR_OR_NULL() to match the helper's return contract. Signed-off-by: Ingyu Jang Reviewed-by: Jan Kara --- Changes in v2: - Rewrote changelog per Jan Kara's review feedback to clarify that the NULL path is unreachable in practice (i_rwsem in ufs_truncate()), and framed the change as matching the helper's return contract / future- proofing rather than fixing an active race. - Diff unchanged. Link to v1: https://lore.kernel.org/all/20260514193256.2556905-1-ingyujang25@korea.ac.kr/ fs/ufs/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c index 440d014cc5ed5..989ff3d3ad179 100644 --- a/fs/ufs/inode.c +++ b/fs/ufs/inode.c @@ -1051,7 +1051,7 @@ static int ufs_alloc_lastblock(struct inode *inode, loff_t size) folio = ufs_get_locked_folio(mapping, lastfrag >> (PAGE_SHIFT - inode->i_blkbits)); - if (IS_ERR(folio)) { + if (IS_ERR_OR_NULL(folio)) { err = -EIO; goto out; } -- 2.34.1