02 Jan, 2016

1 commit


28 Dec, 2015

4 commits

  • Linus Torvalds
     
  • Pull MIPS fixes from Ralf Baechle:

    - Fix bitrot in __get_user_unaligned()
    - EVA userspace accessor bug fixes.
    - Fix for build issues with certain toolchains.
    - Fix build error for VDSO with particular toolchain versions.
    - Fix build error due to a variable that should have been removed by an
    earlier patch

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: Fix bitrot in __get_user_unaligned()
    MIPS: Fix build error due to unused variables.
    MIPS: VDSO: Fix build error
    MIPS: CPS: drop .set mips64r2 directives
    MIPS: uaccess: Take EVA into account in [__]clear_user
    MIPS: uaccess: Take EVA into account in __copy_from_user()
    MIPS: uaccess: Fix strlen_user with EVA

    Linus Torvalds
     
  • Pull ARM SoC fixes from Olof Johansson:
    "A smallish set of fixes that we've been sitting on for a while now,
    flushing the queue here so they go in. Summary:

    A handful of fixes for OMAP, i.MX, Allwinner and Tegra:

    - A clock rate and a PHY setup fix for i.MX6Q/DL
    - A couple of fixes for the reduced serial bus (sunxi-rsb) on
    Allwinner
    - UART wakeirq fix for an OMAP4 board, timer config fixes for AM43XX.
    - Suspend fix for Tegra124 Chromebooks
    - Fix for missing implicit include that's different between
    ARM/ARM64"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: tegra: Fix suspend hang on Tegra124 Chromebooks
    bus: sunxi-rsb: Fix peripheral IC mapping runtime address
    bus: sunxi-rsb: Fix primary PMIC mapping hardware address
    ARM: dts: Fix UART wakeirq for omap4 duovero parlor
    ARM: OMAP2+: AM43xx: select ARM TWD timer
    ARM: OMAP2+: am43xx: enable GENERIC_CLOCKEVENTS_BROADCAST
    fsl-ifc: add missing include on ARM64
    ARM: dts: imx6: Fix Ethernet PHY mode on Ventana boards
    ARM: dts: imx: Fix the assigned-clock mismatch issue on imx6q/dl
    bus: sunxi-rsb: unlock on error in sunxi_rsb_read()
    ARM: dts: sunxi: sun6i-a31s-primo81.dts: add touchscreen axis swapping property

    Linus Torvalds
     
  • Signed-off-by: Al Viro
    Signed-off-by: Ralf Baechle

    Al Viro
     

27 Dec, 2015

