From 86eb8ea6bbbf031d71cf0fa58f468cd3ddc4e7f3 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 6 Aug 2015 10:15:07 +0200 Subject: kernel: change vmemchr() length argument to ulong and simplify --- sys/src/9/port/fault.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'sys/src/9/port/fault.c') diff --git a/sys/src/9/port/fault.c b/sys/src/9/port/fault.c index 6565c670a..00c905b8c 100644 --- a/sys/src/9/port/fault.c +++ b/sys/src/9/port/fault.c @@ -332,18 +332,20 @@ validaddr(uintptr addr, ulong len, int write) * &s[0] is known to be a valid address. */ void* -vmemchr(void *s, int c, int n) +vmemchr(void *s, int c, ulong n) { - int m; uintptr a; + ulong m; void *t; a = (uintptr)s; - while(PGROUND(a) != PGROUND(a+n-1)){ - /* spans pages; handle this page */ + for(;;){ m = BY2PG - (a & (BY2PG-1)); + if(n <= m) + break; + /* spans pages; handle this page */ t = memchr((void*)a, c, m); - if(t) + if(t != nil) return t; a += m; n -= m; -- cgit v1.2.3