2021-05-11 18:10:02

by Valdis Klētnieks

[permalink] [raw]
Subject: next-20210511 - btrfs build failure on arm

An arm allmodconfig build died with:

ERROR: modpost: "__aeabi_uldivmod" [fs/btrfs/btrfs.ko] undefined!

Some digging around with nm and looking at the assembler points at:

@ /usr/src/linux-next/fs/btrfs/extent_io.c:2676: const int nr_bits = (end + 1 - start) / fs_info->sectorsize_bits;
adds r1, r1, #1 @, tmp552,
adc r0, r0, #0 @, tmp551,
ldr r3, [r5, #1576] @ tmp2, _47->sectorsize_bits
bl __aeabi_uldivmod @

Introduced by this commit:

commit 6512659d8f13015dccfb38a13c6d117d22572019
Author: Qu Wenruo <[email protected]>
Date: Mon May 3 10:08:55 2021 +0800

btrfs: submit read time repair only for each corrupted sector

Looks like that line could use something from include/linux/math.h


2021-05-11 18:15:57

by David Sterba

[permalink] [raw]
Subject: Re: next-20210511 - btrfs build failure on arm

On Tue, May 11, 2021 at 02:08:02PM -0400, Valdis Klētnieks wrote:
> An arm allmodconfig build died with:
>
> ERROR: modpost: "__aeabi_uldivmod" [fs/btrfs/btrfs.ko] undefined!
>
> Some digging around with nm and looking at the assembler points at:
>
> @ /usr/src/linux-next/fs/btrfs/extent_io.c:2676: const int nr_bits = (end + 1 - start) / fs_info->sectorsize_bits;
> adds r1, r1, #1 @, tmp552,
> adc r0, r0, #0 @, tmp551,
> ldr r3, [r5, #1576] @ tmp2, _47->sectorsize_bits
> bl __aeabi_uldivmod @
>
> Introduced by this commit:
>
> commit 6512659d8f13015dccfb38a13c6d117d22572019
> Author: Qu Wenruo <[email protected]>
> Date: Mon May 3 10:08:55 2021 +0800
>
> btrfs: submit read time repair only for each corrupted sector
>
> Looks like that line could use something from include/linux/math.h

We got another report already, there's division instead of shift (a
mistake), so the expression would require u64/u32 division. The correct
one is (end + 1 - start) >> fs_info->sectorsize_bits; and will be fixed
in upcoming next.