sparc64/80410: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Wed Mar 31 22:20:05 UTC 2010


The following reply was made to PR sparc64/80410; it has been noted by GNATS.

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: sparc64/80410: commit references a PR
Date: Wed, 31 Mar 2010 22:16:19 +0000 (UTC)

 Author: mav
 Date: Wed Mar 31 22:16:05 2010
 New Revision: 206017
 URL: http://svn.freebsd.org/changeset/base/206017
 
 Log:
   Make ng_ksocket fulfill lower protocol stack layers alignment requirements
   on platforms with strict alignment constraints.
   This fixes kernel panics on arm and probably other architectures.
   
   PR:		sparc64/80410
 
 Modified:
   head/sys/netgraph/ng_ksocket.c
 
 Modified: head/sys/netgraph/ng_ksocket.c
 ==============================================================================
 --- head/sys/netgraph/ng_ksocket.c	Wed Mar 31 22:11:19 2010	(r206016)
 +++ head/sys/netgraph/ng_ksocket.c	Wed Mar 31 22:16:05 2010	(r206017)
 @@ -902,12 +902,24 @@ ng_ksocket_rcvdata(hook_p hook, item_p i
  	struct sockaddr *sa = NULL;
  	int error;
  	struct mbuf *m;
 +#ifdef ALIGNED_POINTER
 +	struct mbuf *n;
 +#endif /* ALIGNED_POINTER */
  	struct sa_tag *stag;
  
  	/* Extract data */
  	NGI_GET_M(item, m);
  	NG_FREE_ITEM(item);
 -
 +#ifdef ALIGNED_POINTER
 +	if (!ALIGNED_POINTER(mtod(m, caddr_t), uint32_t)) {
 +		n = m_defrag(m, M_NOWAIT);
 +		if (n == NULL) {
 +			m_freem(m);
 +			return (ENOBUFS);
 +		}
 +		m = n;
 +	}
 +#endif /* ALIGNED_POINTER */
  	/*
  	 * Look if socket address is stored in packet tags.
  	 * If sockaddr is ours, or provided by a third party (zero id),
 _______________________________________________
 svn-src-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
 


More information about the freebsd-sparc64 mailing list