From owner-svn-src-head@FreeBSD.ORG Sat Nov 14 21:52:36 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D1BF61065679; Sat, 14 Nov 2009 21:52:36 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 90B148FC24; Sat, 14 Nov 2009 21:52:36 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id nAELkSVZ097040; Sat, 14 Nov 2009 14:46:28 -0700 (MST) (envelope-from imp@bsdimp.com) Date: Sat, 14 Nov 2009 14:46:44 -0700 (MST) Message-Id: <20091114.144644.580455928.imp@bsdimp.com> To: marcel@freebsd.org From: "M. Warner Losh" In-Reply-To: <200911141814.nAEIE7ku008530@svn.freebsd.org> References: <200911141814.nAEIE7ku008530@svn.freebsd.org> X-Mailer: Mew version 5.2 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r199274 - head/sys/nfsserver X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Nov 2009 21:52:36 -0000 In message: <200911141814.nAEIE7ku008530@svn.freebsd.org> Marcel Moolenaar writes: : Author: marcel : Date: Sat Nov 14 18:14:07 2009 : New Revision: 199274 : URL: http://svn.freebsd.org/changeset/base/199274 : : Log: : Fix an obvious panic by not casting from a pointer that is 4-bytes : alignment to a type that needs 8-byte alignment, and thus causing : misaligned memory references. : : MFC after: 1 week : : Modified: : head/sys/nfsserver/nfs_fha.c : : Modified: head/sys/nfsserver/nfs_fha.c : ============================================================================== : --- head/sys/nfsserver/nfs_fha.c Sat Nov 14 16:20:07 2009 (r199273) : +++ head/sys/nfsserver/nfs_fha.c Sat Nov 14 18:14:07 2009 (r199274) : @@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$"); : #include : #include : #include : +#include : #include : #include : #include : @@ -206,7 +207,11 @@ fha_extract_info(struct svc_req *req, st : if (error) : goto out; : : - i->fh = *(const u_int64_t *)(fh.fh_generic.fh_fid.fid_data); : +#if _BYTE_ORDER == _LITTLE_ENDIAN : + i->fh = le64dec(fh.fh_generic.fh_fid.fid_data); : +#else : + i->fh = be64dec(fh.fh_generic.fh_fid.fid_data); : +#endif : : /* Content ourselves with zero offset for all but reads. */ : if (procnum != NFSPROC_READ) Wouldn't memcpy do the same thing without the need for an ifdef? memcpy(&i->fh, fh.fh_generic.fh_fid.fid_data, sizeof(uint64_t)); Warner