struct xfs_mount                *mp,
        struct xfs_phys_extent          *refc)
 {
-       xfs_fsblock_t                   startblock_fsb;
-       bool                            op_ok;
+       if (refc->pe_flags & ~XFS_REFCOUNT_EXTENT_FLAGS)
+               return false;
 
-       startblock_fsb = XFS_BB_TO_FSB(mp,
-                          XFS_FSB_TO_DADDR(mp, refc->pe_startblock));
        switch (refc->pe_flags & XFS_REFCOUNT_EXTENT_TYPE_MASK) {
        case XFS_REFCOUNT_INCREASE:
        case XFS_REFCOUNT_DECREASE:
        case XFS_REFCOUNT_ALLOC_COW:
        case XFS_REFCOUNT_FREE_COW:
-               op_ok = true;
                break;
        default:
-               op_ok = false;
-               break;
+               return false;
        }
-       if (!op_ok || startblock_fsb == 0 ||
-           refc->pe_len == 0 ||
-           startblock_fsb >= mp->m_sb.sb_dblocks ||
-           refc->pe_len >= mp->m_sb.sb_agblocks ||
-           (refc->pe_flags & ~XFS_REFCOUNT_EXTENT_FLAGS))
+
+       if (refc->pe_startblock + refc->pe_len <= refc->pe_startblock)
+               return false;
+
+       if (!xfs_verify_fsbno(mp, refc->pe_startblock))
+               return false;
+
+       if (!xfs_verify_fsbno(mp, refc->pe_startblock + refc->pe_len - 1))
                return false;
 
        return true;