Re: [PATCH v4] FAT: Allow 0xE9 near jump in fat_read_static_bpb()
From: OGAWA Hirofumi
Date: Sat Apr 25 2026 - 14:01:15 EST
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx> writes:
Please apply this too.
Thanks.
> Ziran Zhang <zhangcoder@xxxxxxxx> writes:
>
>> The fat_read_static_bpb() only accepts a short jump as a valid
>> bootstrap code signature for DOS 1.x volumes when the dos1xfloppy
>> mount option is used.
>>
>> However, according to the Microsoft fatgen103.doc, the BS_jmpBoot
>> field has two allowed forms: 0xEB 0x?? 0x90 (short jump + NOP)
>> and 0xE9 0x?? 0x?? (near jump). The specification explicitly states
>> that either form is acceptable.
>>
>> This patch relaxes the check to also accept 0xE9 as the first byte of
>> the jump instruction.
>>
>> Changes in v4:
>> - Add original commit log
>>
>> Signed-off-by: Ziran Zhang <zhangcoder@xxxxxxxx>
>
> Thanks.
>
> Acked-by: OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
>
>> ---
>>
>>> Could you add original commit log, instead of changelog?
>>>
>>> Thanks.
>>
>> Done! Please ignore the earlier erroneous v2 v2 and v3.
>>
>> fs/fat/inode.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/fat/inode.c b/fs/fat/inode.c
>> index 28f78df08..0e7d106ea 100644
>> --- a/fs/fat/inode.c
>> +++ b/fs/fat/inode.c
>> @@ -1479,8 +1479,9 @@ static int fat_read_static_bpb(struct super_block *sb,
>> int error = -EINVAL;
>> unsigned i;
>>
>> - /* 16-bit DOS 1.x reliably wrote bootstrap short-jmp code */
>> - if (b->ignored[0] != 0xeb || b->ignored[2] != 0x90) {
>> + /* 16-bit DOS 1.x reliably wrote bootstrap short-jmp or near-jmp code */
>> + if ((b->ignored[0] != 0xeb || b->ignored[2] != 0x90) &&
>> + (b->ignored[0] != 0xe9)) {
>> if (!silent)
>> fat_msg(sb, KERN_ERR,
>> "%s; no bootstrapping code", notdos1x);
--
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>