14 Dec, 2020

11 commits

  • Update to deal with the upstream data structure change

    Fixes: a7ba70f178 ("dma-mapping: treat dev->bus_dma_mask as a DMA limit")

    Signed-off-by: Li Yang

    Li Yang
     
  • The calibration of the SATA PHYX1 is derived from the PHYX2.
    Add the release of the PHYX2 APB reset, and turn on the HW gated
    pipe_pclks of PHYX2 to make sure that the calibration of SATA PHYX1
    can be finished successfully.
    Adjust the APB reset of SATA, it should be released firstly.
    The EPCS configrations should be placed before the EPCS reset.

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • When imx8_sata_enable failed, the clk/regulator needs to be disabled,
    otherwise there will be kernel dump as following:

    WARNING: CPU: 1 PID: 124 at drivers/regulator/core.c:2043 _regulator_put.part.27+0x34/0x158
    Modules linked in:
    CPU: 1 PID: 124 Comm: kworker/1:11 Tainted: G W 5.4.0-rc5-03350-g718796b75472-dirty #1793
    Hardware name: Freescale i.MX8QM MEK DOM0 (DT)
    Workqueue: events deferred_probe_work_func
    pstate: 60000005 (nZCv daif -PAN -UAO)
    pc : _regulator_put.part.27+0x34/0x158
    lr : _regulator_put.part.27+0x2c/0x158
    sp : ffff80001286bb00
    x29: ffff80001286bb00 x28: 0000000000000000
    x27: 0000000000000000 x26: ffff8000100fddf0
    x25: 0000000000000000 x24: 000000000000001b
    x23: ffff80001286bbd8 x22: ffff0008ea007600
    x21: ffff0008ea0104f0 x20: ffff0008ea007e00
    x19: ffff8000120753e8 x18: 0000000000000010
    x17: 00000000eefd8a54 x16: 00000000deadbeef
    x15: ffffffffffffffff x14: ffff800011f198c8
    x13: 0000000000000000 x12: 0000000000000001
    x11: 0000000000000000 x10: 0000000000000990
    x9 : ffff80001286b870 x8 : ffff0008eb99c0f0
    x7 : ffff0008eb99b880 x6 : ffff0008eb99b7c0
    x5 : 00000000000001df x4 : 0000000000001adb
    x3 : ffff8008de089000 x2 : a4c383a3cc862400
    x1 : 0000000000000000 x0 : 0000000000000001
    Call trace:
    _regulator_put.part.27+0x34/0x158
    regulator_put+0x34/0x48
    ahci_platform_put_resources+0x64/0xd0
    release_nodes+0x1b0/0x220
    devres_release_all+0x34/0x50
    really_probe+0x1b8/0x308
    driver_probe_device+0x54/0xe8
    __device_attach_driver+0x80/0xb8
    bus_for_each_drv+0x78/0xc8
    __device_attach+0xd4/0x130
    device_initial_probe+0x10/0x18
    bus_probe_device+0x90/0x98
    deferred_probe_work_func+0x64/0x98
    process_one_work+0x1e0/0x358
    worker_thread+0x208/0x488
    kthread+0x118/0x120
    ret_from_fork+0x10/0x18

    Reviewed-by: Dong Aisheng
    Acked-by: Richard Zhu
    Signed-off-by: Peng Fan

    Peng Fan
     
  • - Refine the tx/rx impedance ratio setting.
    - Set the RxWaterMark to fix the GEN3 link unstable issue on iMX8QM.

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • Original driver expect a register node with name "sata-ecc"
    this node is of 64 bit wide.
    In ACPI such nodes can be provided with QWordMemory, but
    QWordMemory can not hold DescriptorName more than 4 characters.

    Therefore this patch changes platform property retrival based
    upon index instead of named.

    Signed-off-by: Udit Kumar

    Udit Kumar
     
  • There is a erratum on lx2160a which is: "SATA link is
    going down sometime during sata initialization"
    The workaround for it is to reset the lane. This patch
    implements this workaround.
    This erratum only exists on lx2160 Rev1, will be addressed
    on Rev2 and later.

    Signed-off-by: Peng Ma

    Peng Ma
     
  • Enable iMX8QM SATA PM support.
    Regarding to the different PCIe link, the PHYx2 APB clocks should be
    turn on and off accordingly in PM operations on iMX8QM.

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • Setup SATA its own HSIO regmap to fix the kernel dump,
    when the HSIO regmap is set as system syscon.
    /sys/kernel/debug/regmap# cat dummy-hsio@5f080000/register

    NOTE: devm_ioremap is used to get the virtual address, because that the
    devm_ioremap_resource would return -EBUSY when there is a resource
    overlap between different HSIO consumers.

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • - Add one ext_osc parameter for imx8qm ahci.
    Add one parameter to distinguish the different ref_clk
    source, internal pll or the external osc.
    NOTE: The value of the ext_osc should be aligned to the one
    of the PCIe's, since both of them share one ref_clk source.
    - Fix can't find ahb clk issue.
    The ahb clock is not mandatory required by iMX8QM SATA, fetch it only
    when there is "ahb" clock.
    - Specify the 32-bit dma limitation and the softreset for iMX8QM SATA.
    - Use the standard ahci_error_handler on iMX8QM SATA.

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • In order to do SATA compliance tests, add the bist mode
    sysfile callback to generate kinds of test patterns.
    - Add the "ahci-imx.bist=1" into kernel command line to
    register the bist mode enable callback.
    - Use "echo /sys/devices/.../ahci_bist_pattern"
    to generate the responding test pattern.
    - Use "cat /sys/devices/.../ahci_bist_pattern" to check
    the current pattern configuration.
    NOTE:
    LBP 0, LFTP 1, MFTP 2, HFTP 3.
    - Adjust the TX-DEEMP and COMINT to pass the compliance tests.

    BuildInfo:
    - SCFW 685bd659, SECO-FW 00000000, IMX-MKIMAGE 53974947, ATF 625d9ed
    - U-Boot 2017.03-01018-g6045484

    Signed-off-by: Richard Zhu
    Reviewed-by: Frank Li

    Richard Zhu
     
  • errata:
    When a read command returns less data than specified in the PRDs (for
    example, there are two PRDs for this command, but the device returns a
    number of bytes which is less than in the first PRD), the second PRD of
    this command is not read out of the PRD FIFO, causing the next command
    to use this PRD erroneously.

    workaround
    - forces sg_tablesize = 1
    - modified the sg_io function in block/scsi_ioctl.c to use a 64k buffer
    allocated with dma_alloc_coherent during the probe in ahci_imx
    - In order to fix the scsi/sata hang, when CD_ROM and HDD are
    accessed simultaneously after the workaround is applied.
    Do not go to sleep in scsi_eh_handler, when there is host failed.

    Signed-off-by: Richard Zhu

    Richard Zhu
     

