On Fri, Apr 29, 2022 at 06:39:18PM +0100, Matthew Wilcox wrote: > This hurts my brain. Can we do instead: > > if (boot->sectors_per_clusters <= 0x80) > return boot->sectors_per_clusters; > if (boot->sectors_per_clusters < 0xA0) > return 1U << (boot->sectors_per_clusters - 0x80); > return -1; Changed my mind; 0xffffffff is clearer than returning -1 from a function which is typed to return an unsigned value. > > /* > > @@ -713,7 +714,7 @@ static int ntfs_init_from_boot(struct su > > > > /* cluster size: 512, 1K, 2K, 4K, ... 2M */ > > sct_per_clst = true_sectors_per_clst(boot); > > - if (!is_power_of_2(sct_per_clst)) > > + if ((int)sct_per_clst < 0 || !is_power_of_2(sct_per_clst)) > > goto out; > > Do we need this change? Presumably -1 is not a power of 2 ... And this question then answers itself. 0xffffffff is definitely not a POT.