diff options
Diffstat (limited to 'fs/xfs/xfs_discard.c')
| -rw-r--r-- | fs/xfs/xfs_discard.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c index f9c3fe304a1..69cf4fcde03 100644 --- a/fs/xfs/xfs_discard.c +++ b/fs/xfs/xfs_discard.c @@ -179,12 +179,14 @@ xfs_ioc_trim(  	 * used by the fstrim application.  In the end it really doesn't  	 * matter as trimming blocks is an advisory interface.  	 */ +	if (range.start >= XFS_FSB_TO_B(mp, mp->m_sb.sb_dblocks) || +	    range.minlen > XFS_FSB_TO_B(mp, XFS_ALLOC_AG_MAX_USABLE(mp))) +		return -XFS_ERROR(EINVAL); +  	start = BTOBB(range.start);  	end = start + BTOBBT(range.len) - 1;  	minlen = BTOBB(max_t(u64, granularity, range.minlen)); -	if (XFS_BB_TO_FSB(mp, start) >= mp->m_sb.sb_dblocks) -		return -XFS_ERROR(EINVAL);  	if (end > XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) - 1)  		end = XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)- 1;  |