diff --git a/kernel/base/vm/shm.c b/kernel/base/vm/shm.c index 035a456f6e344944937e89537edd7520d27c7772..b5b4d12fe56d2bcb98462d160e051e70d7e2b401 100644 --- a/kernel/base/vm/shm.c +++ b/kernel/base/vm/shm.c @@ -304,7 +304,7 @@ STATIC struct shmIDSource *ShmFindSeg(int shmid) } seg = &g_shmSegs[shmid]; - if ((seg->status & SHM_SEG_FREE) || (seg->status & SHM_SEG_REMOVE)) { + if ((seg->status & SHM_SEG_FREE) || ((seg->ds.shm_nattch == 0) && (seg->status & SHM_SEG_REMOVE))) { set_errno(EIDRM); return NULL; }