void shm_exit_ns(struct ipc_namespace *ns) { int i; struct shmid_kernel *shp; mutex_lock(&shm_ids(ns).mutex); for (i = 0; i <= shm_ids(ns).max_id; i++) { shp = shm_lock(ns, i); if (shp == NULL) continue; do_shm_rmid(ns, shp); } mutex_unlock(&shm_ids(ns).mutex); ipc_fini_ids(ns->ids[IPC_SHM_IDS]); kfree(ns->ids[IPC_SHM_IDS]); ns->ids[IPC_SHM_IDS] = NULL; }
void msg_exit_ns(struct ipc_namespace *ns) { int i; struct msg_queue *msq; mutex_lock(&msg_ids(ns).mutex); for (i = 0; i <= msg_ids(ns).max_id; i++) { msq = msg_lock(ns, i); if (msq == NULL) continue; freeque(ns, msq, i); } mutex_unlock(&msg_ids(ns).mutex); ipc_fini_ids(ns->ids[IPC_MSG_IDS]); kfree(ns->ids[IPC_MSG_IDS]); ns->ids[IPC_MSG_IDS] = NULL; }