From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Jones Subject: e100 lockdep irq lock inversion. Date: Fri, 7 Jul 2006 13:19:16 -0400 Message-ID: <20060707171916.GA16343@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: netdev@vger.kernel.org Return-path: Received: from mx1.redhat.com ([66.187.233.31]:31894 "EHLO mx1.redhat.com") by vger.kernel.org with ESMTP id S932193AbWGGRTS (ORCPT ); Fri, 7 Jul 2006 13:19:18 -0400 To: Linux Kernel Content-Disposition: inline Sender: netdev-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Another one triggered by a Fedora-development user.. e100: eth1: e100_watchdog: link up, 100Mbps, half-duplex ========================================================= [ INFO: possible irq lock inversion dependency detected ] --------------------------------------------------------- ipcalc/1671 just changed the state of lock: (&skb_queue_lock_key){-+..}, at: [] udp_ioctl+0x3b/0x6e but this lock was taken by another, hard-irq-safe lock in the past: (&ai->aux_lock){+...} and interrupts could create inverse lock ordering between them. other info that might help us debug this: no locks held by ipcalc/1671. the first lock's dependencies: -> (&skb_queue_lock_key){-+..} ops: 0 { initial-use at: [] lock_acquire+0x4b/0x6d [] _spin_lock_irqsave+0x22/0x32 [] skb_queue_tail+0x14/0x32 [] netlink_broadcast+0x1bf/0x28e [] kobject_uevent+0x345/0x3b6 [] class_device_add+0x2a7/0x3e6 [] input_register_device+0x106/0x238 [] psmouse_connect+0x162/0x20f [] serio_connect_driver+0x1e/0x2e [] serio_driver_probe+0x16/0x18 [] driver_probe_device+0x45/0x92 [] __driver_attach+0x68/0x93 [] bus_for_each_dev+0x3a/0x5f [] driver_attach+0x14/0x17 [] bus_add_driver+0x68/0x106 [] driver_register+0x9d/0xa2 [] serio_thread+0x152/0x27c [] kthread+0xc3/0xef [] kernel_thread_helper+0x5/0xb in-softirq-W at: [] lock_acquire+0x4b/0x6d [] _spin_lock_irqsave+0x22/0x32 [] skb_queue_tail+0x14/0x32 [] sock_queue_rcv_skb+0xe3/0x11f [] packet_rcv_spkt+0x120/0x136 [] netif_receive_skb+0x1d4/0x26b [] e100_poll+0x15a/0x2fc [e100] [] net_rx_action+0xa6/0x1df [] __do_softirq+0x78/0xf2 [] do_softirq+0x5a/0xbe hardirq-on-W at: [] lock_acquire+0x4b/0x6d [] _spin_lock_bh+0x1e/0x2d [] udp_ioctl+0x3b/0x6e [] inet_ioctl+0x8c/0x91 [] sock_ioctl+0x1b5/0x1d3 [] do_ioctl+0x22/0x67 [] vfs_ioctl+0x258/0x26b [] sys_ioctl+0x47/0x62 [] syscall_call+0x7/0xb } ... key at: [] skb_queue_lock_key+0x0/0x18 the second lock's dependencies: -> (&ai->aux_lock){+...} ops: 0 { initial-use at: [] lock_acquire+0x4b/0x6d [] _spin_lock_irqsave+0x22/0x32 [] mpi_start_xmit+0x79/0xdd [airo] [] dev_hard_start_xmit+0x19f/0x1fc [] __qdisc_run+0xdd/0x197 [] dev_queue_xmit+0x12a/0x222 [] packet_sendmsg_spkt+0x172/0x199 [] sock_sendmsg+0xe8/0x103 [] sys_sendto+0xbe/0xdc [] sys_socketcall+0xfb/0x186 [] syscall_call+0x7/0xb in-hardirq-W at: [] lock_acquire+0x4b/0x6d [] _spin_lock_irqsave+0x22/0x32 [] airo_interrupt+0xe31/0xffb [airo] [] handle_IRQ_event+0x20/0x4d [] __do_IRQ+0x94/0xef [] do_IRQ+0xb9/0xcd [] common_interrupt+0x25/0x2c [] cpu_idle+0xa7/0xc1 [] rest_init+0x23/0x26 [] start_kernel+0x3a1/0x3a9 [] 0xc0400210 } ... key at: [] __key.24227+0x0/0xffff6704 [airo] -> (&skb_queue_lock_key){-+..} ops: 0 { initial-use at: [] lock_acquire+0x4b/0x6d [] _spin_lock_irqsave+0x22/0x32 [] skb_queue_tail+0x14/0x32 [] netlink_broadcast+0x1bf/0x28e [] kobject_uevent+0x345/0x3b6 [] class_device_add+0x2a7/0x3e6 [] input_register_device+0x106/0x238 [] psmouse_connect+0x162/0x20f [] serio_connect_driver+0x1e/0x2e [] serio_driver_probe+0x16/0x18 [] driver_probe_device+0x45/0x92 [] __driver_attach+0x68/0x93 [] bus_for_each_dev+0x3a/0x5f [] driver_attach+0x14/0x17 [] bus_add_driver+0x68/0x106 [] driver_register+0x9d/0xa2 [] serio_thread+0x152/0x27c [] kthread+0xc3/0xef [] kernel_thread_helper+0x5/0xb in-softirq-W at: [] lock_acquire+0x4b/0x6d [] _spin_lock_irqsave+0x22/0x32 [] skb_queue_tail+0x14/0x32 [] sock_queue_rcv_skb+0xe3/0x11f [] packet_rcv_spkt+0x120/0x136 [] netif_receive_skb+0x1d4/0x26b [] e100_poll+0x15a/0x2fc [e100] [] net_rx_action+0xa6/0x1df [] __do_softirq+0x78/0xf2 [] do_softirq+0x5a/0xbe hardirq-on-W at: [] lock_acquire+0x4b/0x6d [] _spin_lock_bh+0x1e/0x2d [] udp_ioctl+0x3b/0x6e [] inet_ioctl+0x8c/0x91 [] sock_ioctl+0x1b5/0x1d3 [] do_ioctl+0x22/0x67 [] vfs_ioctl+0x258/0x26b [] sys_ioctl+0x47/0x62 [] syscall_call+0x7/0xb } ... key at: [] skb_queue_lock_key+0x0/0x18 ... acquired at: [] lock_acquire+0x4b/0x6d [] _spin_lock_irqsave+0x22/0x32 [] skb_queue_tail+0x14/0x32 [] mpi_start_xmit+0x89/0xdd [airo] [] dev_hard_start_xmit+0x19f/0x1fc [] __qdisc_run+0xdd/0x197 [] dev_queue_xmit+0x12a/0x222 [] packet_sendmsg_spkt+0x172/0x199 [] sock_sendmsg+0xe8/0x103 [] sys_sendto+0xbe/0xdc [] sys_socketcall+0xfb/0x186 [] syscall_call+0x7/0xb stack backtrace: [] show_trace_log_lvl+0x54/0xfd [] show_trace+0xd/0x10 [] dump_stack+0x19/0x1b [] print_irq_inversion_bug+0xe1/0xee [] check_usage_backwards+0x32/0x3b [] mark_lock+0x217/0x36a [] __lock_acquire+0x43e/0x98d [] lock_acquire+0x4b/0x6d [] _spin_lock_bh+0x1e/0x2d [] udp_ioctl+0x3b/0x6e [] inet_ioctl+0x8c/0x91 [] sock_ioctl+0x1b5/0x1d3 [] do_ioctl+0x22/0x67 [] vfs_ioctl+0x258/0x26b [] sys_ioctl+0x47/0x62 [] syscall_call+0x7/0xb -- http://www.codemonkey.org.uk