--- 99-pre1/ipc/shm.c Wed Mar 15 17:11:34 2000 +++ m-pre1/ipc/shm.c Wed Mar 15 19:15:43 2000 @@ -881,9 +881,8 @@ { char *result; - result = __getname (); - if (IS_ERR(result)) - return result; + if (!(result = __getname ())) + return ERR_PTR(-ENOMEM); sprintf (result, "%s/" SHM_FMT, shm_path, id); return result; @@ -1220,7 +1219,7 @@ struct page * page; if (idx >= shp->shm_npages) - goto sigbus; + return NOPAGE_SIGBUS; pte = SHM_ENTRY(shp,idx); if (!pte_present(pte)) { @@ -1267,9 +1266,8 @@ return pte_page(pte); oom: + shm_lock(shp->id); return NOPAGE_OOM; -sigbus: - return NOPAGE_SIGBUS; } static struct page * shm_nopage(struct vm_area_struct * shmd, unsigned long address, int no_share)