git: 048ce0876f54 - main - adjkerntz(8): detect extra jailed invokation to keep logs clean

From: Eugene Grosbein <eugen_at_FreeBSD.org>
Date: Tue, 21 Jun 2022 18:33:01 UTC
The branch main has been updated by eugen:

URL: https://cgit.FreeBSD.org/src/commit/?id=048ce0876f5421f70a6d348479bdeacdd8472bed

commit 048ce0876f5421f70a6d348479bdeacdd8472bed
Author:     Eugene Grosbein <eugen@FreeBSD.org>
AuthorDate: 2022-06-21 18:29:08 +0000
Commit:     Eugene Grosbein <eugen@FreeBSD.org>
CommitDate: 2022-06-21 18:32:54 +0000

    adjkerntz(8):   detect extra jailed invokation to keep logs clean
    
    It may happen that "adjkerntz -a" called from jailed root crontab.
    In that case it spams logs with a line:
    
    sysctl(set: "machdep.wall_cmos_clock"): Operation not permitted
    
    Be silent in that case.
    
    MFC after:      1 month
---
 sbin/adjkerntz/adjkerntz.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/sbin/adjkerntz/adjkerntz.c b/sbin/adjkerntz/adjkerntz.c
index e6cadcf7f189..2fde545ebf32 100644
--- a/sbin/adjkerntz/adjkerntz.c
+++ b/sbin/adjkerntz/adjkerntz.c
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
  * with Garrett Wollman and Bruce Evans fixes.
  *
  */
+#include <errno.h>
 #include <stdio.h>
 #include <signal.h>
 #include <stdlib.h>
@@ -159,6 +160,12 @@ again:
 
 	len = sizeof(kern_offset);
 	if (sysctlbyname("machdep.adjkerntz", &kern_offset, &len, NULL, 0) == -1) {
+		if (errno == EPERM && !init && geteuid() == 0)
+			/*
+			 * Surplus call from jailed root crontab.
+			 * Avoid spamming logs.
+			 */
+			return 1;
 		syslog(LOG_ERR, "sysctl(\"machdep.adjkerntz\"): %m");
 		return 1;
 	}