6 commits

  • Pull power management and ACPI fixes from Rafael Wysocki:
    "These fix an ACPI processor driver regression introduced during the
    4.3 cycle and a mistake in the recently added SCPI support in the
    arm_big_little cpufreq driver.

    Specifics:

    - Fix a thermal management issue introduced by an ACPI processor
    driver change made during the 4.3 development cycle that failed to
    return 0 from a function on success which triggered an error
    cleanup path every time it had been called that deleted useful data
    structures created previously (Srinivas Pandruvada).

    - Fix a variable data type issue in the arm_big_little cpufreq
    driver's SCPI support code added recently that prevents error
    handling in there from working correctly (Dan Carpenter)"

    * tag 'pm+acpi-4.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    cpufreq: scpi-cpufreq: signedness bug in scpi_get_dvfs_info()
    ACPI / processor: Fix thermal cooling device regression

    Linus Torvalds
     
  • Pull md bugfix from Neil Brown:
    "One more md fix for 4.4-rc

    Fix a regression which causes reshape to not start properly sometimes"

    * tag 'md/4.4-rc6-fix' of git://neil.brown.name/md:
    md: remove check for MD_RECOVERY_NEEDED in action_store.

    Linus Torvalds
     
  • Pull UBI bug fixes from Richard Weinberger:
    "This contains four bug fixes for UBI"

    * tag 'upstream-4.4-rc7' of git://git.infradead.org/linux-ubifs:
    mtd: ubi: don't leak e if schedule_erase() fails
    mtd: ubi: fixup error correction in do_sync_erase()
    UBI: fix use of "VID" vs. "EC" in header self-check
    UBI: fix return error code

    Linus Torvalds
     
  • Pull ftrace/recordmcount fix from Steven Rostedt:
    "Russell King was reporting lots of warnings when he compiled his
    kernel with ftrace enabled. With some investigation it was discovered
    that it was his compile setup. He was using ccache with hard links,
    which allowed recordmcount to process the same .o twice. When this
    happens, recordmcount will detect that it was already done and give a
    warning about it.

    Russell fixed this by having recordmcount detect that the object file
    has more than one hard link, and if it does, it unlinks the object
    file after it maps it and processes then. This appears to fix the
    issue.

    As you did not like the fact that recordmcount modified the file in
    place and thought that it should do the modifications in memory and
    then write it out to disk and move it over the old file to prevent
    other more subtle issues like the one above, a second patch is added
    on top of Russell's to do just that. Luckily the original code had
    write and lseek wrappers that I was able to modify to not do inplace
    writes, but simply keep track of the changes made in memory. When a
    write is made, a "update" flag is set, and at the end of processing,
    if the update is set, then it writes the file with changes out to a
    new file, and then renames it over the original one.

    The file descriptor is still passed to the write and lseek wrappers
    because removing that would cause the change to be more intrusive.
    That can be removed in a follow up cleanup patch that can wait till
    the next merge window"

    * tag 'trace-v4.4-rc4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
    ftrace/scripts: Have recordmcount copy the object file
    scripts: recordmcount: break hardlinks

    Linus Torvalds
     
  • Pull ARC fixes from Vineet Gupta:
    "Sorry for this late pull request, but these are all important fixes
    for code introduced/updated in this release which we will otherwise
    end up back porting.

    - Unwinder rework (A revert followed by better fix)
    - Build errors: MMUv2, modules with -Os
    - highmem section mismatch build splat"

    * tag 'arc-4.4-rc7-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
    ARC: dw2 unwind: Catch Dwarf SNAFUs early
    ARC: dw2 unwind: Don't bail for CIE.version != 1
    Revert "ARC: dw2 unwind: Ignore CIE version !=1 gracefully instead of bailing"
    ARC: Fix linking errors with CONFIG_MODULE + CONFIG_CC_OPTIMIZE_FOR_SIZE
    ARC: mm: fix building for MMU v2
    ARC: mm: HIGHMEM: Fix section mismatch splat

    Linus Torvalds
     
  • * acpi-processor:
    ACPI / processor: Fix thermal cooling device regression

    * pm-cpufreq:
    cpufreq: scpi-cpufreq: signedness bug in scpi_get_dvfs_info()

    Rafael J. Wysocki
     

26 Dec, 2015

2 commits

  • Pull parisc system call restart fix from Helge Deller:
    "The architectural design of parisc always uses two instructions to
    call kernel syscalls (delayed branch feature). This means that the
    instruction following the branch (located in the delay slot of the
    branch instruction) is executed before control passes to the branch
    destination.

    Depending on which assembler instruction and how it is used in
    usersapce in the delay slot, this sometimes made restarted syscalls
    like futex() and poll() failing with -ENOSYS"

    * 'parisc-4.4-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: Fix syscall restarts

    Linus Torvalds
     
  • Pull sparc fixes from David Miller:

    1) Finally make perf stack backtraces stable on sparc, several problems
    (mostly due to the context in which the user copies from the stack
    are done) contributed to this.

    From Rob Gardner.

    2) Export ADI capability if the cpu supports it.

    3) Hook up userfaultfd system call.

    4) When faults happen during user copies we really have to clean up and
    restore the FPU state fully. Also from Rob Gardner

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    tty/serial: Skip 'NULL' char after console break when sysrq enabled
    sparc64: fix FP corruption in user copy functions
    sparc64: Perf should save/restore fault info
    sparc64: Ensure perf can access user stacks
    sparc64: Don't set %pil in rtrap_nmi too early
    sparc64: Add ADI capability to cpu capabilities
    tty: serial: constify sunhv_ops structs
    sparc: Hook up userfaultfd system call

    Linus Torvalds
     

