From 37dcb25eee726a6e207963e737e12cc5a95ca398 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 20 Oct 2018 19:52:54 +0200 Subject: kernel: fix allocb for BLOCKALIGN*2 >= Hdrspc --- sys/src/9/port/allocb.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'sys/src/9/port/allocb.c') diff --git a/sys/src/9/port/allocb.c b/sys/src/9/port/allocb.c index 24fc17d64..bb45551eb 100644 --- a/sys/src/9/port/allocb.c +++ b/sys/src/9/port/allocb.c @@ -19,7 +19,8 @@ _allocb(int size) uintptr addr; size += Tlrspc; - if((b = mallocz(sizeof(Block)+size+Hdrspc, 0)) == nil) + size = ROUND(size, BLOCKALIGN); + if((b = mallocz(sizeof(Block)+BLOCKALIGN+Hdrspc+size, 0)) == nil) return nil; b->next = nil; @@ -38,11 +39,8 @@ _allocb(int size) addr &= ~(BLOCKALIGN-1); b->lim = (uchar*)addr; - /* leave sluff at beginning for added headers */ - b->rp = b->lim - ROUND(size, BLOCKALIGN); - if(b->rp < b->base) - panic("_allocb"); - b->wp = b->rp; + /* leave room at beginning for added headers */ + b->wp = b->rp = b->lim - size; return b; } -- cgit v1.2.3