]> Zhao Yanbai Git Server - minix.git/commitdiff
- enable ipc warnings by default
authorBen Gras <ben@minix3.org>
Fri, 17 Apr 2009 13:46:37 +0000 (13:46 +0000)
committerBen Gras <ben@minix3.org>
Fri, 17 Apr 2009 13:46:37 +0000 (13:46 +0000)
 - ipc checking code in kernel didn't properly catch the
   sendrec() to self case; added special case check
 - triggered by PM using stock panic() - needs its own _exit()

reported by Joren l'Ami.

kernel/debug.h
kernel/proc.c
servers/pm/forkexit.c

index 87c674ca2dfcd90f72fffba5d91e7a882ffe7e0d..034a26e8270da216c132d26ed141ec178068e076 100644 (file)
@@ -19,7 +19,7 @@
  * Of course the call still fails, but nothing is printed if these warnings
  * are disabled.
  */
-#define DEBUG_ENABLE_IPC_WARNINGS      0
+#define DEBUG_ENABLE_IPC_WARNINGS      1
 #define DEBUG_STACKTRACE               1
 #define DEBUG_VMASSERT                 1
 #define DEBUG_SCHED_CHECK              1
index 11960020a9241ecb4d5806469afba9f17673aa2c..0b5f43c36af6ff32ef7bd0e8dcd5ca3c6c5bf113 100755 (executable)
@@ -201,6 +201,13 @@ long bit_map;                      /* notification event set or flags */
   }
   else
   {
+       if(caller_ptr->p_endpoint == src_dst_e) {
+#if DEBUG_ENABLE_IPC_WARNINGS
+               kprintf("sys_call: trap %d by %d with self %d\n", 
+                       call_nr, proc_nr(caller_ptr), src_dst_e);
+#endif
+               return EINVAL;
+       }
        /* Require a valid source and/or destination process. */
        if(!isokendpt(src_dst_e, &src_dst_p)) {
 #if DEBUG_ENABLE_IPC_WARNINGS
index 63656ad6be8af251f0e6c43356d351049daf527f..4bfe4ad3054d9a73ffacc526a423bda35f71cd22 100644 (file)
@@ -417,3 +417,13 @@ register struct mproc *rmp;        /* tells which process is exiting */
   rmp->mp_child_stime = 0;
   procs_in_use--;
 }
+
+PUBLIC void _exit(int code)
+{
+       sys_exit(SELF);
+}
+
+PUBLIC void __exit(int code)
+{
+       sys_exit(SELF);
+}