diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c index e678fa517cf7e93a280e26a495b40b2f895667c0..2bbdae936076cc35ccf3b9d7c6ebd87689283c79 100644 --- a/fs/jfs/jfs_dmap.c +++ b/fs/jfs/jfs_dmap.c @@ -1694,6 +1694,8 @@ s64 dbDiscardAG(struct inode *ip, int agno, s64 minlen) } else if (rc == -ENOSPC) { /* search for next smaller log2 block */ l2nb = BLKSTOL2(nblocks) - 1; + if (unlikely(l2nb < 0)) + break; nblocks = 1LL << l2nb; } else { /* Trim any already allocated blocks */