Re: OpenAFS module libafs.ko uses GPL-only symbol '__put_devmap_managed_page'

From: Dan Williams
Date: Wed Jun 13 2018 - 15:51:41 EST


[ adding Andrew, Christoph, and linux-mm ]

On Wed, Jun 13, 2018 at 12:33 PM, Joe Gorse <jhgorse@xxxxxxxxx> wrote:
> Greetings,
>
> Please CC answers & comments to this email. Thanks! =)
>
> Our build is breaking as of
> commit e7638488434415aa478e78435cac8f0365737638
> Author: Dan Williams <dan.j.williams@xxxxxxxxx>
> Date: Wed May 16 11:46:08 2018 -0700
>
> mm: introduce MEMORY_DEVICE_FS_DAX and CONFIG_DEV_PAGEMAP_OPS
> ... snip ...
> https://patchwork.kernel.org/patch/10412459/
>
> We do not directly use the GPL-only symbol '__put_devmap_managed_page'. It
> appears to be picked up from static-inlining in put_page(), which we need.
>
> How shall we proceed? Would it be reasonable to request the change of the
> GPL-only exports for this commit?
>
> Cheers,
> Joe Gorse
>
> P.S. The build failure, for the morbidly curious:
>> FATAL: modpost: GPL-incompatible module libafs.ko uses GPL-only symbol
>> '__put_devmap_managed_page'
>> scripts/Makefile.modpost:92: recipe for target '__modpost' failed
>> make[6]: *** [__modpost] Error 1

I think the right answer here is to make __put_devmap_managed_page()
EXPORT_SYMBOL(), since features like devm_memremap_pages() want to
change the behavior of all users of put_page(). It again holds that
devm_memremap_pages() needs to become EXPORT_SYMBOL_GPL() because it,
not put_page(), is the interface that is leaking control of core
kernel state/infrastructure to its users.