25 Dec, 2015

7 commits

  • When sysrq is triggered from console, serial driver for SUN hypervisor
    console receives a console break and enables the sysrq. It expects a valid
    sysrq char following with break. Meanwhile if driver receives 'NULL'
    ASCII char then it disables sysrq and sysrq handler will never be invoked.

    This fix skips calling uart sysrq handler when 'NULL' is received while
    sysrq is enabled.

    Signed-off-by: Vijay Kumar
    Acked-by: Karl Volz
    Signed-off-by: David S. Miller

    Vijay Kumar
     
  • Short story: Exception handlers used by some copy_to_user() and
    copy_from_user() functions do not diligently clean up floating point
    register usage, and this can result in a user process seeing invalid
    values in floating point registers. This sometimes makes the process
    fail.

    Long story: Several cpu-specific (NG4, NG2, U1, U3) memcpy functions
    use floating point registers and VIS alignaddr/faligndata to
    accelerate data copying when source and dest addresses don't align
    well. Linux uses a lazy scheme for saving floating point registers; It
    is not done upon entering the kernel since it's a very expensive
    operation. Rather, it is done only when needed. If the kernel ends up
    not using FP regs during the course of some trap or system call, then
    it can return to user space without saving or restoring them.

    The various memcpy functions begin their FP code with VISEntry (or a
    variation thereof), which saves the FP regs. They conclude their FP
    code with VISExit (or a variation) which essentially marks the FP regs
    "clean", ie, they contain no unsaved values. fprs.FPRS_FEF is turned
    off so that a lazy restore will be triggered when/if the user process
    accesses floating point regs again.

    The bug is that the user copy variants of memcpy, copy_from_user() and
    copy_to_user(), employ an exception handling mechanism to detect faults
    when accessing user space addresses, and when this handler is invoked,
    an immediate return from the function is forced, and VISExit is not
    executed, thus leaving the fprs register in an indeterminate state,
    but often with fprs.FPRS_FEF set and one or more dirty bits. This
    results in a return to user space with invalid values in the FP regs,
    and since fprs.FPRS_FEF is on, no lazy restore occurs.

    This bug affects copy_to_user() and copy_from_user() for NG4, NG2,
    U3, and U1. All are fixed by using a new exception handler for those
    loads and stores that are done during the time between VISEnter and
    VISExit.

    n.b. In NG4memcpy, the problematic code can be triggered by a copy
    size greater than 128 bytes and an unaligned source address. This bug
    is known to be the cause of random user process memory corruptions
    while perf is running with the callgraph option (ie, perf record -g).
    This occurs because perf uses copy_from_user() to read user stacks,
    and may fault when it follows a stack frame pointer off to an
    invalid page. Validation checks on the stack address just obscure
    the underlying problem.

    Signed-off-by: Rob Gardner
    Signed-off-by: Dave Aldridge
    Signed-off-by: David S. Miller

    Rob Gardner
     
  • There have been several reports of random processes being killed with
    a bus error or segfault during userspace stack walking in perf. One
    of the root causes of this problem is an asynchronous modification to
    thread_info fault_address and fault_code, which stems from a perf
    counter interrupt arriving during kernel processing of a "benign"
    fault, such as a TSB miss. Since perf_callchain_user() invokes
    copy_from_user() to read user stacks, a fault is not only possible,
    but probable. Validity checks on the stack address merely cover up the
    problem and reduce its frequency.

    The solution here is to save and restore fault_address and fault_code
    in perf_callchain_user() so that the benign fault handler is not
    disturbed by a perf interrupt.

    Signed-off-by: Rob Gardner
    Signed-off-by: Dave Aldridge
    Signed-off-by: David S. Miller

    Rob Gardner
     
  • When an interrupt (such as a perf counter interrupt) is delivered
    while executing in user space, the trap entry code puts ASI_AIUS in
    %asi so that copy_from_user() and copy_to_user() will access the
    correct memory. But if a perf counter interrupt is delivered while the
    cpu is already executing in kernel space, then the trap entry code
    will put ASI_P in %asi, and this will prevent copy_from_user() from
    reading any useful stack data in either of the perf_callchain_user_X
    functions, and thus no user callgraph data will be collected for this
    sample period. An additional problem is that a fault is guaranteed
    to occur, and though it will be silently covered up, it wastes time
    and could perturb state.

    In perf_callchain_user(), we ensure that %asi contains ASI_AIUS
    because we know for a fact that the subsequent calls to
    copy_from_user() are intended to read the user's stack.

    [ Use get_fs()/set_fs() -DaveM ]

    Signed-off-by: Rob Gardner
    Signed-off-by: Dave Aldridge
    Signed-off-by: David S. Miller

    Rob Gardner
     
  • Commit 28a1f53 delays setting %pil to avoid potential
    hardirq stack overflow in the common rtrap_irq path.
    Setting %pil also needs to be delayed in the rtrap_nmi
    path for the same reason.

    Signed-off-by: Rob Gardner
    Signed-off-by: Dave Aldridge
    Signed-off-by: David S. Miller

    Rob Gardner
     
  • Add ADI (Application Data Integrity) capability to cpu capabilities list.
    ADI capability allows virtual addresses to be encoded with a tag in
    bits 63-60. This tag serves as an access control key for the regions
    of virtual address with ADI enabled and a key set on them. Hypervisor
    encodes this capability as "adp" in "hwcap-list" property in machine
    description.

    Signed-off-by: Khalid Aziz
    Signed-off-by: David S. Miller

    Khalid Aziz
     
  • Constifies sunhv_ops structures in tty's serial
    driver since they are not modified after their
    initialization.

    Detected and found using Coccinelle.

    Suggested-by: Julia Lawall
    Signed-off-by: Aya Mahfouz
    Signed-off-by: David S. Miller

    Aya Mahfouz
     

