diff --git a/CHANGELOG b/CHANGELOG index 7946354..4588962 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -27,6 +27,7 @@ - rename path to m_offset in update_offset_entry(). - don't pass root to do_mount_autofs_offset(). - rename tree implementation functions. +- fix program map multi-mount lookup after mount fail. xx/xx/2018 autofs-5.1.5 - fix flag file permission. diff --git a/modules/lookup_program.c b/modules/lookup_program.c index 56e1939..9b527f8 100644 --- a/modules/lookup_program.c +++ b/modules/lookup_program.c @@ -664,7 +664,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void * name_len, ent, ctxt->parse->context); goto out_free; } else { - if (me->multi) { + if (me->multi && me->multi != me) { cache_unlock(mc); warn(ap->logopt, MODPREFIX "unexpected lookup for active multi-mount" @@ -674,8 +674,11 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void * cache_unlock(mc); cache_writelock(mc); me = cache_lookup_distinct(mc, name); - if (me) + if (me) { + if (me->multi) + cache_delete_offset_list(mc, name); cache_delete(mc, name); + } cache_unlock(mc); } }