Re: [PATCH] FAT: Allow 0xE9 near jump in fat_read_static_bpb()
From: OGAWA Hirofumi
Date: Sat Apr 11 2026 - 13:32:59 EST
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.
>
> Signed-off-by: Ziran Zhang <zhangcoder@xxxxxxxx>
> ---
> fs/fat/inode.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/fat/inode.c b/fs/fat/inode.c
> index 28f78df08..0f64552e2 100644
> --- a/fs/fat/inode.c
> +++ b/fs/fat/inode.c
> @@ -1479,8 +1479,8 @@ 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)) {
Looks like over 80 columns.
if ((b->ignored[0] != 0xeb || b->ignored[2] != 0x90) &&
(b->ignored[0] != 0xe9)) {
or such please.
Thanks.
> if (!silent)
> fat_msg(sb, KERN_ERR,
> "%s; no bootstrapping code", notdos1x);
--
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>