All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarek Poplawski <jarkao2@gmail.com>
To: Bernard Pidoux <bpidoux@free.fr>
Cc: Francois Romieu <romieu@fr.zoreil.com>,
	Linux Netdev List <netdev@vger.kernel.org>,
	Jarek Poplawski <jarkao2@o2.pl>
Subject: Re: [AX25] kernel panic
Date: Wed, 26 Mar 2008 19:35:38 +0100	[thread overview]
Message-ID: <20080326183538.GA14266@ami.dom.local> (raw)
In-Reply-To: <47E8FCE2.6000308@free.fr>

On Tue, Mar 25, 2008 at 02:23:46PM +0100, Bernard Pidoux wrote:
...
> I am prepared for the next step you probably want to explore.
...

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.)

Thanks,
Jarek P.

(debugging patch #3)
---

diff -Nurp 2.6.24.3-with2/include/net/sock.h 2.6.24.3-with3/include/net/sock.h
--- 2.6.24.3-with2/include/net/sock.h	2008-03-24 21:14:43.000000000 +0100
+++ 2.6.24.3-with3/include/net/sock.h	2008-03-26 19:10:33.000000000 +0100
@@ -1414,4 +1414,20 @@ 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;
+}
+
 #endif	/* _SOCK_H */
diff -Nurp 2.6.24.3-with2/net/ax25/af_ax25.c 2.6.24.3-with3/net/ax25/af_ax25.c
--- 2.6.24.3-with2/net/ax25/af_ax25.c	2008-03-23 00:53:51.000000000 +0100
+++ 2.6.24.3-with3/net/ax25/af_ax25.c	2008-03-26 18:52:54.000000000 +0100
@@ -952,6 +952,8 @@ static int ax25_release(struct socket *s
 
 	sock_hold(sk);
 	sock_orphan(sk);
+	if (net_ratelimit())
+		printk(KERN_INFO "AX25- %s, %d, %p, %p\n", __FUNCTION__, __LINE__, sk, sock);
 	lock_sock(sk);
 	ax25 = ax25_sk(sk);
 
@@ -1372,12 +1374,16 @@ static int ax25_accept(struct socket *so
 	newsk		 = skb->sk;
 	newsk->sk_socket = newsock;
 	newsk->sk_sleep	 = &newsock->wait;
+	newsk->sk_ax25_debug = 2;
 
 	/* Now attach up the new socket */
 	kfree_skb(skb);
 	sk->sk_ack_backlog--;
 	newsock->sk    = newsk;
 	newsock->state = SS_CONNECTED;
+	if (net_ratelimit())
+		printk(KERN_INFO "AX25= %s, %d, %p, %p, %p\n",
+			 __FUNCTION__, __LINE__, newsk, sock, newsock);
 
 out:
 	release_sock(sk);
diff -Nurp 2.6.24.3-with2/net/ax25/ax25_out.c 2.6.24.3-with3/net/ax25/ax25_out.c
--- 2.6.24.3-with2/net/ax25/ax25_out.c	2008-03-26 16:38:23.000000000 +0100
+++ 2.6.24.3-with3/net/ax25/ax25_out.c	2008-03-26 18:54:47.000000000 +0100
@@ -98,6 +98,7 @@ ax25_cb *ax25_send_frame(struct sk_buff 
 
 	ax25_start_heartbeat(ax25);
 
+	sock_debug_ax25(skb, ax25->sk);
 	ax25_output(ax25, paclen, skb);
 
 	return ax25;			/* We had to create it */
@@ -176,11 +177,13 @@ void ax25_output(ax25_cb *ax25, int pacl
 			}
 
 			skb_pull(skb, len);
+			sock_debug_ax25(skbn, ax25->sk);
 			skb_queue_tail(&ax25->write_queue, skbn); /* Throw it on the queue */
 		}
 
 		kfree_skb(skb);
 	} else {
+		sock_debug_ax25(skb, ax25->sk);
 		skb_queue_tail(&ax25->write_queue, skb);	  /* Throw it on the queue */
 	}
 
@@ -274,6 +277,8 @@ void ax25_kick(ax25_cb *ax25)
 	ax25->vs = start;
 
 	do {
+		sock_debug_ax25(skb, ax25->sk);
+
 		if ((skbn = skb_clone(skb, GFP_ATOMIC)) == NULL) {
 			skb_queue_head(&ax25->write_queue, skb);
 			break;
@@ -308,6 +313,8 @@ void ax25_kick(ax25_cb *ax25)
 		/*
 		 * Requeue the original data frame.
 		 */
+
+		sock_debug_ax25(skb, ax25->sk);
 		skb_queue_tail(&ax25->ack_queue, skb);
 
 	} while (!last && (skb = skb_dequeue(&ax25->write_queue)) != NULL);
diff -Nurp 2.6.24.3-with2/net/ax25/ax25_subr.c 2.6.24.3-with3/net/ax25/ax25_subr.c
--- 2.6.24.3-with2/net/ax25/ax25_subr.c	2008-01-24 23:58:37.000000000 +0100
+++ 2.6.24.3-with3/net/ax25/ax25_subr.c	2008-03-26 19:23:03.000000000 +0100
@@ -56,6 +56,7 @@ void ax25_frames_acked(ax25_cb *ax25, un
 	if (ax25->va != nr) {
 		while (skb_peek(&ax25->ack_queue) != NULL && ax25->va != nr) {
 			skb = skb_dequeue(&ax25->ack_queue);
+			sock_debug_ax25(skb, ax25->sk);
 			kfree_skb(skb);
 			ax25->va = (ax25->va + 1) % ax25->modulus;
 		}
diff -Nurp 2.6.24.3-with2/net/core/sock.c 2.6.24.3-with3/net/core/sock.c
--- 2.6.24.3-with2/net/core/sock.c	2008-03-24 21:43:46.000000000 +0100
+++ 2.6.24.3-with3/net/core/sock.c	2008-03-26 19:14:37.000000000 +0100
@@ -1520,8 +1520,10 @@ static void sock_def_write_space(struct 
 		if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) {
 			if (!sk->sk_socket || sk->sk_socket->sk != sk) {
 				if (net_ratelimit())
-					printk(KERN_INFO "sk_ax25_debug = %d, %p\n",
-						 sk->sk_ax25_debug, sk->sk_socket);
+					printk(KERN_INFO "sk_ax25_debug = %d, %d, %d, %d, %p, %p, %p\n",
+						 sk->sk_ax25_debug, sk->sk_family,
+						 (int)sk->sk_protocol, sk->sk_type, sk->sk_socket,
+						 sk->sk_socket == NULL ? NULL : sk->sk_socket->sk, sk);
 				WARN_ON_ONCE(1);
 				sk->sk_socket = NULL;
 				sk->sk_sleep = NULL;

  parent reply	other threads:[~2008-03-26 18:27 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-18 10:44 [AX25] kernel panic Bernard Pidoux F6BVP
2008-03-18 21:25 ` Francois Romieu
2008-03-19  7:36   ` Bernard Pidoux F6BVP
2008-03-19 20:57     ` Bernard Pidoux
2008-03-20  7:30       ` Jarek Poplawski
2008-03-20 22:58         ` Bernard Pidoux
2008-03-21  0:28           ` Jarek Poplawski
2008-03-21  9:52             ` Bernard Pidoux
2008-03-21 11:22               ` Jarek Poplawski
2008-03-21  9:40           ` Bernard Pidoux
2008-03-22 11:36           ` Jarek Poplawski
2008-03-23 17:00             ` Bernard Pidoux
2008-03-24 20:51               ` Jarek Poplawski
2008-03-25 13:23                 ` Bernard Pidoux
2008-03-25 20:51                   ` Jarek Poplawski
2008-03-26 18:35                   ` Jarek Poplawski [this message]
2008-03-28  8:24                     ` Bernard Pidoux
2008-03-28  8:27                     ` Bernard Pidoux
2008-03-28 12:07                     ` Jarek Poplawski
2008-03-29 12:04                       ` Bernard Pidoux
2008-03-29 12:24                         ` Jarek Poplawski
2008-03-30  8:43                           ` Bernard Pidoux
2008-03-30  9:16                             ` Jarek Poplawski
2008-03-30 17:38                               ` Bernard Pidoux
2008-03-30 18:49                                 ` Jarek Poplawski
2008-03-30  9:00                           ` Bernard Pidoux
     [not found]                           ` <47EE38BA.9090500@free.fr>
     [not found]                             ` <20080329130451.GC3407@ami.dom.local>
     [not found]                               ` <47EF6479.7030702@free.fr>
     [not found]                                 ` <20080330115958.GA4975@ami.dom.local>
2008-04-01 20:37                                   ` Bernard Pidoux
2008-04-02  6:41                                     ` [ROSE/AX25] af_rose: rose_release() fix Jarek Poplawski
2008-04-02  6:56                                       ` David Miller
2009-09-09 22:28 [AX25] kernel panic Bernard Pidoux
2009-09-11 19:21 ` Jarek Poplawski
2009-09-15 10:16   ` Bernard Pidoux
     [not found] ` <20090910142436.GB10547@linux-mips.org>
     [not found]   ` <4AA9288B.2070205@upmc.fr>
     [not found]     ` <20090911120557.GA12175@linux-mips.org>
2009-09-20  8:42       ` Bernard Pidoux
2009-09-20  9:09         ` f8arr
2009-09-20 21:02         ` Jarek Poplawski
2009-09-21  8:44           ` Bernard Pidoux
2009-09-21 20:11 Jarek Poplawski
2009-09-23 21:17 ` Bernard Pidoux F6BVP
2009-09-24  8:07   ` Jarek Poplawski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080326183538.GA14266@ami.dom.local \
    --to=jarkao2@gmail.com \
    --cc=bpidoux@free.fr \
    --cc=jarkao2@o2.pl \
    --cc=netdev@vger.kernel.org \
    --cc=romieu@fr.zoreil.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.