Re: [AX25] kernel panic
flat view
From: Jarek Poplawski <hidden>
Date: 2008-03-28 12:01:33
On Wed, Mar 26, 2008 at 07:35:38PM +0100, Jarek Poplawski wrote:
...OK, here is the next try. (Apply after all previous patches to any 2.6.24.x; there would be more noise, so revert it after catching some data.)
Bernard, I fucked it up with this #3: (changed macro to function at
the last minute). I'm currently reading this, and maybe I'll figure
out something, but if it's not a big problem for you to repeat this
after adding this #4 (after all previous) it should be 'a bit' easier.
(But no need to hurry.)
Very sorry,
Jarek P.
(debugging patch #4)
---
diff -Nurp 2.6.24.3-with3/include/net/sock.h 2.6.24.3-with4/include/net/sock.h--- 2.6.24.3-with3/include/net/sock.h 2008-03-26 19:10:33.000000000 +0100
+++ 2.6.24.3-with4/include/net/sock.h 2008-03-28 12:42:19.000000000 +0100@@ -1414,20 +1414,18 @@ extern int sysctl_optmem_max; extern __u32 sysctl_wmem_default; extern __u32 sysctl_rmem_default; -static inline int sock_debug_ax25(struct sk_buff *skb, struct sock *ax25_sk) -{ - struct sock *sk = skb->sk; - - if (sk && sk->sk_socket && sk->sk_socket->sk != sk) { - if (net_ratelimit()) - printk(KERN_INFO "AX25: %s, %d, %p, %p, %p, %p, %p\n", - __FUNCTION__, __LINE__, sk, sk->sk_socket, - sk->sk_socket->sk, ax25_sk, - ax25_sk == NULL ? NULL : ax25_sk->sk_socket); - skb->destructor = NULL; - return 1; - } - return 0; -} +#define sock_debug_ax25(__skb, __ax25_sk) \ +({ \ + struct sock *__sk = __skb->sk; \ + \ + if (__sk && __sk->sk_socket && __sk->sk_socket->sk != __sk) { \ + if (net_ratelimit()) \ + printk(KERN_INFO "AX25: %s, %d, %p, %p, %p, %p, %p\n", \ + __FUNCTION__, __LINE__, __sk, __sk->sk_socket, \ + __sk->sk_socket->sk, __ax25_sk, \ + __ax25_sk == NULL ? NULL : __ax25_sk->sk_socket); \ + __skb->destructor = NULL; \ + } \ +}) #endif /* _SOCK_H */
diff -Nurp 2.6.24.3-with3/net/ax25/af_ax25.c 2.6.24.3-with4/net/ax25/af_ax25.c
--- 2.6.24.3-with3/net/ax25/af_ax25.c 2008-03-26 18:52:54.000000000 +0100
+++ 2.6.24.3-with4/net/ax25/af_ax25.c 2008-03-28 12:50:35.000000000 +0100@@ -866,6 +866,9 @@ static int ax25_create(struct net *net, ax25->sk = sk; + if (net_ratelimit()) + printk(KERN_INFO "AX25+ %s, %d, %p, %p\n", __FUNCTION__, __LINE__, sk, sock); + return 0; }
@@ -939,6 +942,10 @@ struct sock *ax25_make_new(struct sock * sk->sk_ax25_debug = 1; ax25->sk = sk; + if (net_ratelimit()) + printk(KERN_INFO "AX25; %s, %d, %p, %p\n", + __FUNCTION__, __LINE__, sk, sk->sk_socket); + return sk; }