From 56c44bd92efa002b2185445878fc98172ae8c66f Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 29 Sep 2023 21:43:42 +0300 Subject: [PATCH] automount(8): when flushing autofs, specify fsid Which should avoid situation where flushed filesystem is not autofs, because it was mounted over autofs mp. Reported and tested by: Andrew "RhodiumToad" Gierth PR: 272446 Reviewed by: mjg Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D42023 --- usr.sbin/autofs/automount.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/usr.sbin/autofs/automount.c b/usr.sbin/autofs/automount.c index cee647cb4e2c..6637e16c9129 100644 --- a/usr.sbin/autofs/automount.c +++ b/usr.sbin/autofs/automount.c @@ -229,7 +229,7 @@ mount_unmount(struct node *root) } static void -flush_autofs(const char *fspath) +flush_autofs(const char *fspath, const fsid_t *fsid) { struct iovec *iov = NULL; char errmsg[255]; @@ -242,6 +242,8 @@ flush_autofs(const char *fspath) __DECONST(void *, "autofs"), (size_t)-1); build_iovec(&iov, &iovlen, "fspath", __DECONST(void *, fspath), (size_t)-1); + build_iovec(&iov, &iovlen, "fsid", + __DECONST(void *, fsid), sizeof(*fsid)); build_iovec(&iov, &iovlen, "errmsg", errmsg, sizeof(errmsg)); @@ -291,7 +293,7 @@ flush_caches(void) continue; } - flush_autofs(mntbuf[i].f_mntonname); + flush_autofs(mntbuf[i].f_mntonname, &statbuf.f_fsid); } }