Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: sparc64/80410: commit references a PR

1 view
Skip to first unread message

dfilter service

unread,
Mar 31, 2010, 4:40:04 PM3/31/10
to freebsd...@freebsd.org
The following reply was made to PR sparc64/80410; it has been noted by GNATS.

From: dfi...@FreeBSD.ORG (dfilter service)
To: bug-fo...@FreeBSD.org
Cc:
Subject: Re: sparc64/80410: commit references a PR
Date: Wed, 31 Mar 2010 20:37:57 +0000 (UTC)

Author: mav
Date: Wed Mar 31 20:37:44 2010
New Revision: 206000
URL: http://svn.freebsd.org/changeset/base/206000

Log:
Make ng_ppp fulfill upper 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_ppp.c

Modified: head/sys/netgraph/ng_ppp.c
==============================================================================
--- head/sys/netgraph/ng_ppp.c Wed Mar 31 20:15:20 2010 (r205999)
+++ head/sys/netgraph/ng_ppp.c Wed Mar 31 20:37:44 2010 (r206000)
@@ -907,7 +907,21 @@ ng_ppp_proto_recv(node_p node, item_p it
const priv_p priv = NG_NODE_PRIVATE(node);
hook_p outHook = NULL;
int error;
+#ifdef ALIGNED_POINTER
+ struct mbuf *m, *n;

+ NGI_GET_M(item, m);
+ if (!ALIGNED_POINTER(mtod(m, caddr_t), uint32_t)) {
+ n = m_defrag(m, M_NOWAIT);
+ if (n == NULL) {
+ m_freem(m);
+ NG_FREE_ITEM(item);
+ return (ENOBUFS);
+ }
+ m = n;
+ }
+ NGI_M(item) = m;
+#endif /* ALIGNED_POINTER */
switch (proto) {
case PROT_IP:
if (priv->conf.enableIP)
_______________________________________________
svn-s...@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all...@freebsd.org"

dfilter service

unread,
Mar 31, 2010, 6:20:05 PM3/31/10
to freebsd...@freebsd.org
The following reply was made to PR sparc64/80410; it has been noted by GNATS.

From: dfi...@FreeBSD.ORG (dfilter service)
To: bug-fo...@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),

0 new messages