xfs
[Top] [All Lists]

Re: [PATCH 1/1] xfs: check for possible overflow in xfs_ioc_trim

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 1/1] xfs: check for possible overflow in xfs_ioc_trim
From: Tomas Racek <tracek@xxxxxxxxxx>
Date: Tue, 31 Jul 2012 06:32:34 -0400 (EDT)
Cc: Alex Elder <elder@xxxxxxxxxx>, open list <linux-kernel@xxxxxxxxxxxxxxx>, "supporter:XFS FILESYSTEM" <xfs@xxxxxxxxxxx>, linux-xfs@xxxxxxxxxxxxxxx, Ben Myers <bpm@xxxxxxx>, lczerner@xxxxxxxxxx
In-reply-to: <20120730214946.GG2877@dastard>
> > +
> > +   if (range.start > ULLONG_MAX - BBSIZE)
> > +           return -XFS_ERROR(EINVAL);
> > +
> 
> There's no point checking for overflow on the range start - what we
> need to check is whether it is larger than the size of the
> filesystem. We do that after the conversion of range.start to basic
> blocks, so that check needs to be promoted to before this. i.e.
> 
>       if (range.start >= XFS_FSB_TO_B(mp, mp->m_sb.sb_dblocks))
>               return -XFS_ERROR(EINVAL);
> 
> >     start = BTOBB(range.start);
> >     end = start + BTOBBT(range.len) - 1;
> >     minlen = BTOBB(max_t(u64, granularity, range.minlen));
> 
> And that will prevent the overflow in BTOBB() just as effectively...

You're right, that's a far better way, I'll change it so.

Thanks!

Tomas

<Prev in Thread] Current Thread [Next in Thread>