aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Washburn <development@efficientek.com>2022-06-09 11:48:29 -0500
committerDaniel Kiper <daniel.kiper@oracle.com>2022-07-04 14:43:26 +0200
commit351c9c2fd0bcd94c7fda5b697d3283f7f0ff7930 (patch)
tree2fcb7700890df83e218dff633fe4519876eef8c3
parenta79c567f6b5820a8795c273a9eaabd06a1f92b29 (diff)
downloadgrub-351c9c2fd0bcd94c7fda5b697d3283f7f0ff7930.tar.gz
disk: Replace code that calculates the log of sector size with grub_log2ull()
Signed-off-by: Glenn Washburn <development@efficientek.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-rw-r--r--grub-core/disk/ata.c5
-rw-r--r--grub-core/disk/efi/efidisk.c4
-rw-r--r--grub-core/disk/geli.c4
-rw-r--r--grub-core/disk/i386/pc/biosdisk.c6
-rw-r--r--grub-core/disk/ieee1275/obdisk.c6
-rw-r--r--grub-core/disk/ieee1275/ofdisk.c6
-rw-r--r--grub-core/disk/scsi.c4
-rw-r--r--grub-core/disk/uboot/ubootdisk.c4
-rw-r--r--grub-core/disk/xen/xendisk.c4
-rw-r--r--grub-core/osdep/apple/hostdisk.c4
-rw-r--r--grub-core/osdep/aros/hostdisk.c4
-rw-r--r--grub-core/osdep/bsd/hostdisk.c4
-rw-r--r--grub-core/osdep/freebsd/hostdisk.c4
-rw-r--r--grub-core/osdep/hurd/hostdisk.c4
-rw-r--r--grub-core/osdep/linux/hostdisk.c4
-rw-r--r--grub-core/osdep/sun/hostdisk.c4
-rw-r--r--grub-core/osdep/windows/hostdisk.c4
17 files changed, 17 insertions, 58 deletions
diff --git a/grub-core/disk/ata.c b/grub-core/disk/ata.c
index 8a96b854b..7b6ac7bfc 100644
--- a/grub-core/disk/ata.c
+++ b/grub-core/disk/ata.c
@@ -181,10 +181,7 @@ grub_ata_identify (struct grub_ata *dev)
if (secsize & (secsize - 1) || !secsize
|| secsize > 1048576)
secsize = 256;
- for (dev->log_sector_size = 0;
- (1U << dev->log_sector_size) < secsize;
- dev->log_sector_size++);
- dev->log_sector_size++;
+ dev->log_sector_size = grub_log2ull (secsize) + 1;
}
else
dev->log_sector_size = 9;
diff --git a/grub-core/disk/efi/efidisk.c b/grub-core/disk/efi/efidisk.c
index 8ada2c45a..d7540040e 100644
--- a/grub-core/disk/efi/efidisk.c
+++ b/grub-core/disk/efi/efidisk.c
@@ -523,9 +523,7 @@ grub_efidisk_open (const char *name, struct grub_disk *disk)
if (m->block_size & (m->block_size - 1) || !m->block_size)
return grub_error (GRUB_ERR_IO, "invalid sector size %d",
m->block_size);
- for (disk->log_sector_size = 0;
- (1U << disk->log_sector_size) < m->block_size;
- disk->log_sector_size++);
+ disk->log_sector_size = grub_log2ull (m->block_size);
disk->data = d;
grub_dprintf ("efidisk", "opening %s succeeded\n", name);
diff --git a/grub-core/disk/geli.c b/grub-core/disk/geli.c
index b3c9bbd80..e190066f9 100644
--- a/grub-core/disk/geli.c
+++ b/grub-core/disk/geli.c
@@ -380,9 +380,7 @@ geli_scan (grub_disk_t disk, grub_cryptomount_args_t cargs)
newdev->hash = GRUB_MD_SHA512;
newdev->iv_hash = GRUB_MD_SHA256;
- for (newdev->log_sector_size = 0;
- (1U << newdev->log_sector_size) < grub_le_to_cpu32 (header.sector_size);
- newdev->log_sector_size++);
+ newdev->log_sector_size = grub_log2ull (grub_le_to_cpu32 (header.sector_size));
if (grub_le_to_cpu32 (header.version) >= 5)
{
diff --git a/grub-core/disk/i386/pc/biosdisk.c b/grub-core/disk/i386/pc/biosdisk.c
index 49e4e8a14..f9362d17c 100644
--- a/grub-core/disk/i386/pc/biosdisk.c
+++ b/grub-core/disk/i386/pc/biosdisk.c
@@ -388,11 +388,7 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
&& !(drp->bytes_per_sector & (drp->bytes_per_sector - 1))
&& drp->bytes_per_sector >= 512
&& drp->bytes_per_sector <= 16384)
- {
- for (disk->log_sector_size = 0;
- (1 << disk->log_sector_size) < drp->bytes_per_sector;
- disk->log_sector_size++);
- }
+ disk->log_sector_size = grub_log2ull (drp->bytes_per_sector);
}
}
}
diff --git a/grub-core/disk/ieee1275/obdisk.c b/grub-core/disk/ieee1275/obdisk.c
index ec413c3fd..cd923b90f 100644
--- a/grub-core/disk/ieee1275/obdisk.c
+++ b/grub-core/disk/ieee1275/obdisk.c
@@ -1023,11 +1023,7 @@ grub_obdisk_open (const char *name, grub_disk_t disk)
dev->num_blocks = GRUB_DISK_SIZE_UNKNOWN;
if (dev->block_size != 0)
- {
- for (dev->log_sector_size = 0;
- (1U << dev->log_sector_size) < dev->block_size;
- dev->log_sector_size++);
- }
+ dev->log_sector_size = grub_log2ull (dev->block_size);
else
dev->log_sector_size = 9;
diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c
index 9b14d9720..c6cba0c8a 100644
--- a/grub-core/disk/ieee1275/ofdisk.c
+++ b/grub-core/disk/ieee1275/ofdisk.c
@@ -516,11 +516,7 @@ grub_ofdisk_open (const char *name, grub_disk_t disk)
return err;
}
if (block_size != 0)
- {
- for (disk->log_sector_size = 0;
- (1U << disk->log_sector_size) < block_size;
- disk->log_sector_size++);
- }
+ disk->log_sector_size = grub_log2ull (block_size);
else
disk->log_sector_size = 9;
}
diff --git a/grub-core/disk/scsi.c b/grub-core/disk/scsi.c
index 2a25b4b42..1c3865fd2 100644
--- a/grub-core/disk/scsi.c
+++ b/grub-core/disk/scsi.c
@@ -620,9 +620,7 @@ grub_scsi_open (const char *name, grub_disk_t disk)
grub_free (scsi);
return grub_errno;
}
- for (disk->log_sector_size = 0;
- (1U << disk->log_sector_size) < scsi->blocksize;
- disk->log_sector_size++);
+ disk->log_sector_size = grub_log2ull (scsi->blocksize);
grub_dprintf ("scsi", "last_block=%" PRIuGRUB_UINT64_T ", blocksize=%u\n",
scsi->last_block, scsi->blocksize);
diff --git a/grub-core/disk/uboot/ubootdisk.c b/grub-core/disk/uboot/ubootdisk.c
index 2d115a94d..0e918d4d1 100644
--- a/grub-core/disk/uboot/ubootdisk.c
+++ b/grub-core/disk/uboot/ubootdisk.c
@@ -186,9 +186,7 @@ uboot_disk_open (const char *name, struct grub_disk *disk)
if (d->block_size == 0)
return grub_error (GRUB_ERR_IO, "no block size");
- for (disk->log_sector_size = 0;
- (1U << disk->log_sector_size) < d->block_size;
- disk->log_sector_size++);
+ disk->log_sector_size = grub_log2ull (d->block_size);
grub_dprintf ("ubootdisk", "(%s) blocksize=%d, log_sector_size=%d\n",
disk->name, d->block_size, disk->log_sector_size);
diff --git a/grub-core/disk/xen/xendisk.c b/grub-core/disk/xen/xendisk.c
index d6612eebd..496f1ea7b 100644
--- a/grub-core/disk/xen/xendisk.c
+++ b/grub-core/disk/xen/xendisk.c
@@ -113,9 +113,7 @@ grub_virtdisk_open (const char *name, grub_disk_t disk)
|| secsize > GRUB_XEN_PAGE_SIZE)
return grub_error (GRUB_ERR_IO, "unsupported sector size %d", secsize);
- for (disk->log_sector_size = 0;
- (1U << disk->log_sector_size) < secsize; disk->log_sector_size++);
-
+ disk->log_sector_size = grub_log2ull (secsize);
disk->total_sectors >>= disk->log_sector_size - 9;
return GRUB_ERR_NONE;
diff --git a/grub-core/osdep/apple/hostdisk.c b/grub-core/osdep/apple/hostdisk.c
index 8d9b4b402..638e8ba86 100644
--- a/grub-core/osdep/apple/hostdisk.c
+++ b/grub-core/osdep/apple/hostdisk.c
@@ -58,9 +58,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
if (sector_size & (sector_size - 1) || !sector_size)
return -1;
- for (log_sector_size = 0;
- (1 << log_sector_size) < sector_size;
- log_sector_size++);
+ log_sector_size = grub_log2ull (sector_size);
if (log_secsize)
*log_secsize = log_sector_size;
diff --git a/grub-core/osdep/aros/hostdisk.c b/grub-core/osdep/aros/hostdisk.c
index 6f83b3a89..08723bd45 100644
--- a/grub-core/osdep/aros/hostdisk.c
+++ b/grub-core/osdep/aros/hostdisk.c
@@ -116,9 +116,7 @@ grub_util_get_fd_size_volume (grub_util_fd_t fd __attribute__ ((unused)),
if (sector_size & (sector_size - 1) || !sector_size)
return -1;
- for (log_sector_size = 0;
- (1 << log_sector_size) < sector_size;
- log_sector_size++);
+ log_sector_size = grub_log2ull (sector_size);
if (log_secsize)
*log_secsize = log_sector_size;
diff --git a/grub-core/osdep/bsd/hostdisk.c b/grub-core/osdep/bsd/hostdisk.c
index 5912d14bf..891109462 100644
--- a/grub-core/osdep/bsd/hostdisk.c
+++ b/grub-core/osdep/bsd/hostdisk.c
@@ -114,9 +114,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
sector_size = label.d_secsize;
if (sector_size & (sector_size - 1) || !sector_size)
return -1;
- for (log_sector_size = 0;
- (1 << log_sector_size) < sector_size;
- log_sector_size++);
+ log_sector_size = grub_log2ull (sector_size);
if (log_secsize)
*log_secsize = log_sector_size;
diff --git a/grub-core/osdep/freebsd/hostdisk.c b/grub-core/osdep/freebsd/hostdisk.c
index 6145d0735..8bfe7d488 100644
--- a/grub-core/osdep/freebsd/hostdisk.c
+++ b/grub-core/osdep/freebsd/hostdisk.c
@@ -61,9 +61,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
return -1;
if (sector_size & (sector_size - 1) || !sector_size)
return -1;
- for (log_sector_size = 0;
- (1 << log_sector_size) < sector_size;
- log_sector_size++);
+ log_sector_size = grub_log2ull (sector_size);
if (log_secsize)
*log_secsize = log_sector_size;
diff --git a/grub-core/osdep/hurd/hostdisk.c b/grub-core/osdep/hurd/hostdisk.c
index 8196d8c0e..17463950b 100644
--- a/grub-core/osdep/hurd/hostdisk.c
+++ b/grub-core/osdep/hurd/hostdisk.c
@@ -147,9 +147,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
if (sector_size & (sector_size - 1) || !sector_size)
return -1;
- for (log_sector_size = 0;
- (1 << log_sector_size) < sector_size;
- log_sector_size++);
+ log_sector_size = grub_log2ull (sector_size);
if (log_secsize)
*log_secsize = log_sector_size;
diff --git a/grub-core/osdep/linux/hostdisk.c b/grub-core/osdep/linux/hostdisk.c
index d3326d095..07058f63a 100644
--- a/grub-core/osdep/linux/hostdisk.c
+++ b/grub-core/osdep/linux/hostdisk.c
@@ -83,9 +83,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
if (sector_size & (sector_size - 1) || !sector_size)
return -1;
- for (log_sector_size = 0;
- (1 << log_sector_size) < sector_size;
- log_sector_size++);
+ log_sector_size = grub_log2ull (sector_size);
if (log_secsize)
*log_secsize = log_sector_size;
diff --git a/grub-core/osdep/sun/hostdisk.c b/grub-core/osdep/sun/hostdisk.c
index dab96dcff..a6d4c733e 100644
--- a/grub-core/osdep/sun/hostdisk.c
+++ b/grub-core/osdep/sun/hostdisk.c
@@ -57,9 +57,7 @@ grub_util_get_fd_size_os (grub_util_fd_t fd, const char *name, unsigned *log_sec
if (sector_size & (sector_size - 1) || !sector_size)
return -1;
- for (log_sector_size = 0;
- (1 << log_sector_size) < sector_size;
- log_sector_size++);
+ log_sector_size = grub_log2ull (sector_size);
if (log_secsize)
*log_secsize = log_sector_size;
diff --git a/grub-core/osdep/windows/hostdisk.c b/grub-core/osdep/windows/hostdisk.c
index 428d81466..aaa6e2f8e 100644
--- a/grub-core/osdep/windows/hostdisk.c
+++ b/grub-core/osdep/windows/hostdisk.c
@@ -185,9 +185,7 @@ grub_util_get_fd_size (grub_util_fd_t hd, const char *name_in,
size = g.Cylinders.QuadPart;
size *= g.TracksPerCylinder * g.SectorsPerTrack * g.BytesPerSector;
- for (log_sector_size = 0;
- (1 << log_sector_size) < g.BytesPerSector;
- log_sector_size++);
+ log_sector_size = grub_log2ull (g.BytesPerSector);
}
else
{