* Re: [PATCH v4] FAT: Allow 0xE9 near jump in fat_read_static_bpb()
[not found] ` <20260412070109.5197-1-zhangcoder@yeah.net>
@ 2026-04-12 7:37 ` OGAWA Hirofumi
0 siblings, 0 replies; only message in thread
From: OGAWA Hirofumi @ 2026-04-12 7:37 UTC (permalink / raw)
To: Christian Brauner; +Cc: Ziran Zhang, linux-kernel, linux-fsdevel
Ziran Zhang <zhangcoder@yeah.net> 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@yeah.net>
Thanks.
Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
> ---
>
>> 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@mail.parknet.co.jp>
^ permalink raw reply [flat|nested] only message in thread