i386/163985: Incorrect operand size in boot0

Yaniv ykamay at ccc.net.il
Tue Jan 10 11:00:31 UTC 2012


>Number:         163985
>Category:       i386
>Synopsis:       Incorrect operand size in boot0
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-i386
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jan 10 11:00:31 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Yaniv
>Release:        8.2
>Organization:
>Environment:
>Description:
In boot0.S, decw instruction is used on the drive number that was received from the loader. boot0 push the loader dx value, at early stage, and restore it later into ax

                popw %ax                        # Drive number
                subb $0x80-0x1,%al              # Does next
                cmpb NHRDRV,%al                 #  drive exist? (from BIOS?)
                jb print_drive                  # Yes
        /*
         * If this is the only drive, don't display it as an option.
         */
                decw %ax                        # Already drive 0?
                jz print_prompt                 # Yes

According to my knowledge, dh is undefined during the jump to boot0-start so the result of "decw %ax" is undefined.

The result is that an incorrect boot option is displayed.

>How-To-Repeat:

>Fix:



>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-i386 mailing list