On Mon, Apr 07, 2025 at 11:01:46PM -0700, Christoph Hellwig wrote: > On Tue, Apr 08, 2025 at 12:39:25PM +0800, Eric Naim wrote: > > The out-of-tree NVIDIA modules seem to rely on this symbol, is it possible to use EXPORT_SYMBOL() here instead of EXPORT_SYMBOL_GPL(), below is the modpost error: > > No. They don't have any business using this. What on _earth_ are they using this for? Is this just via the VMA flag manipulation functions? If it's something else, it's an unintended use of this. Anyway, generally speaking - agreed, this is absolutely a no-go Eric. In my view we simply should not be using EXPORT_SYMBOL() for _any_ new symbols whatsoever. Out-of-tree modules are simply a non-consideration for core mm code, this is a GPL open source project. If I had my way we'd simply revoke _all_ EXPORT_SYMBOL()'s, not add new ones. > > In fact vma_start_write should not be exported at all, just the > vm_flags_{set,clear,mod} helpers. Yup, I'd rather we just kept vma_start_write() mm-internal, though of course kernel/fork.c (ugh) needs it (we could probably refactor that in some way to avoid), and literally just the PPC arch (again maybe we can find a way round that). Maybe one for me to look at actually... hmm. Anyway Eric - I wonder if this is simply the nvidia OOT driver doing a vm_flags_...() call and then having an issue because the lock is uninlined now? I guess you are jut noticing this is breaking and don't know since - proprietary code. Anyway in this case, the OOT driver should just write some GPL wrapper code or something here. Or better yet - make the driver open source :)