1. 02 Mar, 2017 1 commit
  2. 07 Feb, 2017 1 commit
  3. 06 Feb, 2017 1 commit
  4. 14 Jan, 2017 1 commit
    • Peter Zijlstra's avatar
      locking/atomic, kref: Add kref_read() · 2c935bc5
      Peter Zijlstra authored
      Since we need to change the implementation, stop exposing internals.
      
      Provide kref_read() to read the current reference count; typically
      used for debug messages.
      
      Kills two anti-patterns:
      
      	atomic_read(&kref->refcount)
      	kref->refcount.counter
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      2c935bc5
  5. 25 Dec, 2016 1 commit
  6. 08 Nov, 2016 2 commits
  7. 09 Sep, 2016 2 commits
  8. 14 Jul, 2016 1 commit
  9. 13 Jul, 2016 2 commits
  10. 15 Apr, 2016 5 commits
  11. 24 Feb, 2016 2 commits
  12. 10 Nov, 2015 8 commits
  13. 27 Oct, 2015 1 commit
  14. 07 Aug, 2015 1 commit
  15. 04 Dec, 2014 2 commits
  16. 24 Nov, 2014 2 commits
  17. 20 Nov, 2014 1 commit
    • Maurizio Lombardi's avatar
      bnx2fc: do not add shared skbs to the fcoe_rx_list · 01a4cc4d
      Maurizio Lombardi authored
      In some cases, the fcoe_rx_list may contains multiple instances
      of the same skb (the so called "shared skbs").
      
      the bnx2fc_l2_rcv thread is a loop that extracts a skb from the list,
      modifies (and destroys) its content and then proceed to the next one.
      The problem is that if the skb is shared, the remaining instances will
      be corrupted.
      
      The solution is to use skb_share_check() before adding the skb to the
      fcoe_rx_list.
      
      [ 6286.808725] ------------[ cut here ]------------
      [ 6286.808729] WARNING: at include/scsi/fc_frame.h:173 bnx2fc_l2_rcv_thread+0x425/0x450 [bnx2fc]()
      [ 6286.808748] Modules linked in: bnx2x(-) mdio dm_service_time bnx2fc cnic uio fcoe libfcoe 8021q garp stp mrp libfc llc scsi_transport_fc scsi_tgt sg iTCO_wdt iTCO_vendor_support coretemp kvm_intel kvm crct10dif_pclmul crc32_pclmul crc32c_intel e1000e ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper ptp cryptd hpilo serio_raw hpwdt lpc_ich pps_core ipmi_si pcspkr mfd_core ipmi_msghandler shpchp pcc_cpufreq mperf nfsd auth_rpcgss nfs_acl lockd sunrpc dm_multipath xfs libcrc32c ata_generic pata_acpi sd_mod crc_t10dif crct10dif_common mgag200 syscopyarea sysfillrect sysimgblt i2c_algo_bit ata_piix drm_kms_helper ttm drm libata i2c_core hpsa dm_mirror dm_region_hash dm_log dm_mod [last unloaded: mdio]
      [ 6286.808750] CPU: 3 PID: 1304 Comm: bnx2fc_l2_threa Not tainted 3.10.0-121.el7.x86_64 #1
      [ 6286.808750] Hardware name: HP ProLiant DL120 G7, BIOS J01 07/01/2013
      [ 6286.808752]  0000000000000000 000000000b36e715 ffff8800deba1e00 ffffffff815ec0ba
      [ 6286.808753]  ffff8800deba1e38 ffffffff8105dee1 ffffffffa05618c0 ffff8801e4c81888
      [ 6286.808754]  ffffe8ffff663868 ffff8801f402b180 ffff8801f56bc000 ffff8800deba1e48
      [ 6286.808754] Call Trace:
      [ 6286.808759]  [<ffffffff815ec0ba>] dump_stack+0x19/0x1b
      [ 6286.808762]  [<ffffffff8105dee1>] warn_slowpath_common+0x61/0x80
      [ 6286.808763]  [<ffffffff8105e00a>] warn_slowpath_null+0x1a/0x20
      [ 6286.808765]  [<ffffffffa054f415>] bnx2fc_l2_rcv_thread+0x425/0x450 [bnx2fc]
      [ 6286.808767]  [<ffffffffa054eff0>] ? bnx2fc_disable+0x90/0x90 [bnx2fc]
      [ 6286.808769]  [<ffffffff81085aef>] kthread+0xcf/0xe0
      [ 6286.808770]  [<ffffffff81085a20>] ? kthread_create_on_node+0x140/0x140
      [ 6286.808772]  [<ffffffff815fc76c>] ret_from_fork+0x7c/0xb0
      [ 6286.808773]  [<ffffffff81085a20>] ? kthread_create_on_node+0x140/0x140
      [ 6286.808774] ---[ end trace c6cdb939184ccb4e ]---
      Signed-off-by: default avatarMaurizio Lombardi <mlombard@redhat.com>
      Acked-by: default avatarChad Dupuis <chad.dupuis@qlogic.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Cc: stable@vger.kernel.org
      01a4cc4d
  18. 12 Nov, 2014 5 commits
  19. 10 Nov, 2014 1 commit
    • Maurizio Lombardi's avatar
      bnx2fc: fix tgt spinlock locking · dc6311dd
      Maurizio Lombardi authored
      bnx2fc_queuecommand(): when allocating a new io_req, the tgt_lock
      spinlock must be locked before calling bnx2fc_cmd_alloc().
      
      The spinlock should also be kept locked until bnx2fc_post_io_req() has
      been completed.
      If not, a kernel thread may call bnx2fc_process_cq_compl() that extracts
      the newly allocated io_req from hba->cmd_mgr->cmds and destroys it while
      it is still being used by bnx2fc_post_io_req().
      
      BUG: unable to handle kernel NULL pointer dereference at 000000000000004c
      IP: [<ffffffffa03130da>] bnx2fc_init_task+0x6a/0x230 [bnx2fc]
      PGD 0
      Oops: 0000 [#1] SMP
      last sysfs file: /sys/devices/pci0000:00/0000:00:02.0/0000:04:00.3/net/eth3/type
      CPU 33
      Modules linked in: autofs4 target_core_iblock target_core_file target_core_pscsi target_core_mod configfs bnx2fc cnic uio fcoe libfcoe libfc scsi_transport_fc 8021q garp scsi_tgt stp llc cpufreq_ondemand freq_table pcc_cpufreq ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 power_meter microcode iTCO_wdt iTCO_vendor_support hpilo hpwdt sg bnx2x libcrc32c mdio serio_raw lpc_ich mfd_core shpchp ext4 jbd2 mbcache sd_mod crc_t10dif hpsa video output dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
      
      Pid: 7355, comm: bnx2fc_thread/3 Not tainted 2.6.32-431.el6.x86_64 #1 HP ProLiant BL460c Gen8
      RIP: 0010:[<ffffffffa03130da>]  [<ffffffffa03130da>] bnx2fc_init_task+0x6a/0x230 [bnx2fc]
      RSP: 0018:ffff8820b0da3b68  EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffff882003801080 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff882003801100
      RBP: ffff8820b0da3bc8 R08: ffffffff8160d4e8 R09: 0000000000000040
      R10: 0000000000000000 R11: 0000000000000000 R12: ffff88400e600e00
      R13: ffff8840108fbe40 R14: ffff88200ffe5400 R15: 0000000000000000
      FS:  0000000000000000(0000) GS:ffff8820b0da0000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
      CR2: 000000000000004c CR3: 0000002010b67000 CR4: 00000000001407e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process bnx2fc_thread/3 (pid: 7355, threadinfo ffff88401f940000, task ffff884012f5f540)
      Stack:
       ffff8820b0da3bc8 ffffffff81527303 ffff884000000020 ffff8820b0da3bd8
      <d> ffff8820b0da3b98 000000028138931a ffff88400f506078 ffff88400e600e00
      <d> ffff88200ffe5400 ffff88200ffe5590 0000000000000021 0000000000000002
      Call Trace:
       <IRQ>
       [<ffffffff81527303>] ? printk+0x41/0x46
       [<ffffffffa03169bc>] bnx2fc_post_io_req+0x11c/0x440 [bnx2fc]
       [<ffffffff812825b9>] ? cpumask_next_and+0x29/0x50
       [<ffffffff8137ffd0>] ? scsi_done+0x0/0x60
       [<ffffffffa0316df7>] bnx2fc_queuecommand+0x117/0x140 [bnx2fc]
       [<ffffffff81380245>] scsi_dispatch_cmd+0xe5/0x310
       [<ffffffff81388b9e>] scsi_request_fn+0x5ee/0x7a0
       [<ffffffff812658f1>] __blk_run_queue+0x31/0x40
       [<ffffffff81265a40>] blk_run_queue+0x30/0x50
       [<ffffffff81387da6>] scsi_run_queue+0xc6/0x270
       [<ffffffff81260f92>] ? elv_requeue_request+0x52/0xa0
       [<ffffffff813897a0>] scsi_requeue_command+0x90/0xb0
       [<ffffffff81389b84>] scsi_io_completion+0x154/0x6c0
       [<ffffffff8137ff62>] scsi_finish_command+0xc2/0x130
       [<ffffffff8138a255>] scsi_softirq_done+0x145/0x170
       [<ffffffff8126e865>] blk_done_softirq+0x85/0xa0
       [<ffffffff8107a8e1>] __do_softirq+0xc1/0x1e0
       [<ffffffff8100c30c>] ? call_softirq+0x1c/0x30
       [<ffffffff8100c30c>] call_softirq+0x1c/0x30
       <EOI>
       [<ffffffff8100fa75>] ? do_softirq+0x65/0xa0
       [<ffffffff8107a40a>] local_bh_enable_ip+0x9a/0xb0
       [<ffffffff8152a4eb>] _spin_unlock_bh+0x1b/0x20
       [<ffffffffa0313937>] bnx2fc_process_cq_compl+0x257/0x2b0 [bnx2fc]
       [<ffffffffa03114ea>] bnx2fc_percpu_io_thread+0xea/0x160 [bnx2fc]
       [<ffffffffa0311400>] ? bnx2fc_percpu_io_thread+0x0/0x160 [bnx2fc]
       [<ffffffff8109aef6>] kthread+0x96/0xa0
       [<ffffffff8100c20a>] child_rip+0xa/0x20
       [<ffffffff8109ae60>] ? kthread+0x0/0xa0
       [<ffffffff8100c200>] ? child_rip+0x0/0x20
      Code: 89 df 45 8b 7e 30 0f 85 75 01 00 00 89 d1 31 c0 c1 e9 03 83 e2 04 89 c9 f3 48 ab 74 06 c7 07 00 00 00 00 49 89 9c 24 88 01 00 00 <83> 7e 4c 01 b8 01 00 00 00 0f 84 e7 00 00 00 89 c2 0a 53 38 41
      RIP  [<ffffffffa03130da>] bnx2fc_init_task+0x6a/0x230 [bnx2fc]
       RSP <ffff8820b0da3b68>
      CR2: 000000000000004c
      Signed-off-by: default avatarMaurizio Lombardi <mlombard@redhat.com>
      Acked-by: default avatarChad Dupuis <chad.dupuis@qlogic.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      dc6311dd