All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Eric Dumazet <edumazet@google.com>,
	syzbot <syzkaller@googlegroups.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 5.1 02/98] ax25: fix inconsistent lock state in ax25_destroy_timer
Date: Thu, 20 Jun 2019 19:56:29 +0200	[thread overview]
Message-ID: <20190620174349.532510588@linuxfoundation.org> (raw)
In-Reply-To: <20190620174349.443386789@linuxfoundation.org>

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit d4d5d8e83c9616aeef28a2869cea49cc3fb35526 ]

Before thread in process context uses bh_lock_sock()
we must disable bh.

sysbot reported :

WARNING: inconsistent lock state
5.2.0-rc3+ #32 Not tainted

inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
blkid/26581 [HC0[0]:SC1[1]:HE1:SE0] takes:
00000000e0da85ee (slock-AF_AX25){+.?.}, at: spin_lock include/linux/spinlock.h:338 [inline]
00000000e0da85ee (slock-AF_AX25){+.?.}, at: ax25_destroy_timer+0x53/0xc0 net/ax25/af_ax25.c:275
{SOFTIRQ-ON-W} state was registered at:
  lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:4303
  __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
  _raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:151
  spin_lock include/linux/spinlock.h:338 [inline]
  ax25_rt_autobind+0x3ca/0x720 net/ax25/ax25_route.c:429
  ax25_connect.cold+0x30/0xa4 net/ax25/af_ax25.c:1221
  __sys_connect+0x264/0x330 net/socket.c:1834
  __do_sys_connect net/socket.c:1845 [inline]
  __se_sys_connect net/socket.c:1842 [inline]
  __x64_sys_connect+0x73/0xb0 net/socket.c:1842
  do_syscall_64+0xfd/0x680 arch/x86/entry/common.c:301
  entry_SYSCALL_64_after_hwframe+0x49/0xbe
irq event stamp: 2272
hardirqs last  enabled at (2272): [<ffffffff810065f3>] trace_hardirqs_on_thunk+0x1a/0x1c
hardirqs last disabled at (2271): [<ffffffff8100660f>] trace_hardirqs_off_thunk+0x1a/0x1c
softirqs last  enabled at (1522): [<ffffffff87400654>] __do_softirq+0x654/0x94c kernel/softirq.c:320
softirqs last disabled at (2267): [<ffffffff81449010>] invoke_softirq kernel/softirq.c:374 [inline]
softirqs last disabled at (2267): [<ffffffff81449010>] irq_exit+0x180/0x1d0 kernel/softirq.c:414

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(slock-AF_AX25);
  <Interrupt>
    lock(slock-AF_AX25);

 *** DEADLOCK ***

1 lock held by blkid/26581:
 #0: 0000000010fd154d ((&ax25->dtimer)){+.-.}, at: lockdep_copy_map include/linux/lockdep.h:175 [inline]
 #0: 0000000010fd154d ((&ax25->dtimer)){+.-.}, at: call_timer_fn+0xe0/0x720 kernel/time/timer.c:1312

