Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Dec 2000 15:22:41 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Bosko Milekic <bmilekic@technokratis.com>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   RE: cvs commit: src/sys/sys mbuf.h
Message-ID:  <XFMail.001213152241.jhb@FreeBSD.org>
In-Reply-To: <Pine.BSF.4.21.0012131729490.24887-100000@jehovah.technokratis.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 13-Dec-00 Bosko Milekic wrote:
> 
> On Wed, 13 Dec 2000, John Baldwin wrote:
> 
>> 
>> On 13-Dec-00 Bosko Milekic wrote:
>> > bmilekic    2000/12/12 21:13:03 PST
>> > 
>> >   Modified files:
>> >     sys/sys              mbuf.h 
>> >   Log:
>> >   Eliminate a race in MEXTFREE(). The reference counter decrement and test
>> >   was not atomic. We now make sure that we free the ext buf if the
>> >   reference
>> >   count is about to reach 0 but also make sure that nobody else has done
>> >   it
>> >   before us.
>> >   
>> >   While I'm here, change refcnt to u_int (from long). This fixes a
>> >   compiler
>> >   warning regarding use of atomic_cmpset_long on i386.
>> 
>> If you are using atomic_cmpset_long, then use u_long for the refcount
>> instead
>> of u_int please.  Eitehr that, or use atomic_cmpset_int.
> 
>       I don't know if you actually looked at the diff.
> 
>       I'm not using atomic_cmpset_long because strictly speaking, it
>   doesn't exist on i386 (it's defined to just atomic_cmpset_int) and
>   the compiler complains when you pass a long as the first argument to
>   atomic_cmpset_int.
>       The refcnt is now of type u_int.

On the alpha and ia64, these are two different functions, and the atomic
operations _really_ assume that the types are identical.  If
atomic_cmpset_long(long foo) generates a warning, then I need to fix the atomic
operations.  Changing to a u_int is wrong, and will result in memory corruption
on other arch's.  Hmm, you are using atomic_cmpset_int(), so don't say you are
using atomic_cmpset_long() in the log message, please, as that is most
confusing.

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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