Re: [linus:master] BUILD REGRESSION f3b5ad89de16f5d42e8ad36fbdf85f705c1ae051

From: Al Viro
Date: Sun Dec 17 2017 - 10:25:45 EST


On Sat, Dec 16, 2017 at 10:46:05PM -0500, Nicolas Pitre wrote:
> Date: Fri, 10 Nov 2017 15:57:21 +0100
> From: Arnd Bergmann <arnd@xxxxxxxx>
> Subject: [PATCH] cramfs: fix MTD dependency
>
> With CONFIG_MTD=m and CONFIG_CRAMFS=y, we now get a link failure:
>
> fs/cramfs/inode.o: In function `cramfs_mount':
> inode.c:(.text+0x220): undefined reference to `mount_mtd'
> fs/cramfs/inode.o: In function `cramfs_mtd_fill_super':
> inode.c:(.text+0x6d8): undefined reference to `mtd_point'
> inode.c:(.text+0xae4): undefined reference to `mtd_unpoint'
>
> This adds a more specific Kconfig dependency to avoid the
> broken configuration. Alternatively we could make CRAMFS
> itself depend on "MTD || !MTD" with a similar result.
>
> Fixes: 99c18ce580c6 ("cramfs: direct memory access support")
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> Signed-off-by: Nicolas Pitre <nico@xxxxxxxxxx>
> ---
> fs/cramfs/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/cramfs/Kconfig b/fs/cramfs/Kconfig
> index f937082f3244..58e2fe40b2a0 100644
> --- a/fs/cramfs/Kconfig
> +++ b/fs/cramfs/Kconfig
> @@ -34,6 +34,7 @@ config CRAMFS_BLOCKDEV
> config CRAMFS_MTD
> bool "Support CramFs image directly mapped in physical memory"
> depends on CRAMFS && MTD
> + depends on CRAMFS=m || MTD=y

*Ugh*

So basically the trouble case is CRAMFS=y, MTD=m; in that situation
mount_mtd() et.al. are not stubbed out at compiler level (as they
would with CRAMFS=y, MTD=n) and we end up with linker catching that.
Not pretty solution, but...

Linus, would you take that directly or should I include it into vfs.git
pull request?