From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: From: erik quanstrom Date: Sat, 1 Aug 2009 21:38:16 -0400 To: 9fans@9fans.net In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] Kernel crash bug Topicbox-Message-UUID: 352366f4-ead5-11e9-9d60-3106f5b1d025 diff -c /n/dump/2009/0801/sys/src/9/port/sysproc.c sysproc.c /n/dump/2009/0801/sys/src/9/port/sysproc.c:234,247 - sysproc.c:234,248 ulong magic, text, entry, data, bss; Tos *tos; - validaddr(arg[0], 1, 0); - file = (char*)arg[0]; + file = nil; indir = 0; elem = nil; if(waserror()){ free(elem); + free(file); nexterror(); } + file = validnamedup((char*)arg[0], 1); for(;;){ tc = namec(file, Aopen, OEXEC, 0); if(waserror()){ diff -c /n/dump/2009/0801/sys/src/9/port/chan.c chan.c /n/dump/2009/0801/sys/src/9/port/chan.c:1689,1701 - chan.c:1689,1698 if((ulong)name < KZERO){ validaddr((ulong)name, 1, 0); if(!dup) - print("warning: validname called from %lux with user pointer", pc); + print("warning: validname called from %#p with user pointer", pc); p = name; t = BY2PG-((ulong)p&(BY2PG-1)); - while((ename=vmemchr(p, 0, t)) == nil){ - p += t; - t = BY2PG; - } + ename = vmemchr(name, 0, 1<<16); }else ename = memchr(name, 0, (1<<16));