Hi,

With a -current from this morning, I have this in my logs:

Sep 28 12:27:37 flynn console-kit-daemon[1113]: WARNING: kvm_openfiles failed: 
/dev/mem: Operation not permitted
Sep 28 12:28:30 flynn last message repeated 12 times

It seems that sysutils/consolekit try to play with /dev/mem via kvm(3)
interface, and since the introduction of kern.allowkmem it isn't
possible anymore by default.

Looking at source code, console-kit use only kvm_getenvv(3) function.

As this function is available via kvm(3) for alive kernel (using sysctl
variant), this diff below (untested, sorry) change kvm_openfiles(3) flag
from O_RDONLY to KVM_NO_FILES.

Thanks.
-- 
Sebastien Marie


Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/consolekit/Makefile,v
retrieving revision 1.58
diff -u -p -r1.58 Makefile
--- Makefile    19 Mar 2016 17:51:34 -0000      1.58
+++ Makefile    28 Sep 2016 12:11:52 -0000
@@ -8,6 +8,8 @@ GH_TAGNAME=             1.0.2
 GH_ACCOUNT=            ConsoleKit2
 GH_PROJECT=            ConsoleKit2
 
+REVISION=              0
+
 CATEGORIES=            sysutils        
 
 SHARED_LIBS +=  ck-connector         1.1      # 0.0
Index: patches/patch-src_ck-sysdeps-openbsd_c
===================================================================
RCS file: patches/patch-src_ck-sysdeps-openbsd_c
diff -N patches/patch-src_ck-sysdeps-openbsd_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_ck-sysdeps-openbsd_c      28 Sep 2016 12:11:52 -0000
@@ -0,0 +1,13 @@
+$OpenBSD$
+No need to open /dev/mem to use kvm_getenvv(3) on live kernel.
+--- src/ck-sysdeps-openbsd.c.orig      Wed Sep 28 14:08:07 2016
++++ src/ck-sysdeps-openbsd.c   Wed Sep 28 14:08:09 2016
+@@ -248,7 +248,7 @@ ck_unix_pid_get_env_hash (pid_t pid)
+         struct kinfo_proc p;
+         int               i;
+ 
+-        kd = kvm_openfiles (NULL, NULL, NULL, O_RDONLY, errbuf);
++        kd = kvm_openfiles (NULL, NULL, NULL, KVM_NO_FILES, errbuf);
+         if (kd == NULL) {
+               g_warning ("kvm_openfiles failed: %s", errbuf);
+                 return NULL;

Reply via email to