[Bug 233180] Several errors in pmbr: 64-bits arithmetics and some others
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Mon Nov 12 19:45:15 UTC 2018
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233180
Bug ID: 233180
Summary: Several errors in pmbr: 64-bits arithmetics and some
others
Product: Base System
Version: 11.2-RELEASE
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: misc
Assignee: bugs at FreeBSD.org
Reporter: kmachine at free.fr
These issues have low impact because they require precise circumstances to
trigger one of them. The disk must be > 2 TiB in size and either:
- The primary GPT header is dammaged.
- The freebsd-boot partiton is located farther than the first 2 TiB of the disc
and one of its sectors takes place at a lba value that makes the higher 32 bits
of this very value change.
Errors and corrections folow:
* Lines 117 - 118
main.3a: decl (%si) # 0x0(%si) = last sec (0-31)
movw $2,%cx
Should be:
main.3a: subl $1, (%si) # 0x0(%si) = last sec (0-31)
sbbl $0, 4(%si)
movw $4,%cx
-> Copies only two 16-bits words but it's a 64-bits value. Moreover, decrements
this 64-bit value without care for a possible carry.
* Line 131
movb $0x10,%cl
repe cmpsb
Should be:
movw $0x10,%cx
repe cmpsb
-> It's CX the counter for repe not CL. It works as is but it's dangerous to
keep that.
* Lines 153 - 154
next_boot: incl (%si) # Next LBA
adcl $0,4(%si)
Should be:
next_boot: addl $1, (%si) # Next LBA
adcl $0,4(%si)
-> inc instruction doesn't affect the carry flag.
* Lines 174 - 175
incl GPT_ADDR+GPT_PART_LBA # Next sector
adcl $0,GPT_ADDR+GPT_PART_LBA+4
Should be:
addl $1, GPT_ADDR+GPT_PART_LBA.
adcl $0,GPT_ADDR+GPT_PART_LBA+4
-> Same as before.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list