commit b8d611242cec2588168e3fc461c196f1a722bbfb from: int16h date: Fri Dec 5 00:57:57 2025 UTC Fix: tmpfs now skips processing when a short/empty message arrives instead of treating it as a full req; task exit now treats portal revoke as best-effort... if transfer to a child succeeds we drop the handle; if transfer fails we attempt revoke but ignore owner mismatches to avoid noisy warnings when ownership changed commit - 1e18d00d2fa0e623ef0d612616fcb6d01f2a2c10 commit + b8d611242cec2588168e3fc461c196f1a722bbfb blob - 47890b492261bb487177b977cfe95e004065c75e blob + 38c0ad2754ae80a4a1dd4adba133b9acecc02196 --- kernel/sched/task.c +++ kernel/sched/task.c @@ -1983,7 +1983,11 @@ sched_exit_current(void) task->stdio_portal = IPC_PORTAL_INVALID_HANDLE; task->stdio_portal_ready = false; } else { - ipc_portal_revoke(task, task->stdio_portal); + /* + * If transfer failed, best-effort revoke. Ignore owner + * mismatch to avoid noisy logs when ownership changed. + */ + (void)ipc_portal_revoke(task, task->stdio_portal); task->stdio_portal = IPC_PORTAL_INVALID_HANDLE; task->stdio_portal_ready = false; } blob - 1603303b7941f4580a445d3e055b26ac96ba2fea blob + c5cfda2764ec5bfc70f9aeba9808660469bedb16 --- servers/fs/tmpfs/main.c +++ servers/fs/tmpfs/main.c @@ -1454,6 +1454,12 @@ main(void) sizeof(fs_request_buffer)); if (got <= 0) continue; + if (got < (ssize_t)sizeof(fs_request_buffer) && + fs_request_buffer.opcode == 0 && + fs_request_buffer.token == 0) { + /* Likely a wake for namesvc resolve failure; skip */ + continue; + } /* Require exact size match: reject truncated or oversized messages. * A malicious or buggy client sending a short message would leave * stale data in the buffer, which handlers would then use unsafely. */