Linux next-20170407 failed to build on ARM due to usage of mod in btrfs code

From: Icenowy Zheng
Date: Sat Apr 08 2017 - 12:04:34 EST


Hello everyone,
Today I tried to build a kernel with btrfs enabled on ARM, then when linking I met such an error:

```
fs/built-in.o: In function `scrub_bio_end_io_worker':
acl.c:(.text+0x2f0450): undefined reference to `__aeabi_uldivmod'
fs/built-in.o: In function `scrub_extent_for_parity':
acl.c:(.text+0x2f0bcc): undefined reference to `__aeabi_uldivmod'
fs/built-in.o: In function `scrub_raid56_parity':
acl.c:(.text+0x2f12a8): undefined reference to `__aeabi_uldivmod'
acl.c:(.text+0x2f15c4): undefined reference to `__aeabi_uldivmod'
```

These functions are found at fs/btrfs/scrub.c .

After disabling btrfs the kernel is successfully built.

For this problem, see also [1], which used to be a similar bug in PL330 driver code.

[1] https://patchwork.kernel.org/patch/5299081/

Thanks,
Icenowy