Print this page
OS-5440 pfexec and the case of the missing error message
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>

@@ -37,10 +37,12 @@
 #include <sys/systm.h>
 #include <sys/sysmacros.h>
 #include <sys/pathname.h>
 #include <sys/varargs.h>
 #include <sys/zone.h>
+#include <sys/cmn_err.h>
+#include <sys/sdt.h>
 #include <netinet/in.h>
 
 #define ROUNDUP(a, n) (((a) + ((n) - 1)) & ~((n) - 1))
 
 static kmutex_t klpd_mutex;

@@ -858,12 +860,17 @@
         mutex_enter(&myzone->zone_lock);
         if ((pfd = myzone->zone_pfexecd) != NULL)
                 klpd_hold(pfd);
         mutex_exit(&myzone->zone_lock);
 
-        if (pfd == NULL)
+        if (pfd == NULL) {
+                DTRACE_PROBE2(pfexecd__not__running,
+                    zone_t *, myzone, char *, rpnp->pn_path);
+                uprintf("pfexecd not running; pid %d privileges not "
+                    "elevated\n", curproc->p_pid);
                 return (0);
+        }
 
         if (pfd->klpd_door_pid == curproc->p_pid) {
                 klpd_rele(pfd);
                 return (0);
         }

@@ -894,10 +901,13 @@
                 case EBADF:
                         /* FALLTHROUGH */
                 case EINTR:
                         /* FALLTHROUGH */
                 default:
+                        DTRACE_PROBE4(pfexecd__failure,
+                            int, dres, zone_t *, myzone,
+                            char *, rpnp->pn_path, klpd_reg_t *, pfd);
                         goto out;
                 }
         }
 
         prp = (pfexec_reply_t *)da.rbuf;