]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: xfs_rtword_t should be unsigned, not signed
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)
committerEric Sandeen <sandeen@redhat.com>
Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)
Source kernel commit: 2483113f3d7baa303deac115e6764d9489c8316b

xfs_rtword_t is used for bit manipulations in the realtime bitmap file.
Since we're performing bit shifts with this type, we don't want sign
extension and we don't want to be left shifting negative quantities
because that's undefined behavior.

This also shuts up these UBSAN warnings:
UBSAN: Undefined behaviour in fs/xfs/libxfs/xfs_rtbitmap.c:833:48
signed integer overflow:
-2147483648 - 1 cannot be represented in type 'int'

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_types.h

index 3c560695c5463419e0dfdb0f68f8b255376b85ca..ea18449bd7326181e717525799051da8265d309a 100644 (file)
@@ -30,7 +30,7 @@ typedef int64_t               xfs_fsize_t;    /* bytes in a file */
 typedef uint64_t       xfs_ufsize_t;   /* unsigned bytes in a file */
 
 typedef int32_t                xfs_suminfo_t;  /* type of bitmap summary info */
-typedef int32_t                xfs_rtword_t;   /* word type for bitmap manipulations */
+typedef uint32_t       xfs_rtword_t;   /* word type for bitmap manipulations */
 
 typedef int64_t                xfs_lsn_t;      /* log sequence number */
 typedef int32_t                xfs_tid_t;      /* transaction identifier */