Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Aug 2009 17:33:22 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Rick Macklem <rmacklem@uoguelph.ca>
Cc:        jeff@FreeBSD.org, "Bjoern A. Zeeb" <bz@FreeBSD.org>, freebsd-current@FreeBSD.org, kib@FreeBSD.org, Navdeep Parhar <np@FreeBSD.org>, Navdeep Parhar <nparhar@gmail.com>, Larry Rosenman <ler@lerctr.org>, lstewart@FreeBSD.org
Subject:   Re: reproducible panic in netisr
Message-ID:  <alpine.BSF.2.00.0908061732360.62916@fledge.watson.org>
In-Reply-To: <Pine.GSO.4.63.0908061038120.22077@muncher.cs.uoguelph.ca>
References:  <20090804225806.GA54680@hub.freebsd.org> <20090805054115.O93661@maildrop.int.zabbadoz.net> <20090805063417.GA10969@doormat.home> <alpine.BSF.2.00.0908060011490.59996@fledge.watson.org> <alpine.BSF.2.00.0908060834120.21318@thebighonker.lerctr.org> <alpine.BSF.2.00.0908061508520.62916@fledge.watson.org> <Pine.GSO.4.63.0908061038120.22077@muncher.cs.uoguelph.ca>

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

On Thu, 6 Aug 2009, Rick Macklem wrote:

> On Thu, 6 Aug 2009, Robert Watson wrote:
>
>> other places where we have very strong alignment requirements on 
>> i386/amd64, such as the td_ucred pointer that we check for change on system 
>> calls/traps to see if we need to refresh the thread's credential from the 
>> process credential.
>> 
> Does this imply that the nfs/krpc hack of:
> 	oldcred = td->td_ucred;
> 	td->td_ucred = "some other cred ptr"
> 	...
> 	td->td_ucred = oldcred;
>
> could be dangerous?
>
> Maybe it should be converted to code that replaces the contents instead of 
> replacing the *cred? (Variants of the above live in a bunch of places in the 
> krpc, nlm and nfs code, due to the fact that the socket functions use 
> td->td_ucred in various places.)

td->td_ucred is a thread-local variable, meaning that it will only be accessed 
and modified from the current thread.  So the above construct is fine.  Also, 
struct thread should be properly aligned. :-)

Robert N M Watson
Computer Laboratory
University of Cambridge



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