@@ -143,17 +143,19 @@ struct bcachefs_super_block {
143143/* magic string len */
144144#define BCACHE_SB_MAGIC_LEN (sizeof(BCACHE_SB_MAGIC) - 1)
145145/* super block offset */
146- #define BCACHE_SB_OFF 0x1000
146+ #define BCACHE_SB_OFF 0x1000U
147147/* supper block offset in kB */
148148#define BCACHE_SB_KBOFF (BCACHE_SB_OFF >> 10)
149149/* magic string offset within super block */
150150#define BCACHE_SB_MAGIC_OFF offsetof(struct bcache_super_block, magic)
151151/* start of checksummed data within superblock */
152- #define BCACHE_SB_CSUMMED_START 8
152+ #define BCACHE_SB_CSUMMED_START 8U
153153/* granularity of offset and length fields within superblock */
154- #define BCACHEFS_SECTOR_SIZE 512
154+ #define BCACHEFS_SECTOR_SIZE 512U
155+ /* maximum superblock size shift */
156+ #define BCACHEFS_SB_MAX_SIZE_SHIFT 0x10U
155157/* maximum superblock size */
156- #define BCACHEFS_SB_MAX_SIZE 0x100000
158+ #define BCACHEFS_SB_MAX_SIZE (1U << BCACHEFS_SB_MAX_SIZE_SHIFT)
157159/* fields offset within super block */
158160#define BCACHEFS_SB_FIELDS_OFF offsetof(struct bcachefs_super_block, _start)
159161/* tag value for members field */
@@ -325,12 +327,16 @@ static int probe_bcachefs(blkid_probe pr, const struct blkid_idmag *mag)
325327 return BLKID_PROBE_NONE ;
326328
327329 sb_size = BCACHEFS_SB_FIELDS_OFF + BYTES (bcs );
328- if (sb_size > ((uint64_t ) BCACHEFS_SECTOR_SIZE << bcs -> layout .sb_max_size_bits ))
329- return BLKID_PROBE_NONE ;
330330
331331 if (sb_size > BCACHEFS_SB_MAX_SIZE )
332332 return BLKID_PROBE_NONE ;
333333
334+ if (bcs -> layout .sb_max_size_bits > BCACHEFS_SB_MAX_SIZE_SHIFT )
335+ return BLKID_PROBE_NONE ;
336+
337+ if (sb_size > (BCACHEFS_SECTOR_SIZE << bcs -> layout .sb_max_size_bits ))
338+ return BLKID_PROBE_NONE ;
339+
334340 sb = blkid_probe_get_sb_buffer (pr , mag , sb_size );
335341 if (!sb )
336342 return BLKID_PROBE_NONE ;
0 commit comments