All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 5/5] xfs: use xfs_ialloc_blks_per_cluster in xfs_imap
@ 2013-12-11 13:48 Jeff Liu
  2013-12-11 23:39 ` Dave Chinner
  0 siblings, 1 reply; 3+ messages in thread
From: Jeff Liu @ 2013-12-11 13:48 UTC (permalink / raw)
  To: xfs

From: Jie Liu <jeff.liu@oracle.com>

Use xfs_ialloc_blks_per_cluster() in xfs_imap().  Please note that we
previously calculate the number of blocks per cluster without taking
the situation of that the inode cluster size might be equal to or less
than the SB blocksize into account.  Maybe there is a chance to cause
potential issues after handling an untrusted inode number lookup and
proceed to check if the inode number maps to a block is outsides the
file system bounds or not.

Signed-off-by: Jie Liu <jeff.liu@oracle.com>
---
 fs/xfs/xfs_ialloc.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c
index 30018f6..6c28820 100644
--- a/fs/xfs/xfs_ialloc.c
+++ b/fs/xfs/xfs_ialloc.c
@@ -1377,8 +1377,7 @@ xfs_imap(
 		return XFS_ERROR(EINVAL);
 	}
 
-	blks_per_cluster = XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_blocklog;
-
+	blks_per_cluster = xfs_ialloc_blks_per_cluster(mp);
 	/*
 	 * For bulkstat and handle lookups, we have an untrusted inode number
 	 * that we have to verify is valid. We cannot do this just by reading
@@ -1398,7 +1397,7 @@ xfs_imap(
 	 * If the inode cluster size is the same as the blocksize or
 	 * smaller we get to the buffer by simple arithmetics.
 	 */
-	if (XFS_INODE_CLUSTER_SIZE(mp) <= mp->m_sb.sb_blocksize) {
+	if (blks_per_cluster == 1) {
 		offset = XFS_INO_TO_OFFSET(mp, ino);
 		ASSERT(offset < mp->m_sb.sb_inopblock);
 
-- 
1.8.3.2

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 5/5] xfs: use xfs_ialloc_blks_per_cluster in xfs_imap
  2013-12-11 13:48 [PATCH 5/5] xfs: use xfs_ialloc_blks_per_cluster in xfs_imap Jeff Liu
@ 2013-12-11 23:39 ` Dave Chinner
  2013-12-12  3:16   ` Jeff Liu
  0 siblings, 1 reply; 3+ messages in thread
From: Dave Chinner @ 2013-12-11 23:39 UTC (permalink / raw)
  To: Jeff Liu; +Cc: xfs

On Wed, Dec 11, 2013 at 09:48:35PM +0800, Jeff Liu wrote:
> From: Jie Liu <jeff.liu@oracle.com>
> 
> Use xfs_ialloc_blks_per_cluster() in xfs_imap().  Please note that we
> previously calculate the number of blocks per cluster without taking
> the situation of that the inode cluster size might be equal to or less
> than the SB blocksize into account.  Maybe there is a chance to cause
> potential issues after handling an untrusted inode number lookup and
> proceed to check if the inode number maps to a block is outsides the
> file system bounds or not.

I don't think there's any issues here - after all the inode lookups
and mapping is done, the code in xfs_imap checks that the cluster
that the inode is mapped to lies wholly within the filesystem
boundaries. Hence I think you can remove that from the patch
descritpion.

Otherwise, looks good.

Reviewed-by: Dave Chinner <dchinner@redhat.com>
-- 
Dave Chinner
david@fromorbit.com

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 5/5] xfs: use xfs_ialloc_blks_per_cluster in xfs_imap
  2013-12-11 23:39 ` Dave Chinner
@ 2013-12-12  3:16   ` Jeff Liu
  0 siblings, 0 replies; 3+ messages in thread
From: Jeff Liu @ 2013-12-12  3:16 UTC (permalink / raw)
  To: Dave Chinner; +Cc: xfs

On 12/12 2013 07:39 AM, Dave Chinner wrote:
> On Wed, Dec 11, 2013 at 09:48:35PM +0800, Jeff Liu wrote:
>> From: Jie Liu <jeff.liu@oracle.com>
>>
>> Use xfs_ialloc_blks_per_cluster() in xfs_imap().  Please note that we
>> previously calculate the number of blocks per cluster without taking
>> the situation of that the inode cluster size might be equal to or less
>> than the SB blocksize into account.  Maybe there is a chance to cause
>> potential issues after handling an untrusted inode number lookup and
>> proceed to check if the inode number maps to a block is outsides the
>> file system bounds or not.
> 
> I don't think there's any issues here - after all the inode lookups
> and mapping is done, the code in xfs_imap checks that the cluster
> that the inode is mapped to lies wholly within the filesystem
> boundaries. Hence I think you can remove that from the patch
> descritpion.
Ah, you're right because the current logic can handle it well if
blks_per_cluster > 1, or there is no influence to calculate the
cluster_agbno if blks_per_cluster == 1. :)

Thanks,
-Jeff

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-12-12  3:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-11 13:48 [PATCH 5/5] xfs: use xfs_ialloc_blks_per_cluster in xfs_imap Jeff Liu
2013-12-11 23:39 ` Dave Chinner
2013-12-12  3:16   ` Jeff Liu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.