stack backtrace:
CPU: 1 PID: 26581 Comm: blkid Not tainted 5.2.0-rc3+ #32
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 <IRQ>
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x172/0x1f0 lib/dump_stack.c:113
 print_usage_bug.cold+0x393/0x4a2 kernel/locking/lockdep.c:2935
 valid_state kernel/locking/lockdep.c:2948 [inline]
 mark_lock_irq kernel/locking/lockdep.c:3138 [inline]
 mark_lock+0xd46/0x1370 kernel/locking/lockdep.c:3513
 mark_irqflags kernel/locking/lockdep.c:3391 [inline]
 __lock_acquire+0x159f/0x5490 kernel/locking/lockdep.c:3745
 lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:4303
 __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
 _raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:151
 spin_lock include/linux/spinlock.h:338 [inline]
 ax25_destroy_timer+0x53/0xc0 net/ax25/af_ax25.c:275
 call_timer_fn+0x193/0x720 kernel/time/timer.c:1322
 expire_timers kernel/time/timer.c:1366 [inline]
 __run_timers kernel/time/timer.c:1685 [inline]
 __run_timers kernel/time/timer.c:1653 [inline]
 run_timer_softirq+0x66f/0x1740 kernel/time/timer.c:1698
 __do_softirq+0x25c/0x94c kernel/softirq.c:293
 invoke_softirq kernel/softirq.c:374 [inline]
 irq_exit+0x180/0x1d0 kernel/softirq.c:414
 exiting_irq arch/x86/include/asm/apic.h:536 [inline]
 smp_apic_timer_interrupt+0x13b/0x550 arch/x86/kernel/apic/apic.c:1068
 apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:806
 </IRQ>
RIP: 0033:0x7f858d5c3232
Code: 8b 61 08 48 8b 84 24 d8 00 00 00 4c 89 44 24 28 48 8b ac 24 d0 00 00 00 4c 8b b4 24 e8 00 00 00 48 89 7c 24 68 48 89 4c 24 78 <48> 89 44 24 58 8b 84 24 e0 00 00 00 89 84 24 84 00 00 00 8b 84 24
RSP: 002b:00007ffcaf0cf5c0 EFLAGS: 00000206 ORIG_RAX: ffffffffffffff13
RAX: 00007f858d7d27a8 RBX: 00007f858d7d8820 RCX: 00007f858d3940d8
RDX: 00007ffcaf0cf798 RSI: 00000000f5e616f3 RDI: 00007f858d394fee
RBP: 0000000000000000 R08: 00007ffcaf0cf780 R09: 00007f858d7db480
R10: 0000000000000000 R11: 0000000009691a75 R12: 0000000000000005
R13: 00000000f5e616f3 R14: 0000000000000000 R15: 00007ffcaf0cf798

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/ax25/ax25_route.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/net/ax25/ax25_route.c
+++ b/net/ax25/ax25_route.c
@@ -429,9 +429,11 @@ int ax25_rt_autobind(ax25_cb *ax25, ax25
 	}
 
 	if (ax25->sk != NULL) {
+		local_bh_disable();
 		bh_lock_sock(ax25->sk);
 		sock_reset_flag(ax25->sk, SOCK_ZAPPED);
 		bh_unlock_sock(ax25->sk);
+		local_bh_enable();
 	}
 
 put:



  parent reply	other threads:[~2019-06-20 18:13 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-20 17:56 [PATCH 5.1 00/98] 5.1.13-stable review Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 01/98] netfilter: nat: fix udp checksum corruption Greg Kroah-Hartman
