On Thu, Jul 13, 2017 at 11:24:01AM -0700, Jay Lan wrote: > On 07/13/2017 12:15 AM, Christoph Hellwig wrote: > > On Wed, Jul 12, 2017 at 02:40:11PM -0700, Jay Lan wrote: > > > Hi all, > > > > > > I was writing a livepatch patch, but compilation failed in creating the .ko > > > because mount_lock is "undefined." > > > > > > The mount_lock is defined globally in fs/namespace.c > > > __cacheline_aligned_in_smp DEFINE_SEQLOCK(mount_lock); > > > > > > and extern in fs/mount.h. > > > extern seqlock_t mount_lock; > > > > > > If there is a reason that mount_lock should not be EXPORT_SYMBOL_GPL, please > > > advise; otherwise, I propose the patch to export this symbol. > > Because there is no %$^$^ reason to use it from a module ever? > Is livepatch a good reason? Besides security fixes, livepatch is a good tool > to use for debugging and providing a temporary fix on production systems > (until next release from vendors) I know this argument is not strong, but at > least mount_lock is declared globally. Yes? Something I've done in the past as a local hack when a symbol I wanted wasn't exported is: extern seqlock_t *mount_lock_p; module_param(mount_lock_p, charp, 0); and then pass the address (from /proc/kallsyms) as a module parameter at load time.