1. 27 6月, 2017 1 次提交
  2. 24 5月, 2017 1 次提交
    • A
      scsi: scsi_dh_rdac: Use ctlr directly in rdac_failover_get() · 0648a07c
      Artem Savkov 提交于
      rdac_failover_get references struct rdac_controller as
      ctlr->ms_sdev->handler_data->ctlr for no apparent reason. Besides being
      inefficient this also introduces a null-pointer dereference as
      send_mode_select() sets ctlr->ms_sdev to NULL before calling
      rdac_failover_get():
      
      [   18.432550] device-mapper: multipath service-time: version 0.3.0 loaded
      [   18.436124] BUG: unable to handle kernel NULL pointer dereference at 0000000000000790
      [   18.436129] IP: send_mode_select+0xca/0x560
      [   18.436129] PGD 0
      [   18.436130] P4D 0
      [   18.436130]
      [   18.436132] Oops: 0000 [#1] SMP
      [   18.436133] Modules linked in: dm_service_time sd_mod dm_multipath amdkfd amd_iommu_v2 radeon(+) i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm qla2xxx drm serio_raw scsi_transport_fc bnx2 i2c_core dm_mirror dm_region_hash dm_log dm_mod
      [   18.436143] CPU: 4 PID: 443 Comm: kworker/u16:2 Not tainted 4.12.0-rc1.1.el7.test.x86_64 #1
      [   18.436144] Hardware name: IBM BladeCenter LS22 -[79013SG]-/Server Blade, BIOS -[L8E164AUS-1.07]- 05/25/2011
      [   18.436145] Workqueue: kmpath_rdacd send_mode_select
      [   18.436146] task: ffff880225116a40 task.stack: ffffc90002bd8000
      [   18.436148] RIP: 0010:send_mode_select+0xca/0x560
      [   18.436148] RSP: 0018:ffffc90002bdbda8 EFLAGS: 00010246
      [   18.436149] RAX: 0000000000000000 RBX: ffffc90002bdbe08 RCX: ffff88017ef04a80
      [   18.436150] RDX: ffffc90002bdbe08 RSI: ffff88017ef04a80 RDI: ffff8802248e4388
      [   18.436151] RBP: ffffc90002bdbe48 R08: 0000000000000000 R09: ffffffff81c104c0
      [   18.436151] R10: 00000000000001ff R11: 000000000000035a R12: ffffc90002bdbdd8
      [   18.436152] R13: ffff8802248e4390 R14: ffff880225152800 R15: ffff8802248e4400
      [   18.436153] FS:  0000000000000000(0000) GS:ffff880227d00000(0000) knlGS:0000000000000000
      [   18.436154] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   18.436154] CR2: 0000000000000790 CR3: 000000042535b000 CR4: 00000000000006e0
      [   18.436155] Call Trace:
      [   18.436159]  ? rdac_activate+0x14e/0x150
      [   18.436161]  ? refcount_dec_and_test+0x11/0x20
      [   18.436162]  ? kobject_put+0x1c/0x50
      [   18.436165]  ? scsi_dh_activate+0x6f/0xd0
      [   18.436168]  process_one_work+0x149/0x360
      [   18.436170]  worker_thread+0x4d/0x3c0
      [   18.436172]  kthread+0x109/0x140
      [   18.436173]  ? rescuer_thread+0x380/0x380
      [   18.436174]  ? kthread_park+0x60/0x60
      [   18.436176]  ret_from_fork+0x2c/0x40
      [   18.436177] Code: 49 c7 46 20 00 00 00 00 4c 89 ef c6 07 00 0f 1f 40 00 45 31 ed c7 45 b0 05 00 00 00 44 89 6d b4 4d 89 f5 4c 8b 75 a8 49 8b 45 20 <48> 8b b0 90 07 00 00 48 8b 56 10 8b 42 10 48 8d 7a 28 85 c0 0f
      [   18.436192] RIP: send_mode_select+0xca/0x560 RSP: ffffc90002bdbda8
      [   18.436192] CR2: 0000000000000790
      [   18.436198] ---[ end trace 40f3e4dca1ffabdd ]---
      [   18.436199] Kernel panic - not syncing: Fatal exception
      [   18.436222] Kernel Offset: disabled
      [-- MARK -- Thu May 18 11:45:00 2017]
      
      Fixes: 32782557 scsi_dh_rdac: switch to scsi_execute_req_flags()
      Cc: stable@vger.kernel.org
      Signed-off-by: NArtem Savkov <asavkov@redhat.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      0648a07c
  3. 20 3月, 2017 3 次提交
  4. 24 2月, 2017 1 次提交
  5. 23 2月, 2017 1 次提交
  6. 28 1月, 2017 3 次提交
  7. 06 12月, 2016 1 次提交
  8. 02 11月, 2016 2 次提交
  9. 28 10月, 2016 1 次提交
  10. 27 9月, 2016 1 次提交
  11. 11 5月, 2016 1 次提交
  12. 01 5月, 2016 1 次提交
  13. 16 4月, 2016 1 次提交
  14. 30 3月, 2016 1 次提交
    • B
      scsi_dh_alua: Fix a recently introduced deadlock · 38c31599
      Bart Van Assche 提交于
      While retesting the SRP initiator I ran the command "rmmod mlx4_ib"
      while I/O was in progress. That command triggers SCSI device removal
      indirectly. Avoid that this action triggers the following deadlock:
      
      =================================
      [ INFO: inconsistent lock state ]
      4.6.0-rc0-dbg+ #2 Tainted: G           O
      ---------------------------------
      inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
      multipathd/484 [HC0[0]:SC0[0]:HE1:SE1] takes:
       (&(&pg->lock)->rlock){+.?...}, at: [<ffffffffa04f50a2>] alua_bus_detach+0x52/0xa0 [scsi_dh_alua]
      {IN-SOFTIRQ-W} state was registered at:
        [<ffffffff810a64a9>] __lock_acquire+0x7e9/0x1ad0
        [<ffffffff810a7fd0>] lock_acquire+0x60/0x80
        [<ffffffff8159910e>] _raw_spin_lock_irqsave+0x3e/0x60
        [<ffffffffa04f5131>] alua_rtpg_queue+0x41/0x1d0 [scsi_dh_alua]
        [<ffffffffa04f5531>] alua_check+0xe1/0x220 [scsi_dh_alua]
        [<ffffffffa04f5709>] alua_check_sense+0x99/0xb0 [scsi_dh_alua]
        [<ffffffff813f0d01>] scsi_check_sense+0x71/0x3f0
        [<ffffffff813f2f8b>] scsi_decide_disposition+0x18b/0x1d0
        [<ffffffff813f6e52>] scsi_softirq_done+0x52/0x140
        [<ffffffff812a26f2>] blk_done_softirq+0x52/0x90
        [<ffffffff8105bc1f>] __do_softirq+0x10f/0x230
        [<ffffffff8105bec8>] irq_exit+0xa8/0xb0
        [<ffffffff8101a675>] do_IRQ+0x65/0x110
        [<ffffffff8159a2c9>] ret_from_intr+0x0/0x19
        [<ffffffff811732f1>] kmem_cache_alloc+0x151/0x190
        [<ffffffff8118e534>] create_object+0x34/0x2d0
        [<ffffffff8158eaa6>] kmemleak_alloc_percpu+0x56/0xd0
        [<ffffffff8113ab0d>] pcpu_alloc+0x38d/0x660
        [<ffffffff8113aded>] __alloc_percpu_gfp+0xd/0x10
        [<ffffffff812e56a5>] __percpu_counter_init+0x55/0xb0
        [<ffffffff812b4989>] blkg_alloc+0x79/0x230
        [<ffffffff812b6756>] blkcg_init_queue+0x26/0x1d0
        [<ffffffff81297eed>] blk_alloc_queue_node+0x27d/0x2e0
        [<ffffffffa017766c>] dm_create+0x20c/0x570 [dm_mod]
        [<ffffffffa017e356>] dev_create+0x56/0x2c0 [dm_mod]
        [<ffffffffa017dcae>] ctl_ioctl+0x26e/0x520 [dm_mod]
        [<ffffffffa017df6e>] dm_ctl_ioctl+0xe/0x20 [dm_mod]
        [<ffffffff811aa8ee>] do_vfs_ioctl+0x8e/0x660
        [<ffffffff811aaefc>] SyS_ioctl+0x3c/0x70
        [<ffffffff81599929>] entry_SYSCALL_64_fastpath+0x1c/0xac
      irq event stamp: 4290931
      hardirqs last  enabled at (4290931): [ 1662.892772]
      [<ffffffff81599341>] _raw_spin_unlock_irqrestore+0x31/0x50
      hardirqs last disabled at (4290930): [<ffffffff815990e7>] _raw_spin_lock_irqsave+0x17/0x60
      softirqs last  enabled at (4290774): [<ffffffff8105bcdb>] __do_softirq+0x1cb/0x230
      softirqs last disabled at (4289831): [<ffffffff8105bec8>] irq_exit+0xa8/0xb0
      
      other info that might help us debug this:
       Possible unsafe locking scenario:
      
             CPU0
             ----
        lock(&(&pg->lock)->rlock);
        <Interrupt>
          lock(&(&pg->lock)->rlock);
      
       *** DEADLOCK ***
      
      2 locks held by multipathd/484:
       #0:  (&bdev->bd_mutex){+.+.+.}, at: [<ffffffff811d1cc3>] __blkdev_put+0x33/0x360
       #1:  (sd_ref_mutex){+.+...}, at: [<ffffffff81400afc>] scsi_disk_put+0x1c/0x40
      
      stack backtrace:
      CPU: 6 PID: 484 Comm: multipathd Tainted: G           O    4.6.0-rc0-dbg+ #2
      Call Trace:
       [<ffffffff812bd115>] dump_stack+0x67/0x92
       [<ffffffff810a5175>] print_usage_bug+0x215/0x240
       [<ffffffff810a56ea>] mark_lock+0x54a/0x610
       [<ffffffff810a6505>] __lock_acquire+0x845/0x1ad0
       [<ffffffff810a7fd0>] lock_acquire+0x60/0x80
       [<ffffffff81598f23>] _raw_spin_lock+0x33/0x50
       [<ffffffffa04f50a2>] alua_bus_detach+0x52/0xa0 [scsi_dh_alua]
       [<ffffffff813ff6f7>] scsi_dh_release_device+0x17/0x50
       [<ffffffff813fb8da>] scsi_device_dev_release_usercontext+0x2a/0x120
       [<ffffffff810701f0>] execute_in_process_context+0x80/0x90
       [<ffffffff813fb8a7>] scsi_device_dev_release+0x17/0x20
       [<ffffffff813c8cfd>] device_release+0x2d/0x90
       [<ffffffff812bfa8a>] kobject_release+0x7a/0x190
       [<ffffffff812bf946>] kobject_put+0x26/0x50
       [<ffffffff813c8ee2>] put_device+0x12/0x20
       [<ffffffff813edc86>] scsi_device_put+0x26/0x30
       [<ffffffff81400b0d>] scsi_disk_put+0x2d/0x40
       [<ffffffff81400b68>] sd_release+0x48/0xb0
       [<ffffffff811d1f2e>] __blkdev_put+0x29e/0x360
       [<ffffffff811d24b9>] blkdev_put+0x49/0x170
       [<ffffffff811d2600>] blkdev_close+0x20/0x30
       [<ffffffff81198f48>] __fput+0xe8/0x1f0
       [<ffffffff81199089>] ____fput+0x9/0x10
       [<ffffffff81075d9e>] task_work_run+0x6e/0xa0
       [<ffffffff81001119>] exit_to_usermode_loop+0xa9/0xb0
       [<ffffffff81001590>] syscall_return_slowpath+0xb0/0xc0
       [<ffffffff815999b7>] entry_SYSCALL_64_fastpath+0xaa/0xac
      
      Fixes: cb0a168c (scsi_dh_alua: update 'access_state' field)
      Cc: Hannes Reinecke <hare@suse.de>
      Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com>
      Reviewed-by: NLaurence Oberman <loberman@redhat.com>
      Reviewed-by: NHannes Reinicke <hare@suse.de>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NEwan Milne <emilne@redhat.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      38c31599
  15. 15 3月, 2016 1 次提交
  16. 06 3月, 2016 4 次提交
  17. 24 2月, 2016 16 次提交