24 Dec, 2015

5 commits

  • The "domain" variable needs to be signed for the error handling to work.

    Fixes: 8def31034d03 (cpufreq: arm_big_little: add SCPI interface driver)
    Signed-off-by: Dan Carpenter
    Acked-by: Viresh Kumar
    Acked-by: Sudeep Holla
    Signed-off-by: Rafael J. Wysocki

    Dan Carpenter
     
  • After hooking up system call, userfaultfd selftest was successful for
    both 32 and 64 bit version of test.

    Signed-off-by: Mike Kravetz
    Signed-off-by: David S. Miller

    Mike Kravetz
     
  • Pull sound fixes from Takashi Iwai:
    "This shouldn't be a nightmare before Christmas: just a handful small
    device-specific fixes for various ASoC and HD-audio drivers. Most of
    them are stable fixes"

    * tag 'sound-4.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda/realtek - Fix silent headphone output on MacPro 4,1 (v2)
    ASoC: fsl_sai: fix no frame clk in master mode
    ALSA: hda - Set SKL+ hda controller power at freeze() and thaw()
    ASoC: sgtl5000: fix VAG power up timing
    ASoC: rockchip: spdif: Set transmit data level to 16 samples
    ASoC: wm8974: set cache type for regmap
    ASoC: es8328: Fix shifts for mixer switches
    ASoC: davinci-mcasp: Fix XDATA check in mcasp_start_tx
    ASoC: es8328: Fix deemphasis values

    Linus Torvalds
     
  • Pull i915 drm fixes from Jani Nikula:
    "Here's a batch of i915 fixes all around. It may be slightly bigger
    than one would hope for at this stage, but they've all been through
    testing in our -next before being picked up for v4.4. Also, I missed
    Dave's fixes pull earlier today just because I wanted an extra testing
    round on this. So I'm fairly confident.

    Wishing you all the things it is customary to wish this time of the
    year"

    * tag 'drm-intel-fixes-2015-12-23' of git://anongit.freedesktop.org/drm-intel:
    drm/i915: Correct max delay for HDMI hotplug live status checking
    drm/i915: mdelay(10) considered harmful
    drm/i915: Kill intel_crtc->cursor_bo
    drm/i915: Workaround CHV pipe C cursor fail
    drm/i915: Only spin whilst waiting on the current request
    drm/i915: Limit the busy wait on requests to 5us not 10ms!
    drm/i915: Break busywaiting for requests on pending signals
    drm/i915: Disable primary plane if we fail to reconstruct BIOS fb (v2)
    drm/i915: Set the map-and-fenceable flag for preallocated objects
    drm/i915: Drop the broken cursor base==0 special casing

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Not much happening, should have dequeued this lot earlier.

    One amdgpu, one nouveau and one exynos fix"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/exynos: atomic check only enabled crtc states
    drm/nouveau/bios/fan: hardcode the fan mode to linear
    drm/amdgpu: fix user fence handling

    Linus Torvalds
     