31 Oct, 2020

1 commit


28 Oct, 2020

1 commit

  • ata_qc_complete_multiple() has to be called with the tags physically
    active, that is the hw tag is at bit 0. ap->qc_active has the same tag
    at bit ATA_TAG_INTERNAL instead, so call ata_qc_get_active() to fix that
    up. This is done in the vein of 8385d756e114 ("libata: Fix retrieving of
    active qcs").

    Fixes: 28361c403683 ("libata: add extra internal command")
    Tested-by: Pali Rohár
    Signed-off-by: Sascha Hauer
    Signed-off-by: Jens Axboe

    Sascha Hauer
     

26 Oct, 2020

1 commit

  • Pull more parisc updates from Helge Deller:

    - During this merge window O_NONBLOCK was changed to become 000200000,
    but we missed that the syscalls timerfd_create(), signalfd4(),
    eventfd2(), pipe2(), inotify_init1() and userfaultfd() do a strict
    bit-wise check of the flags parameter.

    To provide backward compatibility with existing userspace we
    introduce parisc specific wrappers for those syscalls which filter
    out the old O_NONBLOCK value and replaces it with the new one.

    - Prevent HIL bus driver to get stuck when keyboard or mouse isn't
    attached

    - Improve error return codes when setting rtc time

    - Minor documentation fix in pata_ns87415.c

    * 'parisc-5.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    ata: pata_ns87415.c: Document support on parisc with superio chip
    parisc: Add wrapper syscalls to fix O_NONBLOCK flag usage
    hil/parisc: Disable HIL driver when it gets stuck
    parisc: Improve error return codes when setting rtc time

    Linus Torvalds
     

24 Oct, 2020

2 commits


16 Oct, 2020

1 commit

  • Before commit 9495b7e92f716ab2 ("driver core: platform: Initialize
    dma_parms for platform devices"), the R-Car SATA device didn't have DMA
    parameters. Hence the DMA boundary mask supplied by its driver was
    silently ignored, as __scsi_init_queue() doesn't check the return value
    of dma_set_seg_boundary(), and the default value of 0xffffffff was used.

    Now the device has gained DMA parameters, the driver-supplied value is
    used, and the following warning is printed on Salvator-XS:

    DMA-API: sata_rcar ee300000.sata: mapping sg segment across boundary [start=0x00000000ffffe000] [end=0x00000000ffffefff] [boundary=0x000000001ffffffe]
    WARNING: CPU: 5 PID: 38 at kernel/dma/debug.c:1233 debug_dma_map_sg+0x298/0x300

    (the range of start/end values depend on whether IOMMU support is
    enabled or not)

    The issue here is that SATA_RCAR_DMA_BOUNDARY doesn't have bit 0 set, so
    any typical end value, which is odd, will trigger the check.

    Fix this by increasing the DMA boundary value by 1.

    This also fixes the following WRITE DMA EXT timeout issue:

    # dd if=/dev/urandom of=/mnt/de1/file1-1024M bs=1M count=1024
    ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
    ata1.00: failed command: WRITE DMA EXT
    ata1.00: cmd 35/00:00:00:e6:0c/00:0a:00:00:00/e0 tag 0 dma 1310720 out
    res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
    ata1.00: status: { DRDY }

    as seen by Shimoda-san since commit 429120f3df2dba2b ("block: fix
    splitting segments on boundary masks").

    Fixes: 8bfbeed58665dbbf ("sata_rcar: correct 'sata_rcar_sht'")
    Fixes: 9495b7e92f716ab2 ("driver core: platform: Initialize dma_parms for platform devices")
    Fixes: 429120f3df2dba2b ("block: fix splitting segments on boundary masks")
    Signed-off-by: Geert Uytterhoeven
    Tested-by: Lad Prabhakar
    Tested-by: Yoshihiro Shimoda
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Greg Kroah-Hartman
    Reviewed-by: Sergei Shtylyov
    Reviewed-by: Ulf Hansson
    Cc: stable
    Signed-off-by: Jens Axboe

    Geert Uytterhoeven
     

10 Oct, 2020

1 commit

  • Older ATF does not provide SMC call for SATA phy power on functionality and
    therefore initialization of ahci_mvebu is failing when older version of ATF
    is using. In this case phy_power_on() function returns -EOPNOTSUPP.

    This patch adds a new hflag AHCI_HFLAG_IGN_NOTSUPP_POWER_ON which cause
    that ahci_platform_enable_phys() would ignore -EOPNOTSUPP errors from
    phy_power_on() call.

    It fixes initialization of ahci_mvebu on Espressobin boards where is older
    Marvell's Arm Trusted Firmware without SMC call for SATA phy power.

    This is regression introduced in commit 8e18c8e58da64 ("arm64: dts: marvell:
    armada-3720-espressobin: declare SATA PHY property") where SATA phy was
    defined and therefore ahci_platform_enable_phys() on Espressobin started
    failing.

    Fixes: 8e18c8e58da64 ("arm64: dts: marvell: armada-3720-espressobin: declare SATA PHY property")
    Signed-off-by: Pali Rohár
    Tested-by: Tomasz Maciej Nowak
    Cc: # 5.1+: ea17a0f153af: phy: marvell: comphy: Convert internal SMCC firmware return codes to errno
    Signed-off-by: Jens Axboe

    Pali Rohár
     

03 Oct, 2020

4 commits


05 Sep, 2020

1 commit


03 Sep, 2020

1 commit

  • All three generations of Sandisk SSDs lock up hard intermittently.
    Experiments showed that disabling NCQ lowered the failure rate significantly
    and the kernel has been disabling NCQ for some models of SD7's and 8's,
    which is obviously undesirable.

    Karthik worked with Sandisk to root cause the hard lockups to trim commands
    larger than 128M. This patch implements ATA_HORKAGE_MAX_TRIM_128M which
    limits max trim size to 128M and applies it to all three generations of
    Sandisk SSDs.

    Signed-off-by: Tejun Heo
    Cc: Karthik Shivaram
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe

    Tejun Heo
     

24 Aug, 2020

1 commit

  • Replace the existing /* fall through */ comments and its variants with
    the new pseudo-keyword macro fallthrough[1]. Also, remove unnecessary
    fall-through markings when it is the case.

    [1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

    Signed-off-by: Gustavo A. R. Silva

    Gustavo A. R. Silva
     

17 Aug, 2020

1 commit


17 Jul, 2020

1 commit

  • Using uninitialized_var() is dangerous as it papers over real bugs[1]
    (or can in the future), and suppresses unrelated compiler warnings
    (e.g. "unused variable"). If the compiler thinks it is uninitialized,
    either simply initialize the variable or make compiler changes.

    In preparation for removing[2] the[3] macro[4], remove all remaining
    needless uses with the following script:

    git grep '\buninitialized_var\b' | cut -d: -f1 | sort -u | \
    xargs perl -pi -e \
    's/\buninitialized_var\(([^\)]+)\)/\1/g;
    s:\s*/\* (GCC be quiet|to make compiler happy) \*/$::g;'

    drivers/video/fbdev/riva/riva_hw.c was manually tweaked to avoid
    pathological white-space.

    No outstanding warnings were found building allmodconfig with GCC 9.3.0
    for x86_64, i386, arm64, arm, powerpc, powerpc64le, s390x, mips, sparc64,
    alpha, and m68k.

    [1] https://lore.kernel.org/lkml/20200603174714.192027-1-glider@google.com/
    [2] https://lore.kernel.org/lkml/CA+55aFw+Vbj0i=1TGqCR5vQkCzWJ0QxK6CernOU6eedsudAixw@mail.gmail.com/
    [3] https://lore.kernel.org/lkml/CA+55aFwgbgqhbp1fkxvRKEpzyR5J8n1vKT1VZdz9knmPuXhOeg@mail.gmail.com/
    [4] https://lore.kernel.org/lkml/CA+55aFz2500WfbKXAx8s67wrm9=yVJu65TpLgN_ybYNv0VEOKA@mail.gmail.com/

    Reviewed-by: Leon Romanovsky # drivers/infiniband and mlx4/mlx5
    Acked-by: Jason Gunthorpe # IB
    Acked-by: Kalle Valo # wireless drivers
    Reviewed-by: Chao Yu # erofs
    Signed-off-by: Kees Cook

    Kees Cook
     

20 Jun, 2020

1 commit


18 Jun, 2020

1 commit

  • Commit 130f4caf145c ("libata: Ensure ata_port probe has completed before
    detach") may cause system freeze during suspend.

    Using async_synchronize_full() in PM callbacks is wrong, since async
    callbacks that are already scheduled may wait for not-yet-scheduled
    callbacks, causes a circular dependency.

    Instead of using big hammer like async_synchronize_full(), use async
    cookie to make sure port probe are synced, without affecting other
    scheduled PM callbacks.

    Fixes: 130f4caf145c ("libata: Ensure ata_port probe has completed before detach")
    Suggested-by: John Garry
    Signed-off-by: Kai-Heng Feng
    Tested-by: John Garry
    BugLink: https://bugs.launchpad.net/bugs/1867983
    Signed-off-by: Jens Axboe

    Kai-Heng Feng
     

14 Jun, 2020

1 commit

  • Since commit 84af7a6194e4 ("checkpatch: kconfig: prefer 'help' over
    '---help---'"), the number of '---help---' has been gradually
    decreasing, but there are still more than 2400 instances.

    This commit finishes the conversion. While I touched the lines,
    I also fixed the indentation.

    There are a variety of indentation styles found.

    a) 4 spaces + '---help---'
    b) 7 spaces + '---help---'
    c) 8 spaces + '---help---'
    d) 1 space + 1 tab + '---help---'
    e) 1 tab + '---help---' (correct indentation)
    f) 1 tab + 1 space + '---help---'
    g) 1 tab + 2 spaces + '---help---'

    In order to convert all of them to 1 tab + 'help', I ran the
    following commend:

    $ find . -name 'Kconfig*' | xargs sed -i 's/^[[:space:]]*---help---/\thelp/'

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

