In update_map_cache() the cache writelock must be taken because we need to clean up the map entry as it will be a problem later if we don't. It's possible that some other process has taken the lock temporarily but when this function is called the thread does not hold any cache locks so it should be ok to aquire it. Signed-off-by: Ian Kent <raven@xxxxxxxxxx> --- CHANGELOG | 1 + daemon/automount.c | 12 +++++------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e18666399..d9daf1e2e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -34,6 +34,7 @@ - fix invalidated map entry handling in hosts module. - quiet possibly noisy log message. - fix devid update on reload. +- fix cache writelock must be taken in update_map_cache(). 02/11/2023 autofs-5.1.9 - fix kernel mount status notification. diff --git a/daemon/automount.c b/daemon/automount.c index 22994defe..5476e84ba 100644 --- a/daemon/automount.c +++ b/daemon/automount.c @@ -526,13 +526,11 @@ static void update_map_cache(struct autofs_point *ap, const char *path) } mc = map->mc; - /* If the lock is busy try later */ - if (cache_try_writelock(mc)) { - me = cache_lookup_distinct(mc, key); - if (me && me->ioctlfd == -1) - cache_delete(mc, key); - cache_unlock(mc); - } + cache_writelock(mc); + me = cache_lookup_distinct(mc, key); + if (me && me->ioctlfd == -1) + cache_delete(mc, key); + cache_unlock(mc); map = map->next; } -- 2.50.1