From d6eb7cc71c89762694fad552aa21489c55bf0a29 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 13 Jun 2015 17:50:26 +0200 Subject: kernel: dont use smalloc() to allocate pte array in ibrk() when we'r out of kernel memory, it is probably better to let that alloc fail instead of hanging while holding the segment qlock. --- sys/src/9/port/segment.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/src/9/port/segment.c b/sys/src/9/port/segment.c index 299d8c96b..c2ad137f1 100644 --- a/sys/src/9/port/segment.c +++ b/sys/src/9/port/segment.c @@ -437,7 +437,11 @@ ibrk(uintptr addr, int seg) } mapsize = ROUND(newsize, PTEPERTAB)/PTEPERTAB; if(mapsize > s->mapsize){ - map = smalloc(mapsize*sizeof(Pte*)); + map = malloc(mapsize*sizeof(Pte*)); + if(map == nil){ + qunlock(s); + error(Enomem); + } memmove(map, s->map, s->mapsize*sizeof(Pte*)); if(s->map != s->ssegmap) free(s->map); -- cgit v1.2.3