2019-06-20 17:56 ` Greg Kroah-Hartman [this message]
2019-06-20 17:56 ` [PATCH 5.1 03/98] be2net: Fix number of Rx queues used for flow hashing Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 04/98] hv_netvsc: Set probe mode to sync Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 05/98] ipv6: flowlabel: fl6_sock_lookup() must use atomic_inc_not_zero Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 06/98] lapb: fixed leak of control-blocks Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 07/98] neigh: fix use-after-free read in pneigh_get_next Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 08/98] net: dsa: rtl8366: Fix up VLAN filtering Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 09/98] net: openvswitch: do not free vport if register_netdevice() is failed Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 10/98] net: tls, correctly account for copied bytes with multiple sk_msgs Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 11/98] nfc: Ensure presence of required attributes in the deactivate_target handler Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 12/98] sctp: Free cookie before we memdup a new one Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 13/98] sunhv: Fix device naming inconsistency between sunhv_console and sunhv_reg Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 14/98] tipc: purge deferredq list for each grp member in tipc_group_delete Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 15/98] vsock/virtio: set SOCK_DONE on peer shutdown Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 16/98] net/mlx5: Avoid reloading already removed devices Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 17/98] vxlan: Dont assume linear buffers in error handler Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 18/98] geneve: " Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 19/98] net: mvpp2: prs: Fix parser range for VID filtering Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 20/98] net: mvpp2: prs: Use the correct helpers when removing all VID filters Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 21/98] net: dsa: microchip: Dont try to read stats for unused ports Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 22/98] net: ethtool: Allow matching on vlan DEI bit Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 23/98] net/mlx5: Update pci error handler entries and command translation Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 24/98] mlxsw: spectrum_router: Refresh nexthop neighbour when it becomes dead Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 25/98] net/mlx5e: Add ndo_set_feature for uplink representor Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 26/98] mlxsw: spectrum_flower: Fix TOS matching Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 27/98] net/mlx5e: Fix source port matching in fdb peer flow rule Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 28/98] mlxsw: spectrum_buffers: Reduce pool size on Spectrum-2 Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 29/98] net/mlx5e: Support tagged tunnel over bond Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 30/98] net: correct udp zerocopy refcnt also when zerocopy only on append Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 31/98] net/mlx5e: Avoid detaching non-existing netdev under switchdev mode Greg Kroah-Hartman
2019-06-20 17:56 ` [PATCH 5.1 32/98] iio: imu: mpu6050: Fix FIFO layout for ICM20602 Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 33/98] staging: erofs: set sb->s_root to NULL when failing from __getname() Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 34/98] Staging: vc04_services: Fix a couple error codes Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 35/98] staging: wilc1000: Fix some double unlock bugs in wilc_wlan_cleanup() Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 36/98] pinctrl: intel: Clear interrupt status in mask/unmask callback Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 37/98] netfilter: nf_tables: fix oops during rule dump Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 38/98] perf/x86/intel/ds: Fix EVENT vs. UEVENT PEBS constraints Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 39/98] netfilter: nf_queue: fix reinject verdict handling Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 40/98] netfilter: nft_fib: Fix existence check support Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 41/98] ipvs: Fix use-after-free in ip_vs_in Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 42/98] selftests: netfilter: missing error check when setting up veth interface Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 43/98] clk: ti: clkctrl: Fix clkdm_clk handling Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 44/98] powerpc/powernv: Return for invalid IMC domain Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 45/98] usb: xhci: Fix a potential null pointer dereference in xhci_debugfs_create_endpoint() Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 46/98] mISDN: make sure device name is NUL terminated Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 47/98] x86/CPU/AMD: Dont force the CPB cap when running under a hypervisor Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 48/98] perf/ring_buffer: Fix exposing a temporarily decreased data_head Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 49/98] perf/ring_buffer: Add ordering to rb->nest increment Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 50/98] perf/ring-buffer: Always use {READ,WRITE}_ONCE() for rb->user_page data Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 51/98] gpio: fix gpio-adp5588 build errors Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 52/98] net: stmmac: update rx tail pointer register to fix rx dma hang issue Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 53/98] net: stmmac: fix csr_clk cant be zero issue Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 54/98] net: stmmac: dwmac-mediatek: modify csr_clk value to fix mdio read/write fail Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 55/98] io_uring: Fix __io_uring_register() false success Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 56/98] dpaa2-eth: Fix potential spectre issue Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 57/98] dpaa2-eth: Use PTR_ERR_OR_ZERO where appropriate Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 58/98] net: tulip: de4x5: Drop redundant MODULE_DEVICE_TABLE() Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 59/98] ACPI/PCI: PM: Add missing wakeup.flags.valid checks Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 60/98] drm/etnaviv: lock MMU while dumping core Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 61/98] net: aquantia: tx clean budget logic error Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 62/98] net: aquantia: fix LRO with FCS error Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 63/98] i2c: dev: fix potential memory leak in i2cdev_ioctl_rdwr Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 64/98] ALSA: hda - Force polling mode on CNL for fixing codec communication Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 65/98] configfs: Fix use-after-free when accessing sd->s_dentry Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 66/98] perf data: Fix strncat may truncate build failure with recent gcc Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 67/98] s390/zcrypt: Fix wrong dispatching for control domain CPRBs Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 68/98] perf namespace: Protect reading threads namespace Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 69/98] perf record: Fix s390 missing module symbol and warning for non-root users Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 70/98] ia64: fix build errors by exporting paddr_to_nid() Greg Kroah-Hartman
2019-06-20 17:57   ` Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 71/98] dpaa_eth: use only online CPU portals Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 72/98] xen/pvcalls: Remove set but not used variable Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 73/98] xenbus: Avoid deadlock during suspend due to open transactions Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 74/98] dfs_cache: fix a wrong use of kfree in flush_cache_ent() Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 75/98] KVM: PPC: Book3S HV: Use new mutex to synchronize MMU setup Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 76/98] KVM: PPC: Book3S: Use new mutex to synchronize access to rtas token list Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 77/98] KVM: PPC: Book3S HV: Dont take kvm->lock around kvm_for_each_vcpu Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 78/98] ALSA: fireface: Use ULL suffixes for 64-bit constants Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 79/98] arm64: fix syscall_fn_t type Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 80/98] arm64: use the correct function type in SYSCALL_DEFINE0 Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 81/98] arm64: use the correct function type for __arm64_sys_ni_syscall Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 82/98] net: sh_eth: fix mdio access in sh_eth_close() for R-Car Gen2 and RZ/A1 SoCs Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 83/98] blk-mq: Fix memory leak in error handling Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 84/98] net: phylink: ensure consistent phy interface mode Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 85/98] net: phy: dp83867: fix speed 10 in sgmii mode Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 86/98] net: phy: dp83867: increase SGMII autoneg timer duration Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 87/98] net: phy: dp83867: Set up RGMII TX delay Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 88/98] scsi: libcxgbi: add a check for NULL pointer in cxgbi_check_route() Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 89/98] scsi: smartpqi: properly set both the DMA mask and the coherent DMA mask Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 90/98] scsi: scsi_dh_alua: Fix possible null-ptr-deref Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 91/98] scsi: libsas: delete sas port if expander discover failed Greg Kroah-Hartman
2019-06-20 17:57 ` [PATCH 5.1 92/98] mlxsw: spectrum: Prevent force of 56G Greg Kroah-Hartman
2019-06-20 17:58 ` [PATCH 5.1 93/98] ocfs2: fix error path kobject memory leak Greg Kroah-Hartman
2019-06-20 17:58 ` [PATCH 5.1 94/98] mm: mmu_gather: remove __tlb_reset_range() for force flush Greg Kroah-Hartman
2019-06-20 17:58 ` [PATCH 5.1 95/98] nvme-tcp: rename function to have nvme_tcp prefix Greg Kroah-Hartman
2019-06-20 17:58 ` [PATCH 5.1 96/98] nvme-tcp: fix possible null deref on a timed out io queue connect Greg Kroah-Hartman
2019-06-20 17:58 ` [PATCH 5.1 97/98] nvme-tcp: fix queue mapping when queue count is limited Greg Kroah-Hartman
2019-06-20 17:58 ` [PATCH 5.1 98/98] coredump: fix race condition between collapse_huge_page() and core dumping Greg Kroah-Hartman
2019-06-20 23:48 ` [PATCH 5.1 00/98] 5.1.13-stable review Jiunn Chang
2019-06-21  6:14   ` Greg Kroah-Hartman
2019-06-20 23:51 ` kernelci.org bot
2019-06-21  3:55 ` Naresh Kamboju
2019-06-21  6:14   ` Greg Kroah-Hartman
2019-06-22  0:45 ` Guenter Roeck
2019-06-22  5:43   ` Greg Kroah-Hartman

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=20190620174349.532510588@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=syzkaller@googlegroups.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.