From 8aba9e6d9bb18dc7f382332972af4da50d4e4ff2 Mon Sep 17 00:00:00 2001 From: kib Date: Fri, 11 Jan 2019 08:35:49 +0000 Subject: [PATCH] cpucontrol: check for the supposed firmware file type and skip non-regular entry. do_update() skips entries with DT_DIR type. This does not eliminate other entries that might exist in the directory. More, since NFS might fill d_type with DT_UNKNOWN, dot and dotdot entries are not skipped, then mmap(2) call failed for them when update microcode files are located on NFS. Sponsored by: The FreeBSD Foundation MFC after: 1 week --- usr.sbin/cpucontrol/cpucontrol.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/usr.sbin/cpucontrol/cpucontrol.c b/usr.sbin/cpucontrol/cpucontrol.c index 5904a912bc32..f3bebec9e4d8 100644 --- a/usr.sbin/cpucontrol/cpucontrol.c +++ b/usr.sbin/cpucontrol/cpucontrol.c @@ -369,6 +369,8 @@ try_a_fw_image(const char *dev_path, int devfd, int fwdfd, const char *dpath, rc = 0; goto out; } + if (!S_ISREG(st.st_mode)) + goto out; if (st.st_size <= 0) { WARN(0, "%s: empty", fw_path); goto out;