[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(usagi-users 00989) Re: Problem with USAGI on Linux ARM
- To: guido.barzini@xxxxxxxxxx
- Subject: (usagi-users 00989) Re: Problem with USAGI on Linux ARM
- From: YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@xxxxxxxxxxxxxx>
- Date: Thu, 08 Nov 2001 05:01:29 +0900
- Cc: usagi-users@xxxxxxxxxxxxxx
- In-reply-to: <XFMail.20011107180408.guido.barzini@virata.com>
- References: <200111080244.FMLAAB17402.usagi-users@linux-ipv6.org> <XFMail.20011107180408.guido.barzini@virata.com>
- Reply-to: usagi-users@xxxxxxxxxxxxxx
- Sender: "Hideaki YOSHIFUJI" <yoshfuji@xxxxxxxxxxxxxxxxxxxxxxxxx>
In article <XFMail.20011107180408.guido.barzini@xxxxxxxxxx> (at Wed, 07 Nov 2001 18:04:08 -0000 (GMT)), Guido Barzini <guido.barzini@xxxxxxxxxx> says:
> The looks like a problem with gcc/ARM padding structures differently from
> gcc/i386 (the ARM works better with aligned quantities, so the compiler is more
> likely to insert padding), but I haven't been able to diagnose it further. I
> believe that it isn't a compile bug, since the default IPv6 support in 2.4.7
> behaves correctly.
Hmm, could you try this, please?
Index: kernel/linux24/net/ipv6/ndisc.c
===================================================================
RCS file: /cvsroot/usagi/usagi/kernel/linux24/net/ipv6/ndisc.c,v
retrieving revision 1.73
diff -u -r1.73 ndisc.c
--- kernel/linux24/net/ipv6/ndisc.c 2001/09/25 01:38:09 1.73
+++ kernel/linux24/net/ipv6/ndisc.c 2001/11/07 19:56:05
@@ -710,7 +710,7 @@
}
if (ndopts.nd_opts_src_lladdr) {
- lladdr = (u8*)(ndopts.nd_opts_src_lladdr + 1);
+ lladdr = ((u8*)ndopts.nd_opts_src_lladdr) + 2;
lladdrlen = ndopts.nd_opts_src_lladdr->nd_opt_len << 3;
if (lladdrlen != NDISC_OPT_SPACE(skb->dev->addr_len))
goto bad;
@@ -898,7 +898,7 @@
goto bad;
}
if (ndopts.nd_opts_tgt_lladdr) {
- lladdr = (u8*)(ndopts.nd_opts_tgt_lladdr + 1);
+ lladdr = ((u8*)ndopts.nd_opts_tgt_lladdr) + 2;
lladdrlen = ndopts.nd_opts_tgt_lladdr->nd_opt_len << 3;
if (lladdrlen != NDISC_OPT_SPACE(skb->dev->addr_len))
goto bad;
@@ -1009,7 +1009,7 @@
}
if (ndopts.nd_opts_src_lladdr) {
- lladdr = (u8 *)(ndopts.nd_opts_src_lladdr + 1);
+ lladdr = ((u8 *)ndopts.nd_opts_src_lladdr) + 2;
lladdrlen = ndopts.nd_opts_src_lladdr->nd_opt_len << 3;
if (lladdrlen != NDISC_OPT_SPACE(skb->dev->addr_len))
goto out;
@@ -1191,7 +1191,7 @@
int lladdrlen;
int notify;
if (ndopts.nd_opts_src_lladdr) {
- lladdr = (u8*)((ndopts.nd_opts_src_lladdr)+1);
+ lladdr = ((u8*)ndopts.nd_opts_src_lladdr)+2;
lladdrlen = ndopts.nd_opts_src_lladdr->nd_opt_len << 3;
if (lladdrlen != NDISC_OPT_SPACE(skb->dev->addr_len))
goto out;
@@ -1315,7 +1315,7 @@
return;
}
if (ndopts.nd_opts_tgt_lladdr) {
- lladdr = (u8*)(ndopts.nd_opts_tgt_lladdr + 1);
+ lladdr = ((u8*)ndopts.nd_opts_tgt_lladdr) + 2;
lladdrlen = ndopts.nd_opts_tgt_lladdr->nd_opt_len << 3;
if (lladdrlen != NDISC_OPT_SPACE(skb->dev->addr_len))
goto out;
--yoshfuji