Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S265032AbTGGPcz (ORCPT ); Mon, 7 Jul 2003 11:32:55 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S265036AbTGGPcz (ORCPT ); Mon, 7 Jul 2003 11:32:55 -0400 Received: from h-68-165-86-241.DLLATX37.covad.net ([68.165.86.241]:16181 "EHLO sol.microgate.com") by vger.kernel.org with ESMTP id S265032AbTGGPcw (ORCPT ); Mon, 7 Jul 2003 11:32:52 -0400 Message-ID: <001601c3449f$1e49d5b0$0c00a8c0@diemos> From: "Paul Fulghum" To: =?us-ascii?Q?Remi_Colinet?= , References: <3F082BBB.6000705@wanadoo.fr> Subject: Re: 2.5.74 / oops with ppp_synctty and local_bh_enable Date: Mon, 7 Jul 2003 10:47:48 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1465 Lines: 35 > I'm using the Alcatel SpeedTouch modem. It is working fine. :-) > Meanwhile, when the pppd process is killed, the following oops appears. > ... > Jul 6 15:30:04 tigre01 kernel: Badness in local_bh_enable at kernel/softirq.c:109 > Jul 6 15:30:04 tigre01 kernel: Call Trace: > Jul 6 15:30:04 tigre01 kernel: [] local_bh_enable+0x85/0xa0 > Jul 6 15:30:04 tigre01 kernel: [] ppp_sync_push+0xd3/0x280 [ppp_synctty] > Jul 6 15:30:04 tigre01 kernel: [] ppp_sync_wakeup+0x28/0x60 [ppp_synctty] > Jul 6 15:30:04 tigre01 kernel: [] do_tty_hangup+0x492/0x560 The problem is that do_tty_hangup() in tty_io.h calls the write wakeup callback with disabled interrupts. The notes in this function question the validity of disabling interrupts at that point. I'm not familiar enough with the locking issues for this function to comment. At some point ppp_synctty.c was changed to use spin_lock_bh and spin_unlock_bh in the write wakeup callback. These macros complain when called with interrupts disabled. Perhaps changing ppp_synctty.c to use spin_lock_irqsave and spin_lock_irqrestore is the best fix. Paul Fulghum, paulkf@microgate.com Microgate Corporation, www.microgate.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/