23 Dec, 2015

15 commits

  • …roonie/sound into for-linus

    ASoC: Fixes for v4.4

    A collection of small driver specific fixes here, nothing that'll affect
    users who don't have the devices concerned. At least the wm8974 bug
    indicates that there's not too many users of some of these devices.

    Takashi Iwai
     
  • …fsl-sai', 'asoc/fix/rockchip', 'asoc/fix/sgtl5000' and 'asoc/fix/wm8974' into asoc-linus

    Mark Brown
     
  • Pull block layer fixes from Jens Axboe:
    "Three small fixes for 4.4 final. Specifically:

    - The segment issue fix from Junichi, where the old IO path does a
    bio limit split before potentially bouncing the pages. We need to
    do that in the right order, to ensure that limitations are met.

    - A NVMe surprise removal IO hang fix from Keith.

    - A use-after-free in null_blk, introduced by a previous patch in
    this series. From Mike Krinkin"

    * 'for-linus' of git://git.kernel.dk/linux-block:
    null_blk: fix use-after-free error
    block: ensure to split after potentially bouncing a bio
    NVMe: IO ending fixes on surprise removal

    Linus Torvalds
     
  • Pull nfsd fix from Bruce Fields:
    "Just one fix for a NFSv4 callback bug introduced in 4.4"

    * tag 'nfsd-4.4-1' of git://linux-nfs.org/~bfields/linux:
    nfsd: don't hold ls_mutex across a layout recall

    Linus Torvalds
     
  • Pull kvm fixes from Paolo Bonzini:

    - A series of fixes to the MTRR emulation, tested in the BZ by several
    users so they should be safe this late

    - A fix for a division by zero

    - Two very simple ARM and PPC fixes

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: x86: Reload pit counters for all channels when restoring state
    KVM: MTRR: treat memory as writeback if MTRR is disabled in guest CPUID
    KVM: MTRR: observe maxphyaddr from guest CPUID, not host
    KVM: MTRR: fix fixed MTRR segment look up
    KVM: VMX: Fix host initiated access to guest MSR_TSC_AUX
    KVM: arm/arm64: vgic: Fix kvm_vgic_map_is_active's dist check
    kvm: x86: move tracepoints outside extended quiescent state
    KVM: PPC: Book3S HV: Prohibit setting illegal transaction state in MSR

    Linus Torvalds
     
  • Pull s390 fixes from Martin Schwidefsky:
    "Two late bug fixes for kernel 4.4.

    Merry Christmas"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/dis: Fix handling of format specifiers
    s390/zcrypt: Fix AP queue handling if queue is full

    Linus Torvalds
     
  • Enabling CPUFreq support for Tegra124 Chromebooks is causing the Tegra124
    to hang when resuming from suspend.

    When CPUFreq is enabled, the CPU clock is changed from the PLLX clock to
    the DFLL clock during kernel boot. When resuming from suspend the CPU
    clock is temporarily changed back to the PLLX clock before switching back
    to the DFLL. If the DFLL is operating at a much lower frequency than the
    PLLX when we enter suspend, and so the CPU voltage rail is at a voltage
    too low for the CPUs to operate at the PLLX frequency, then the device
    will hang.

    Please note that the PLLX is used in the resume sequence to switch the CPU
    clock from the very slow 32K clock to a faster clock during early resume
    to speed up the resume sequence before the DFLL is resumed.

    Ideally, we should fix this by setting the suspend frequency so that it
    matches the PLLX frequency, however, that would be a bigger change. For
    now simply disable CPUFreq support for Tegra124 Chromebooks to avoid the
    hang when resuming from suspend.

    Fixes: 9a0baee960a7 ("ARM: tegra: Enable CPUFreq support for Tegra124
    Chromebooks")

    Signed-off-by: Jon Hunter
    Signed-off-by: Olof Johansson

    Jon Hunter
     
  • Pull virtio fix from Michael Tsirkin:
    "This includes a single fix for virtio ccw error handling"

    * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    virtio/s390: handle error values in irb

    Linus Torvalds
     
  • Fix a pointer cast typo introduced in v4.4-rc5 especially visible for
    the i386 subarchitecture where it results in a kernel crash.

    [ Also removed pointless cast as per Al Viro - Linus ]

    Fixes: 8090bfd2bb9a ("um: Fix fpstate handling")
    Signed-off-by: Mickaël Salaün
    Cc: Jeff Dike
    Acked-by: Richard Weinberger
    Signed-off-by: Linus Torvalds

    Mickaël Salaün
     
  • …/git/tmlind/linux-omap into fixes

    Few fixes for omaps to allow am437x only builds to boot properly with
    CPU_IDLE and ARM TWD timer. This is probably a common configuration setup
    for people making products with these SoCs so let's make sure it works.

    Also a wakeirq fix for duovero parlor making my life a bit easier as that
    allows me to run basic PM regression tests on it.

    It would be nice to have these in v4.4, but if it gets too late for that
    because of the holidays, it is not super critical if these get merged for
    v4.5.

    * tag 'omap-for-v4.4/fixes-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: dts: Fix UART wakeirq for omap4 duovero parlor
    ARM: OMAP2+: AM43xx: select ARM TWD timer
    ARM: OMAP2+: am43xx: enable GENERIC_CLOCKEVENTS_BROADCAST

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     
  • …wnguo/linux into fixes

    The i.MX fixes for 4.4, 3rd round:
    - Fix Ethernet PHY mode on i.MX6 Ventana boards, which can result in
    a non-functional Ethernet when Marvell phy driver rather than generic
    phy driver is selected.
    - Fix an assigned-clock configuration bug on imx6qdl-sabreauto board
    which was introduced by commit ed339363de1b ("ARM: dts:
    imx6qdl-sabreauto: Allow HDMI and LVDS to work simultaneously").

    * tag 'imx-fixes-4.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
    ARM: dts: imx6: Fix Ethernet PHY mode on Ventana boards
    ARM: dts: imx: Fix the assigned-clock mismatch issue on imx6q/dl

    Olof Johansson
     
  • 0x4e is the runtime address normally associated with perihperal ICs.
    0x45 is not a valid runtime address.

    Signed-off-by: Chen-Yu Tsai
    Signed-off-by: Olof Johansson

    Chen-Yu Tsai
     
  • The primary PMICs use 0x3a3 as their hardware address, not 0x3e3.

    Signed-off-by: Chen-Yu Tsai
    Signed-off-by: Olof Johansson

    Chen-Yu Tsai
     
  • blk_end_request_all may free request, so we need to save
    request_queue pointer before blk_end_request_all call.

    The problem was introduced in commit cf8ecc5a8455266f8d51
    ("null_blk: guarantee device restart in all irq modes")
    and causes general protection fault with slab poisoning
    enabled.

    Fixes: cf8ecc5a8455266f8d51 ("null_blk: guarantee device
    restart in all irq modes")

    Signed-off-by: Mike Krinkin
    Reviewed-by: Ming Lei
    Signed-off-by: Jens Axboe

    Mike Krinkin
     
  • blk_queue_bio() does split then bounce, which makes the segment
    counting based on pages before bouncing and could go wrong. Move
    the split to after bouncing, like we do for blk-mq, and the we
    fix the issue of having the bio count for segments be wrong.

    Fixes: 54efd50bfd87 ("block: make generic_make_request handle arbitrarily sized bios")
    Cc: stable@vger.kernel.org
    Tested-by: Artem S. Tashkinov
    Signed-off-by: Jens Axboe

    Junichi Nomura