05 Jun, 2020

2 commits

  • BUG: KASAN: use-after-free in ata_scsi_mode_select_xlat+0x10bd/0x10f0
    drivers/ata/libata-scsi.c:4045
    Read of size 1 at addr ffff88803b8cd003 by task syz-executor.6/12621

    CPU: 1 PID: 12621 Comm: syz-executor.6 Not tainted 4.19.95 #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    1.10.2-1ubuntu1 04/01/2014
    Call Trace:
    __dump_stack lib/dump_stack.c:77 [inline]
    dump_stack+0xac/0xee lib/dump_stack.c:118
    print_address_description+0x60/0x223 mm/kasan/report.c:253
    kasan_report_error mm/kasan/report.c:351 [inline]
    kasan_report mm/kasan/report.c:409 [inline]
    kasan_report.cold+0xae/0x2d8 mm/kasan/report.c:393
    ata_scsi_mode_select_xlat+0x10bd/0x10f0 drivers/ata/libata-scsi.c:4045
    ata_scsi_translate+0x2da/0x680 drivers/ata/libata-scsi.c:2035
    __ata_scsi_queuecmd drivers/ata/libata-scsi.c:4360 [inline]
    ata_scsi_queuecmd+0x2e4/0x790 drivers/ata/libata-scsi.c:4409
    scsi_dispatch_cmd+0x2ee/0x6c0 drivers/scsi/scsi_lib.c:1867
    scsi_queue_rq+0xfd7/0x1990 drivers/scsi/scsi_lib.c:2170
    blk_mq_dispatch_rq_list+0x1e1/0x19a0 block/blk-mq.c:1186
    blk_mq_do_dispatch_sched+0x147/0x3d0 block/blk-mq-sched.c:108
    blk_mq_sched_dispatch_requests+0x427/0x680 block/blk-mq-sched.c:204
    __blk_mq_run_hw_queue+0xbc/0x200 block/blk-mq.c:1308
    __blk_mq_delay_run_hw_queue+0x3c0/0x460 block/blk-mq.c:1376
    blk_mq_run_hw_queue+0x152/0x310 block/blk-mq.c:1413
    blk_mq_sched_insert_request+0x337/0x6c0 block/blk-mq-sched.c:397
    blk_execute_rq_nowait+0x124/0x320 block/blk-exec.c:64
    blk_execute_rq+0xc5/0x112 block/blk-exec.c:101
    sg_scsi_ioctl+0x3b0/0x6a0 block/scsi_ioctl.c:507
    sg_ioctl+0xd37/0x23f0 drivers/scsi/sg.c:1106
    vfs_ioctl fs/ioctl.c:46 [inline]
    file_ioctl fs/ioctl.c:501 [inline]
    do_vfs_ioctl+0xae6/0x1030 fs/ioctl.c:688
    ksys_ioctl+0x76/0xa0 fs/ioctl.c:705
    __do_sys_ioctl fs/ioctl.c:712 [inline]
    __se_sys_ioctl fs/ioctl.c:710 [inline]
    __x64_sys_ioctl+0x6f/0xb0 fs/ioctl.c:710
    do_syscall_64+0xa0/0x2e0 arch/x86/entry/common.c:293
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45c479
    Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89
    f7 48
    89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 3d 01 f0 ff
    ff 0f
    83 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fb0e9602c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00007fb0e96036d4 RCX: 000000000045c479
    RDX: 0000000020000040 RSI: 0000000000000001 RDI: 0000000000000003
    RBP: 000000000076bfc0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 000000000000046d R14: 00000000004c6e1a R15: 000000000076bfcc

    Allocated by task 12577:
    set_track mm/kasan/kasan.c:460 [inline]
    kasan_kmalloc mm/kasan/kasan.c:553 [inline]
    kasan_kmalloc+0xbf/0xe0 mm/kasan/kasan.c:531
    __kmalloc+0xf3/0x1e0 mm/slub.c:3749
    kmalloc include/linux/slab.h:520 [inline]
    load_elf_phdrs+0x118/0x1b0 fs/binfmt_elf.c:441
    load_elf_binary+0x2de/0x4610 fs/binfmt_elf.c:737
    search_binary_handler fs/exec.c:1654 [inline]
    search_binary_handler+0x15c/0x4e0 fs/exec.c:1632
    exec_binprm fs/exec.c:1696 [inline]
    __do_execve_file.isra.0+0xf52/0x1a90 fs/exec.c:1820
    do_execveat_common fs/exec.c:1866 [inline]
    do_execve fs/exec.c:1883 [inline]
    __do_sys_execve fs/exec.c:1964 [inline]
    __se_sys_execve fs/exec.c:1959 [inline]
    __x64_sys_execve+0x8a/0xb0 fs/exec.c:1959
    do_syscall_64+0xa0/0x2e0 arch/x86/entry/common.c:293
    entry_SYSCALL_64_after_hwframe+0x44/0xa9

    Freed by task 12577:
    set_track mm/kasan/kasan.c:460 [inline]
    __kasan_slab_free+0x129/0x170 mm/kasan/kasan.c:521
    slab_free_hook mm/slub.c:1370 [inline]
    slab_free_freelist_hook mm/slub.c:1397 [inline]
    slab_free mm/slub.c:2952 [inline]
    kfree+0x8b/0x1a0 mm/slub.c:3904
    load_elf_binary+0x1be7/0x4610 fs/binfmt_elf.c:1118
    search_binary_handler fs/exec.c:1654 [inline]
    search_binary_handler+0x15c/0x4e0 fs/exec.c:1632
    exec_binprm fs/exec.c:1696 [inline]
    __do_execve_file.isra.0+0xf52/0x1a90 fs/exec.c:1820
    do_execveat_common fs/exec.c:1866 [inline]
    do_execve fs/exec.c:1883 [inline]
    __do_sys_execve fs/exec.c:1964 [inline]
    __se_sys_execve fs/exec.c:1959 [inline]
    __x64_sys_execve+0x8a/0xb0 fs/exec.c:1959
    do_syscall_64+0xa0/0x2e0 arch/x86/entry/common.c:293
    entry_SYSCALL_64_after_hwframe+0x44/0xa9

    The buggy address belongs to the object at ffff88803b8ccf00
    which belongs to the cache kmalloc-512 of size 512
    The buggy address is located 259 bytes inside of
    512-byte region [ffff88803b8ccf00, ffff88803b8cd100)
    The buggy address belongs to the page:
    page:ffffea0000ee3300 count:1 mapcount:0 mapping:ffff88806cc03080
    index:0xffff88803b8cc780 compound_mapcount: 0
    flags: 0x100000000008100(slab|head)
    raw: 0100000000008100 ffffea0001104080 0000000200000002 ffff88806cc03080
    raw: ffff88803b8cc780 00000000800c000b 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected

    Memory state around the buggy address:
    ffff88803b8ccf00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ffff88803b8ccf80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff88803b8cd000: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ^
    ffff88803b8cd080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ffff88803b8cd100: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc

    You can refer to "https://www.lkml.org/lkml/2019/1/17/474" reproduce
    this error.

    The exception code is "bd_len = p[3];", "p" value is ffff88803b8cd000
    which belongs to the cache kmalloc-512 of size 512. The "page_address(sg_page(scsi_sglist(scmd)))"
    maybe from sg_scsi_ioctl function "buffer" which allocated by kzalloc, so "buffer"
    may not page aligned.
    This also looks completely buggy on highmem systems and really needs to use a
    kmap_atomic. --Christoph Hellwig
    To address above bugs, Paolo Bonzini advise to simpler to just make a char array
    of size CACHE_MPAGE_LEN+8+8+4-2(or just 64 to make it easy), use sg_copy_to_buffer
    to copy from the sglist into the buffer, and workthere.

    Signed-off-by: Ye Bin
    Signed-off-by: Jens Axboe

    Ye Bin
     
  • Calling pm_runtime_get_sync increments the counter even in case of
    failure, causing incorrect ref count. Call pm_runtime_put if
    pm_runtime_get_sync fails.

    Signed-off-by: Navid Emamdoost
    Signed-off-by: Jens Axboe

    Navid Emamdoost
     

03 Jun, 2020

1 commit

  • Pull block updates from Jens Axboe:
    "Core block changes that have been queued up for this release:

    - Remove dead blk-throttle and blk-wbt code (Guoqing)

    - Include pid in blktrace note traces (Jan)

    - Don't spew I/O errors on wouldblock termination (me)

    - Zone append addition (Johannes, Keith, Damien)

    - IO accounting improvements (Konstantin, Christoph)

    - blk-mq hardware map update improvements (Ming)

    - Scheduler dispatch improvement (Salman)

    - Inline block encryption support (Satya)

    - Request map fixes and improvements (Weiping)

    - blk-iocost tweaks (Tejun)

    - Fix for timeout failing with error injection (Keith)

    - Queue re-run fixes (Douglas)

    - CPU hotplug improvements (Christoph)

    - Queue entry/exit improvements (Christoph)

    - Move DMA drain handling to the few drivers that use it (Christoph)

    - Partition handling cleanups (Christoph)"

    * tag 'for-5.8/block-2020-06-01' of git://git.kernel.dk/linux-block: (127 commits)
    block: mark bio_wouldblock_error() bio with BIO_QUIET
    blk-wbt: rename __wbt_update_limits to wbt_update_limits
    blk-wbt: remove wbt_update_limits
    blk-throttle: remove tg_drain_bios
    blk-throttle: remove blk_throtl_drain
    null_blk: force complete for timeout request
    blk-mq: drain I/O when all CPUs in a hctx are offline
    blk-mq: add blk_mq_all_tag_iter
    blk-mq: open code __blk_mq_alloc_request in blk_mq_alloc_request_hctx
    blk-mq: use BLK_MQ_NO_TAG in more places
    blk-mq: rename BLK_MQ_TAG_FAIL to BLK_MQ_NO_TAG
    blk-mq: move more request initialization to blk_mq_rq_ctx_init
    blk-mq: simplify the blk_mq_get_request calling convention
    blk-mq: remove the bio argument to ->prepare_request
    nvme: force complete cancelled requests
    blk-mq: blk-mq: provide forced completion method
    block: fix a warning when blkdev.h is included for !CONFIG_BLOCK builds
    block: blk-crypto-fallback: remove redundant initialization of variable err
    block: reduce part_stat_lock() scope
    block: use __this_cpu_add() instead of access by smp_processor_id()
    ...

    Linus Torvalds
     

