On Wed, Feb 05, 2020 at 08:51:11AM +0200, Toomas Soome wrote: > > Hi! > > While checking illumos soource, smatch is reporting: > > /code/illumos-gate/usr/src/tools/proto/root_sparc-nd/opt/onbld/bin/sparc/smatch: ../../common/fs/ufs/ufs_vnops.c:737 wrip() warn: subtract is higher precedence than shift > > The code is: > > http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/fs/ufs/ufs_vnops.c#737 > > limit = MIN(UFS_MAXOFFSET_T, limit); > > Where MIN is defined: > > #define MIN(a, b) ((a) < (b) ? (a) : (b)) > > As seen from those facts, we have no subtraction nor shift. In code above, limit is unsigned 64-bit, UFS_MAXOFFSET_T is signed. > It's complaining about UFS_MAXOFFSET_T. #define UFS_MAXOFFSET_T ((1LL << NBBY * sizeof (daddr32_t) + DEV_BSHIFT - 1) \ - 1) I assume the code is correct but adding parenthese around the (DEV_BSHIFT - 1) doesn't help explain where the minus one comes from. regards, dan carpenter