Catch negative FDs
[akaros.git] / kern / src / resource.c
index bdd2b30..f6d42a6 100644 (file)
@@ -106,6 +106,8 @@ ssize_t core_request(struct proc *p)
                                // issue with if we're async or not (need to preempt it)
                                // either of these should trip it. TODO: (ACR) async core req
                                // TODO: relies on vcore0 being the caller (VC#)
+                               // TODO: do this in process.c and use this line:
+                               //if ((current != p) || (get_pcoreid(p, 0) != core_id()))
                                if ((current != p) || (p->procinfo->vcoremap[0].pcoreid != core_id()))
                                        panic("We don't handle async RUNNING_S core requests yet.");
                                /* save the tf so userspace can restart it.  Like in __notify,
@@ -158,7 +160,7 @@ ssize_t core_request(struct proc *p)
                 * (just like in proc_destroy).  it also needs to decref, to consume the
                 * reference that came into this function (since we don't return).  */
                if (need_to_idle) {
-                       proc_decref(p, 1);
+                       kref_put(&p->kref);
                        abandon_core();
                }
        } else { // nothing granted, just return