1. 11 7月, 2018 2 次提交
    • H
      scsi: qla2xxx: Fix kernel crash due to late workqueue allocation · d48cc67c
      himanshu.madhani@cavium.com 提交于
      This patch fixes crash for FCoE adapter. Once driver initialization is
      complete, firmware will start posting Asynchronous Event, However driver
      has not yet allocated workqueue to process and queue up work.  This delay
      of allocating workqueue results into NULL pointer access.
      
      The following stack trace is seen:
      
      [   24.577259] BUG: unable to handle kernel NULL pointer dereference at 0000000000000102
      [   24.623133] PGD 0 P4D 0
      [   24.636760] Oops: 0000 [#1] SMP NOPTI
      [   24.656942] Modules linked in: i2c_algo_bit drm_kms_helper sr_mod(+) syscopyarea sysfillrect sysimgblt cdrom fb_sys_fops ata_generic ttm pata_acpi sd_mod ahci pata_atiixp sfc(+) qla2xxx(+) libahci drm qla4xxx(+) nvme_fc hpsa mdio libiscsi qlcnic(+) nvme_fabrics scsi_transport_sas serio_raw mtd crc32c_intel libata nvme_core i2c_core scsi_transport_iscsi tg3 scsi_transport_fc bnx2 iscsi_boot_sysfs dm_multipath dm_mirror dm_region_hash dm_log dm_mod
      [   24.887449] CPU: 0 PID: 177 Comm: kworker/0:3 Not tainted 4.17.0-rc6 #1
      [   24.925119] Hardware name: HP ProLiant DL385 G7, BIOS A18 08/15/2012
      [   24.962106] Workqueue: events work_for_cpu_fn
      [   24.987098] RIP: 0010:__queue_work+0x1f/0x3a0
      [   25.011672] RSP: 0018:ffff992642ceba10 EFLAGS: 00010082
      [   25.042116] RAX: 0000000000000082 RBX: 0000000000000082 RCX: 0000000000000000
      [   25.083293] RDX: ffff8cf9abc6d7d0 RSI: 0000000000000000 RDI: 0000000000002000
      [   25.123094] RBP: 0000000000000000 R08: 0000000000025a40 R09: ffff8cf9aade2880
      [   25.164087] R10: 0000000000000000 R11: ffff992642ceb6f0 R12: ffff8cf9abc6d7d0
      [   25.202280] R13: 0000000000002000 R14: ffff8cf9abc6d7b8 R15: 0000000000002000
      [   25.242050] FS:  0000000000000000(0000) f9b5c00000(0000) knlGS:0000000000000000
      [   25.977565] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   26.010457] CR2: 0000000000000102 CR3: 000000030760a000 CR4: 00000000000406f0
      [   26.051048] Call Trace:
      [   26.063572]  ? __switch_to_asm+0x34/0x70
      [   26.086079]  queue_work_on+0x24/0x40
      [   26.107090]  qla2x00_post_work+0x81/0xb0 [qla2xxx]
      [   26.133356]  qla2x00_async_event+0x1ad/0x1a20 [qla2xxx]
      [   26.164075]  ? lock_timer_base+0x67/0x80
      [   26.186420]  ? try_to_del_timer_sync+0x4d/0x80
      [   26.212284]  ? del_timer_sync+0x35/0x40
      [   26.234080]  ? schedule_timeout+0x165/0x2f0
      [   26.259575]  qla82xx_poll+0x13e/0x180 [qla2xxx]
      [   26.285740]  qla2x00_mailbox_command+0x74b/0xf50 [qla2xxx]
      [   26.319040]  qla82xx_set_driver_version+0x13b/0x1c0 [qla2xxx]
      [   26.352108]  ? qla2x00_init_rings+0x206/0x3f0 [qla2xxx]
      [   26.381733]  qla2x00_initialize_adapter+0x35c/0x7f0 [qla2xxx]
      [   26.413240]  qla2x00_probe_one+0x1479/0x2390 [qla2xxx]
      [   26.442055]  local_pci_probe+0x3f/0xa0
      [   26.463108]  work_for_cpu_fn+0x10/0x20
      [   26.483295]  process_one_work+0x152/0x350
      [   26.505730]  worker_thread+0x1cf/0x3e0
      [   26.527090]  kthread+0xf5/0x130
      [   26.545085]  ? max_active_store+0x80/0x80
      [   26.568085]  ? kthread_bind+0x10/0x10
      [   26.589533]  ret_from_fork+0x22/0x40
      [   26.610192] Code: 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 57 41 89 ff 41 56 41 55 41 89 fd 41 54 49 89 d4 55 48 89 f5 53 48 83 ec 0 86 02 01 00 00 01 0f 85 80 02 00 00 49 c7 c6 c0 ec 01 00 41
      [   27.308540] RIP: __queue_work+0x1f/0x3a0 RSP: ffff992642ceba10
      [   27.341591] CR2: 0000000000000102
      [   27.360208] ---[ end trace 01b7b7ae2c005cf3 ]---
      
      Cc: <stable@vger.kernel.org> # v4.17+
      Fixes: 9b3e0f4d ("scsi: qla2xxx: Move work element processing out of DPC thread"
      Reported-by: NLi Wang <liwang@redhat.com>
      Tested-by: NLi Wang <liwang@redhat.com>
      Signed-off-by: NHimanshu Madhani <himanshu.madhani@cavium.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      d48cc67c
    • Q
      scsi: qla2xxx: Fix inconsistent DMA mem alloc/free · b5f3bc39
      Quinn Tran 提交于
      GPNFT command allocates 2 buffer for switch query. On completion, the same
      buffers were freed using different size, instead of using original size at
      the time of allocation.
      
      This patch saves the size of the request and response buffers and uses that
      to free them.
      
      Following stack trace can be seen when using debug kernel
      
      dump_stack+0x19/0x1b
      __warn+0xd8/0x100
      warn_slowpath_fmt+0x5f/0x80
      check_unmap+0xfb/0xa20
      debug_dma_free_coherent+0x110/0x160
      qla24xx_sp_unmap+0x131/0x1e0 [qla2xxx]
      qla24xx_async_gnnft_done+0xb6/0x550 [qla2xxx]
      qla2x00_do_work+0x1ec/0x9f0 [qla2xxx]
      
      Cc: <stable@vger.kernel.org> # v4.17+
      Fixes: 33b28357 ("scsi: qla2xxx: Fix Async GPN_FT for FCP and FC-NVMe scan")
      Reported-by: NEwan D. Milne <emilne@redhat.com>
      Signed-off-by: NQuinn Tran <quinn.tran@cavium.com>
      Signed-off-by: NHimanshu Madhani <himanshu.madhani@cavium.com>
      Signed-off-by: NHimanshu Madhani <hmadhani@redhat.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      b5f3bc39
  2. 27 6月, 2018 2 次提交
  3. 20 6月, 2018 1 次提交
  4. 19 6月, 2018 4 次提交
    • L
      scsi: scsi_debug: Fix memory leak on module unload · 52ab9768
      Luis Henriques 提交于
      Since commit 80c49563 ("scsi: scsi_debug: implement IMMED bit") there
      are long delays in F_SYNC_DELAY and F_SSU_DELAY.  This can cause a memory
      leak in schedule_resp(), which can be invoked while unloading the
      scsi_debug module: free_all_queued() had already freed all sd_dp and
      schedule_resp will alloc a new one, which will never get freed.  Here's the
      kmemleak report while running xfstests generic/350:
      
      unreferenced object 0xffff88007d752b00 (size 128):
        comm "rmmod", pid 26940, jiffies 4295816945 (age 7.588s)
        hex dump (first 32 bytes):
          00 2b 75 7d 00 88 ff ff 00 00 00 00 00 00 00 00  .+u}............
          00 00 00 00 00 00 00 00 8e 31 a2 34 5f 03 00 00  .........1.4_...
        backtrace:
          [<000000002abd83d0>] 0xffffffffa000705e
          [<000000004c063fda>] scsi_dispatch_cmd+0xc7/0x1a0
          [<000000000c119a00>] scsi_request_fn+0x251/0x550
          [<000000009de0c736>] __blk_run_queue+0x3f/0x60
          [<000000001c4453c8>] blk_execute_rq_nowait+0x98/0xd0
          [<00000000d17ec79f>] blk_execute_rq+0x3a/0x50
          [<00000000a7654b6e>] scsi_execute+0x113/0x250
          [<00000000fd78f7cd>] sd_sync_cache+0x95/0x160
          [<0000000024dacb14>] sd_shutdown+0x9b/0xd0
          [<00000000e9101710>] sd_remove+0x5f/0xb0
          [<00000000c43f0d63>] device_release_driver_internal+0x13c/0x1f0
          [<00000000e8ad57b6>] bus_remove_device+0xe9/0x160
          [<00000000713a7b8a>] device_del+0x120/0x320
          [<00000000e5db670c>] __scsi_remove_device+0x115/0x150
          [<00000000eccbef30>] scsi_forget_host+0x20/0x60
          [<00000000cd5a0738>] scsi_remove_host+0x6d/0x120
      
      Cc: stable@vger.kernel.org # v4.17+
      Signed-off-by: NLuis Henriques <lhenriques@suse.com>
      Acked-by: NDouglas Gilbert <dgilbert@interlog.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      52ab9768
    • M
      scsi: qla2xxx: Spinlock recursion in qla_target · 49d7bd36
      Mikhail Malygin 提交于
      The patch reverts changes done in qlt_schedule_sess_for_deletion() to
      avoid spinlock recursion sess->vha->work_lock should be used instead
      of ha->tgt.sess_lock, that can be locked in callers: qlt_reset() or
      qlt_handle_login()
      
      [mkp: roll in build warning reported by sfr]
      
      Fixes: 1c6cacf4 ("scsi: qla2xxx: Fixup locking for session deletion")
      Cc: <stable@vger.kernel.org> #v4.17
      Signed-off-by: NMikhail Malygin <m.malygin@yadro.com>
      Reported-by: NMikhail Malygin <m.malygin@yadro.com>
      Tested-by: NMikhail Malygin <m.malygin@yadro.com>
      Acked-by: NHimanshu Madhani <himanshu.madhani@cavium.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      49d7bd36
    • A
      scsi: ipr: Eliminate duplicate barriers · f2233a33
      Arnd Bergmann 提交于
      Driver does both wmb() and writel(). The latter already has a barrier
      on some architectures like arm64. This ends up with CPU observing two
      barriers back to back before executing the register write.
      
      Drivers should generally assume that the barrier implied by writel() is
      sufficient for ordering DMA. Remove the extraneous wmb() before it.
      
      [mkp: Squashed Arnd's and Sinan's patches]
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Reported-by: NSinan Kaya <okaya@codeaurora.org>
      Acked-by: NBrian King <brking@linux.vnet.ibm.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      f2233a33
    • B
      scsi: target: tcmu: add read length support · 6c3796d1
      bstroesser@ts.fujitsu.com 提交于
      Generally target core and TCMUser seem to work fine for tape devices and
      media changers.  But there is at least one situation where TCMUser is not
      able to support sequential access device emulation correctly.
      
      The situation is when an initiator sends a SCSI READ CDB with a length that
      is greater than the length of the tape block to read. We can distinguish
      two subcases:
      
      A) The initiator sent the READ CDB with the SILI bit being set.
      
         In this case the sequential access device has to transfer the data from
         the tape block (only the length of the tape block) and transmit a good
         status.  The current interface between TCMUser and the userspace does
         not support reduction of the read data size by the userspace program.
      
         The patch below fixes this subcase by allowing the userspace program to
         specify a reduced data size in read direction.
      
      B) The initiator sent the READ CDB with the SILI bit not being set.
      
         In this case the sequential access device has to transfer the data from
         the tape block as in A), but additionally has to transmit CHECK
         CONDITION with the ILI bit set and NO SENSE in the sensebytes. The
         information field in the sensebytes must contain the residual count.
      
         With the below patch a user space program can specify the real read data
         length and appropriate sensebytes.  TCMUser then uses the se_cmd flag
         SCF_TREAT_READ_AS_NORMAL, to force target core to transmit the real data
         size and the sensebytes.  Note: the flag SCF_TREAT_READ_AS_NORMAL is
         introduced by Lee Duncan's patch "[PATCH v4] target: transport should
         handle st FM/EOM/ILI reads" from Tue, 15 May 2018 18:25:24 -0700.
      Signed-off-by: NBodo Stroesser <bstroesser@ts.fujitsu.com>
      Acked-by: NMike Christie <mchristi@redhat.com>
      Reviewed-by: NLee Duncan <lduncan@suse.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      6c3796d1
  5. 17 6月, 2018 5 次提交
    • L
      Linux 4.18-rc1 · ce397d21
      Linus Torvalds 提交于
      ce397d21
    • L
      Merge tag 'for-linus-20180616' of git://git.kernel.dk/linux-block · 265c5596
      Linus Torvalds 提交于
      Pull block fixes from Jens Axboe:
       "A collection of fixes that should go into -rc1. This contains:
      
         - bsg_open vs bsg_unregister race fix (Anatoliy)
      
         - NVMe pull request from Christoph, with fixes for regressions in
           this window, FC connect/reconnect path code unification, and a
           trace point addition.
      
         - timeout fix (Christoph)
      
         - remove a few unused functions (Christoph)
      
         - blk-mq tag_set reinit fix (Roman)"
      
      * tag 'for-linus-20180616' of git://git.kernel.dk/linux-block:
        bsg: fix race of bsg_open and bsg_unregister
        block: remov blk_queue_invalidate_tags
        nvme-fabrics: fix and refine state checks in __nvmf_check_ready
        nvme-fabrics: handle the admin-only case properly in nvmf_check_ready
        nvme-fabrics: refactor queue ready check
        blk-mq: remove blk_mq_tagset_iter
        nvme: remove nvme_reinit_tagset
        nvme-fc: fix nulling of queue data on reconnect
        nvme-fc: remove reinit_request routine
        blk-mq: don't time out requests again that are in the timeout handler
        nvme-fc: change controllers first connect to use reconnect path
        nvme: don't rely on the changed namespace list log
        nvmet: free smart-log buffer after use
        nvme-rdma: fix error flow during mapping request data
        nvme: add bio remapping tracepoint
        nvme: fix NULL pointer dereference in nvme_init_subsystem
        blk-mq: reinit q->tag_set_list entry only after grace period
      265c5596
    • L
      Merge tag 'docs-broken-links' of git://linuxtv.org/mchehab/experimental · 5e7b9212
      Linus Torvalds 提交于
      Pull documentation fixes from Mauro Carvalho Chehab:
       "This solves a series of broken links for files under Documentation,
        and improves a script meant to detect such broken links (see
        scripts/documentation-file-ref-check).
      
        The changes on this series are:
      
         - can.rst: fix a footnote reference;
      
         - crypto_engine.rst: Fix two parsing warnings;
      
         - Fix a lot of broken references to Documentation/*;
      
         - improve the scripts/documentation-file-ref-check script, in order
           to help detecting/fixing broken references, preventing
           false-positives.
      
        After this patch series, only 33 broken references to doc files are
        detected by scripts/documentation-file-ref-check"
      
      * tag 'docs-broken-links' of git://linuxtv.org/mchehab/experimental: (26 commits)
        fix a series of Documentation/ broken file name references
        Documentation: rstFlatTable.py: fix a broken reference
        ABI: sysfs-devices-system-cpu: remove a broken reference
        devicetree: fix a series of wrong file references
        devicetree: fix name of pinctrl-bindings.txt
        devicetree: fix some bindings file names
        MAINTAINERS: fix location of DT npcm files
        MAINTAINERS: fix location of some display DT bindings
        kernel-parameters.txt: fix pointers to sound parameters
        bindings: nvmem/zii: Fix location of nvmem.txt
        docs: Fix more broken references
        scripts/documentation-file-ref-check: check tools/*/Documentation
        scripts/documentation-file-ref-check: get rid of false-positives
        scripts/documentation-file-ref-check: hint: dash or underline
        scripts/documentation-file-ref-check: add a fix logic for DT
        scripts/documentation-file-ref-check: accept more wildcards at filenames
        scripts/documentation-file-ref-check: fix help message
        media: max2175: fix location of driver's companion documentation
        media: v4l: fix broken video4linux docs locations
        media: dvb: point to the location of the old README.dvb-usb file
        ...
      5e7b9212
    • L
      Merge tag 'fsnotify_for_v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · dbb2816f
      Linus Torvalds 提交于
      Pull fsnotify updates from Jan Kara:
       "fsnotify cleanups unifying handling of different watch types.
      
        This is the shortened fsnotify series from Amir with the last five
        patches pulled out. Amir has modified those patches to not change
        struct inode but obviously it's too late for those to go into this
        merge window"
      
      * tag 'fsnotify_for_v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        fsnotify: add fsnotify_add_inode_mark() wrappers
        fanotify: generalize fanotify_should_send_event()
        fsnotify: generalize send_to_group()
        fsnotify: generalize iteration of marks by object type
        fsnotify: introduce marks iteration helpers
        fsnotify: remove redundant arguments to handle_event()
        fsnotify: use type id to identify connector object type
      dbb2816f
    • L
      Merge tag 'fbdev-v4.18' of git://github.com/bzolnier/linux · 644f2639
      Linus Torvalds 提交于
      Pull fbdev updates from Bartlomiej Zolnierkiewicz:
       "There is nothing really major here, few small fixes, some cleanups and
        dead drivers removal:
      
         - mark omapfb drivers as orphans in MAINTAINERS file (Tomi Valkeinen)
      
         - add missing module license tags to omap/omapfb driver (Arnd
           Bergmann)
      
         - add missing GPIOLIB dependendy to omap2/omapfb driver (Arnd
           Bergmann)
      
         - convert savagefb, aty128fb & radeonfb drivers to use msleep & co.
           (Jia-Ju Bai)
      
         - allow COMPILE_TEST build for viafb driver (media part was reviewed
           by media subsystem Maintainer)
      
         - remove unused MERAM support from sh_mobile_lcdcfb and shmob-drm
           drivers (drm parts were acked by shmob-drm driver Maintainer)
      
         - remove unused auo_k190xfb drivers
      
         - misc cleanups (Souptick Joarder, Wolfram Sang, Markus Elfring, Andy
           Shevchenko, Colin Ian King)"
      
      * tag 'fbdev-v4.18' of git://github.com/bzolnier/linux: (26 commits)
        fb_omap2: add gpiolib dependency
        video/omap: add module license tags
        MAINTAINERS: make omapfb orphan
        video: fbdev: pxafb: match_string() conversion fixup
        video: fbdev: nvidia: fix spelling mistake: "scaleing" -> "scaling"
        video: fbdev: fix spelling mistake: "frambuffer" -> "framebuffer"
        video: fbdev: pxafb: Convert to use match_string() helper
        video: fbdev: via: allow COMPILE_TEST build
        video: fbdev: remove unused sh_mobile_meram driver
        drm: shmobile: remove unused MERAM support
        video: fbdev: sh_mobile_lcdcfb: remove unused MERAM support
        video: fbdev: remove unused auo_k190xfb drivers
        video: omap: Improve a size determination in omapfb_do_probe()
        video: sm501fb: Improve a size determination in sm501fb_probe()
        video: fbdev-MMP: Improve a size determination in path_init()
        video: fbdev-MMP: Delete an error message for a failed memory allocation in two functions
        video: auo_k190x: Delete an error message for a failed memory allocation in auok190x_common_probe()
        video: sh_mobile_lcdcfb: Delete an error message for a failed memory allocation in two functions
        video: sh_mobile_meram: Delete an error message for a failed memory allocation in sh_mobile_meram_probe()
        video: fbdev: sh_mobile_meram: Drop SUPERH platform dependency
        ...
      644f2639
  6. 16 6月, 2018 26 次提交