Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Jun 2011 19:57:27 +0800 (CST)
From:      Tai-hwa Liang <avatar@mmlab.cse.yzu.edu.tw>
To:        Bruce Evans <brde@optusnet.com.au>
Cc:        Garrett Cooper <yanegomi@gmail.com>, svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r223139 - head/lib/libstand
Message-ID:  <11061619555315.44181@www.mmlab.cse.yzu.edu.tw>
In-Reply-To: <20110616180803.D1005@besplex.bde.org>
References:  <201106160714.p5G7Etfx017112@svn.freebsd.org> <BANLkTi=X0_SBLAQ6t7amTLv7jF6_oXAV4Q@mail.gmail.com> <BANLkTimG4svFzv1QPiKQcC7QdChLica9xA@mail.gmail.com> <20110616180803.D1005@besplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--3425325993-407207228-1308225447=:44181
Content-Type: TEXT/PLAIN; charset=big5; format=flowed
Content-Transfer-Encoding: 8BIT

On Thu, 16 Jun 2011, Bruce Evans wrote:

> On Thu, 16 Jun 2011, Garrett Cooper wrote:
>
>> On Thu, Jun 16, 2011 at 12:19 AM, Garrett Cooper <yanegomi@gmail.com> 
>> wrote:
>>> On Thu, Jun 16, 2011 at 12:14 AM, Tai-hwa Liang <avatar@freebsd.org> 
>>> wrote:
>>>> Author: avatar
>>>> Date: Thu Jun 16 07:14:55 2011
>>>> New Revision: 223139
>>>> URL: http://svn.freebsd.org/changeset/base/223139
>>>> 
>>>> Log:
>>>>  Unbreaking build on sparc64.
>
> Why not fix it on all arches?  This seems to break it on all 32-bit arches.
>
>>>>  Submitted by: Garrett Cooper <yanegomi@gmail.com>
>>>> 
>>>> Modified:
>>>>  head/lib/libstand/zalloc.c
>>>> 
>>>> Modified: head/lib/libstand/zalloc.c
>>>> ==============================================================================
>>>> --- head/lib/libstand/zalloc.c  Thu Jun 16 05:26:03 2011        (r223138)
>>>> +++ head/lib/libstand/zalloc.c  Thu Jun 16 07:14:55 2011        (r223139)
>>>> @@ -154,7 +154,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by
>>>>     if ((char *)ptr < (char *)mp->mp_Base ||
>>>>        (char *)ptr + bytes > (char *)mp->mp_End ||
>>>>        ((iaddr_t)ptr & MEMNODE_SIZE_MASK) != 0)
>>>> -       panic("zfree(%p,%d): wild pointer", ptr, bytes);
>>>> +       panic("zfree(%p,%ju): wild pointer", ptr, bytes);
>>> 
>>> All of those need to be cast to (uintmax_t). Sorry :(..
>
> Indeed.  There is no format letter for intptr_t, and perhaps iaddr_t is
> supposed to be opaque anyway.
>
>> And you need to add #include <stdint.h> to stand.h in order to get
>> uintmax_t. Here's a proper patch for amd64..
>
> This would add namespace pollution.  stand.h doesn't use anything in
> <stdint.h>.  It depends on normal namespace pollution in an XXX section
> in <sys/types.h> for the declaration of uintptr_t.  It and other headers
> should use __uintptr_t instead.  Strangely, <sys/types.h> declares
> uintptr_t but not uintmax_t.

   What about casting to __uintmax_t instead?

Index: zalloc.c
===================================================================
--- zalloc.c	(revision 223146)
+++ zalloc.c	(working copy)
@@ -154,7 +154,7 @@
      if ((char *)ptr < (char *)mp->mp_Base ||
  	(char *)ptr + bytes > (char *)mp->mp_End ||
  	((iaddr_t)ptr & MEMNODE_SIZE_MASK) != 0)
-	panic("zfree(%p,%ju): wild pointer", ptr, bytes);
+	panic("zfree(%p,%ju): wild pointer", ptr, (__uintmax_t)bytes);

      /*
       * free the segment
@@ -177,8 +177,10 @@
  		/*
  		 * range check
  		 */
-		if ((char *)ptr + bytes > (char *)mn)
-		    panic("zfree(%p,%ju): corrupt memlist1",ptr, bytes);
+		if ((char *)ptr + bytes > (char *)mn) {
+		    panic("zfree(%p,%ju): corrupt memlist1", ptr,
+			(__uintmax_t)bytes);
+		}

  		/*
  		 * merge against next area or create independant area
@@ -208,8 +210,10 @@
  		return;
  		/* NOT REACHED */
  	    }
-	    if ((char *)ptr < (char *)mn + mn->mr_Bytes)
-		panic("zfree(%p,%ju): corrupt memlist2", ptr, bytes);
+	    if ((char *)ptr < (char *)mn + mn->mr_Bytes) {
+		panic("zfree(%p,%ju): corrupt memlist2", ptr,
+		    (__uintmax_t)bytes);
+	    }
  	}
  	/*
  	 * We are beyond the last MemNode, append new MemNode.  Merge against
--3425325993-407207228-1308225447=:44181--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?11061619555315.44181>