02 Jun, 2020

1 commit

  • Pull documentation updates from Jonathan Corbet:
    "A fair amount of stuff this time around, dominated by yet another
    massive set from Mauro toward the completion of the RST conversion. I
    *really* hope we are getting close to the end of this. Meanwhile,
    those patches reach pretty far afield to update document references
    around the tree; there should be no actual code changes there. There
    will be, alas, more of the usual trivial merge conflicts.

    Beyond that we have more translations, improvements to the sphinx
    scripting, a number of additions to the sysctl documentation, and lots
    of fixes"

    * tag 'docs-5.8' of git://git.lwn.net/linux: (130 commits)
    Documentation: fixes to the maintainer-entry-profile template
    zswap: docs/vm: Fix typo accept_threshold_percent in zswap.rst
    tracing: Fix events.rst section numbering
    docs: acpi: fix old http link and improve document format
    docs: filesystems: add info about efivars content
    Documentation: LSM: Correct the basic LSM description
    mailmap: change email for Ricardo Ribalda
    docs: sysctl/kernel: document unaligned controls
    Documentation: admin-guide: update bug-hunting.rst
    docs: sysctl/kernel: document ngroups_max
    nvdimm: fixes to maintainter-entry-profile
    Documentation/features: Correct RISC-V kprobes support entry
    Documentation/features: Refresh the arch support status files
    Revert "docs: sysctl/kernel: document ngroups_max"
    docs: move locking-specific documents to locking/
    docs: move digsig docs to the security book
    docs: move the kref doc into the core-api book
    docs: add IRQ documentation at the core-api book
    docs: debugging-via-ohci1394.txt: add it to the core-api book
    docs: fix references for ipmi.rst file
    ...

    Linus Torvalds
     

23 Apr, 2020

3 commits


21 Apr, 2020

1 commit

  • The docs toolchain doesn't recognise this pattern:

    @link->[hw_]sata_spd_limit

    As it can't really process it. So, instead, let's mark it with
    a literal block markup:

    ``link->[hw_]sata_spd_limit``

    in order to get rid of the following warning:

    ./drivers/ata/libata-core.c:5974: WARNING: Unknown target name: "hw".

    Signed-off-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/9a21444df75c46095c4b1839d2061d19c9addcff.1586881715.git.mchehab+huawei@kernel.org
    Signed-off-by: Jonathan Corbet

    Mauro Carvalho Chehab
     

17 Apr, 2020

1 commit


09 Apr, 2020

1 commit