* Kernel 2.6.20.4 Unaligned address
@ 2007-04-10 23:02 doctor raid
2007-04-10 23:06 ` David Miller
2007-04-13 23:35 ` David Miller
0 siblings, 2 replies; 5+ messages in thread
From: doctor raid @ 2007-04-10 23:02 UTC (permalink / raw)
To: linux-kernel
[1] kernel errors reporting unaligned access of memory
[2] The following two lines iterate twice a piece, about once every 2 minutes:
Kernel unaligned access at TPC[79c344] arpt_do_table+0x3cc/0x640
Kernel unaligned access at TPC[79c33c] arpt_do_table+0x3c4/0x640
[3] ...
[4] Linux version 2.6.20.4 (root@outland) (gcc version 3.3.5 (Debian
1:3.3.5-13)) #3
Fri Apr 6 18:08:28 PDT 2007
[7] This is running on a Netra t1 105 (sparc)
/proc/cpu:
cpu : TI UltraSparc IIi (Sabre)
fpu : UltraSparc IIi integrated FPU
prom : OBP 3.10.27 2000/06/22 16:45
type : sun4u
ncpus probed : 1
ncpus active : 1
D$ parity tl1 : 0
I$ parity tl1 : 0
Cpu0Bogo : 880.43
Cpu0ClkTck : 000000001a3a605f
MMU Type : Spitfire
I can attach my .config if necessary, but don't want to clutter this
email with any
unnecessary data.
-brandon
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kernel 2.6.20.4 Unaligned address
2007-04-10 23:02 Kernel 2.6.20.4 Unaligned address doctor raid
@ 2007-04-10 23:06 ` David Miller
2007-04-11 6:35 ` Mathieu Chouquet-Stringer
2007-04-13 23:35 ` David Miller
1 sibling, 1 reply; 5+ messages in thread
From: David Miller @ 2007-04-10 23:06 UTC (permalink / raw)
To: drraid; +Cc: linux-kernel
Please report sparc platform bugs to sparclinux@vger.kernel.org next
time, thank you.
Meanwhile I'll take a look at this one.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kernel 2.6.20.4 Unaligned address
2007-04-10 23:06 ` David Miller
@ 2007-04-11 6:35 ` Mathieu Chouquet-Stringer
0 siblings, 0 replies; 5+ messages in thread
From: Mathieu Chouquet-Stringer @ 2007-04-11 6:35 UTC (permalink / raw)
To: David Miller; +Cc: drraid, linux-kernel, sparclinux
Hello,
davem@davemloft.net (David Miller) writes:
> Please report sparc platform bugs to sparclinux@vger.kernel.org next
> time, thank you.
>
> Meanwhile I'll take a look at this one.
I have a similar problem on an U5 [*] running 2.6.21-rc6-gbbef6181 :
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Kernel unaligned access at TPC[6c9950] svc_udp_recvfrom+0x21c/0x3f0
Disassembling vmlinux gives me that:
0x006c993c <svc_udp_recvfrom+512>: call 0x5999c8 <clear_bit>
0x006c9940 <svc_udp_recvfrom+516>: clr %o0
0x006c9944 <svc_udp_recvfrom+520>: call 0x6c7d4c <svc_sock_enqueue>
0x006c9948 <svc_udp_recvfrom+524>: mov %l3, %o0
0x006c994c <svc_udp_recvfrom+528>: ld [ %l1 + 0x88 ], %g2
0x006c9950 <svc_udp_recvfrom+532>: ldx [ %l5 + 8 ], %g3
0x006c9954 <svc_udp_recvfrom+536>: mov 0x11, %g1
0x006c9958 <svc_udp_recvfrom+540>: add %g2, -8, %i0
0x006c995c <svc_udp_recvfrom+544>: st %g1, [ %l4 + 0xdc8 ]
0x006c9960 <svc_udp_recvfrom+548>: cmp %g3, 8
0x006c9964 <svc_udp_recvfrom+552>: be,pn %xcc, 0x6c999c<svc_udp_recvfrom+608>
The same stuff but using objdump this time:
21c4: R_SPARC_WDISP30 clear_bit
21c8: 90 10 20 00 clr %o0
21cc: 7f ff f9 02 call 5d4 <svc_sock_enqueue>
21d0: 90 10 00 13 mov %l3, %o0
21d4: c4 04 60 88 ld [ %l1 + 0x88 ], %g2
21d8: c6 5d 60 08 ldx [ %l5 + 8 ], %g3
21dc: 82 10 20 11 mov 0x11, %g1
21e0: b0 00 bf f8 add %g2, -8, %i0
21e4: c2 25 2d c8 st %g1, [ %l4 + 0xdc8 ]
21e8: 80 a0 e0 08 cmp %g3, 8
21ec: 02 60 00 0e be,pn %xcc, 2224 <svc_udp_recvfrom+0x260>
21f0: f0 25 21 24 st %i0, [ %l4 + 0x124 ]
21f4: 40 00 00 00 call 21f4 <svc_udp_recvfrom+0x230>
21f4: R_SPARC_WDISP30 net_ratelimit
Looking at svc_udp_recvfrom, it all comes down to this portion of code (I
believe, unless I got it wrong):
/*
* Maybe more packets - kick another thread ASAP.
*/
svc_sock_received(svsk);
len = skb->len - sizeof(struct udphdr);
rqstp->rq_arg.len = len; <=====================================
rqstp->rq_prot = IPPROTO_UDP;
if (cmh->cmsg_level != IPPROTO_IP ||
cmh->cmsg_type != IP_PKTINFO) {
if (net_ratelimit())
printk("rpcsvc: received unknown control message:"
"%d/%d\n",
cmh->cmsg_level, cmh->cmsg_type);
skb_free_datagram(svsk->sk_sk, skb);
return 0;
}
I won't have access to this box for quite some time: I'm just unsure when I
will be able to test again any kind of patches...
I hope I've forwarded enough information though.
Cheers,
Mathieu
[*] :
cpu : TI UltraSparc IIi (Sabre)
fpu : UltraSparc IIi integrated FPU
prom : OBP 3.31.0 2001/07/25 20:36
type : sun4u
ncpus probed : 1
ncpus active : 1
D$ parity tl1 : 0
I$ parity tl1 : 0
Cpu0Bogo : 720.40
Cpu0ClkTck : 0000000015752a00
MMU Type : Spitfire
Kernel got compiled with:
Using built-in specs.
Target: sparc-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug --enable-mpfr --with-cpu=v8
--enable-checking=release sparc-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
--
Mathieu Chouquet-Stringer
The sun itself sees not till heaven clears.
-- William Shakespeare --
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kernel 2.6.20.4 Unaligned address
2007-04-10 23:02 Kernel 2.6.20.4 Unaligned address doctor raid
2007-04-10 23:06 ` David Miller
@ 2007-04-13 23:35 ` David Miller
2007-04-14 17:16 ` Patrick McHardy
1 sibling, 1 reply; 5+ messages in thread
From: David Miller @ 2007-04-13 23:35 UTC (permalink / raw)
To: drraid; +Cc: linux-kernel, kaber
From: "doctor raid" <drraid@gmail.com>
Date: Tue, 10 Apr 2007 16:02:01 -0700
> [1] kernel errors reporting unaligned access of memory
> [2] The following two lines iterate twice a piece, about once every 2 minutes:
>
> Kernel unaligned access at TPC[79c344] arpt_do_table+0x3cc/0x640
> Kernel unaligned access at TPC[79c33c] arpt_do_table+0x3c4/0x640
This patch below should fix this problem.
Patrick I'm going to push this to Linus. Even if it doesn't
fix this person's problem, either both the input device loop
and the output device loop should use the "long" casting
optimization or both should not :-)
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
index 5170f5c..57b0221 100644
--- a/net/ipv4/netfilter/arp_tables.c
+++ b/net/ipv4/netfilter/arp_tables.c
@@ -166,13 +166,9 @@ static inline int arp_packet_match(const struct arphdr *arphdr,
return 0;
}
- for (i = 0, ret = 0; i < IFNAMSIZ/sizeof(unsigned long); i++) {
- unsigned long odev;
- memcpy(&odev, outdev + i*sizeof(unsigned long),
- sizeof(unsigned long));
- ret |= (odev
- ^ ((const unsigned long *)arpinfo->outiface)[i])
- & ((const unsigned long *)arpinfo->outiface_mask)[i];
+ for (i = 0, ret = 0; i < IFNAMSIZ; i++) {
+ ret |= (outdev[i] ^ arpinfo->outiface[i])
+ & arpinfo->outiface_mask[i];
}
if (FWINV(ret != 0, ARPT_INV_VIA_OUT)) {
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: Kernel 2.6.20.4 Unaligned address
2007-04-13 23:35 ` David Miller
@ 2007-04-14 17:16 ` Patrick McHardy
0 siblings, 0 replies; 5+ messages in thread
From: Patrick McHardy @ 2007-04-14 17:16 UTC (permalink / raw)
To: David Miller; +Cc: drraid, linux-kernel
David Miller wrote:
> From: "doctor raid" <drraid@gmail.com>
> Date: Tue, 10 Apr 2007 16:02:01 -0700
>
>
>>[1] kernel errors reporting unaligned access of memory
>>[2] The following two lines iterate twice a piece, about once every 2 minutes:
>>
>> Kernel unaligned access at TPC[79c344] arpt_do_table+0x3cc/0x640
>> Kernel unaligned access at TPC[79c33c] arpt_do_table+0x3c4/0x640
>
>
> This patch below should fix this problem.
>
> Patrick I'm going to push this to Linus. Even if it doesn't
> fix this person's problem, either both the input device loop
> and the output device loop should use the "long" casting
> optimization or both should not :-)
Looks good, thanks Dave. On 64 bit both interfaces are unaligned
within struct arpt_arp:
char iniface[16]; /* 94 16 */
char outiface[16]; /* 110 16 */
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2007-04-14 17:18 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-04-10 23:02 Kernel 2.6.20.4 Unaligned address doctor raid
2007-04-10 23:06 ` David Miller
2007-04-11 6:35 ` Mathieu Chouquet-Stringer
2007-04-13 23:35 ` David Miller
2007-04-14 17:16 ` Patrick McHardy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox