[Bug 285922] recoverdisk(1) Floating point exception
Date: Sun, 06 Apr 2025 19:27:04 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285922
Bug ID: 285922
Summary: recoverdisk(1) Floating point exception
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: bin
Assignee: bugs@FreeBSD.org
Reporter: kwhite.uottawa@gmail.com
I get a "Floating point exception" when running recoverdisk(1) on a disk that
does not have a stripesize. e.g.:
# recoverdisk /dev/da0
Floating point exception
# diskinfo -v /dev/da0
/dev/da0
512 # sectorsize
62914560000 # mediasize in bytes (59G)
122880000 # mediasize in sectors
0 # stripesize
0 # stripeoffset
7648 # Cylinders according to firmware.
255 # Heads according to firmware.
63 # Sectors according to firmware.
Generic Flash Disk # Disk descr.
16D4D655 # Disk ident.
umass-sim0 # Attachment
No # TRIM/UNMAP support
Unknown # Rotation rate in RPM
Not_Zoned # Zone Mode
Possible fix, check that stripesize is greater than zero before using it as
sectorsize:
# git -C /usr/src diff sbin/recoverdisk
diff --git a/sbin/recoverdisk/recoverdisk.c b/sbin/recoverdisk/recoverdisk.c
index 446266c36d50..4b106d571f2d 100644
--- a/sbin/recoverdisk/recoverdisk.c
+++ b/sbin/recoverdisk/recoverdisk.c
@@ -482,7 +482,7 @@ main(int argc, char * const argv[])
err(1, "DIOCGSECTORSIZE failed");
error = ioctl(fdr, DIOCGSTRIPESIZE, &stripesize);
- if (error == 0 && stripesize < sectorsize)
+ if (error == 0 && stripesize > 0 && stripesize < sectorsize)
sectorsize = stripesize;
minsize = sectorsize;
--
You are receiving this mail because:
You are the assignee for the bug.