04 Jan, 2016

1 commit

  • Pull i915 drm fixes from Jani Nikula:
    "Two display fixes still for v4.4.

    The new year's resolution is to start using signed tags per Linus'
    request. This one is still unsigned; I want to fix this up in our
    maintainer scripts instead of doing it one-off"

    * tag 'drm-intel-fixes-2016-01-02' of git://anongit.freedesktop.org/drm-intel:
    drm/i915: increase the tries for HDMI hotplug live status checking
    drm/i915: Unbreak check_digital_port_conflicts()

    Linus Torvalds
     

01 Jan, 2016

2 commits

  • Pull PCI bugfix from Bjorn Helgaas:
    "Here's another fix for v4.4.

    This fixes 32-bit config reads for the HiSilicon driver. Obviously
    the driver is completely broken without this fix (apparently it
    actually was tested internally, but got broken somehow in the process
    of upstreaming it).

    Summary:

    HiSilicon host bridge driver
    Fix 32-bit config reads (Dongdong Liu)"

    * tag 'pci-v4.4-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: hisi: Fix hisi_pcie_cfg_read() 32-bit reads

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Prevent XFRM per-cpu counter updates for one namespace from being
    applied to another namespace. Fix from DanS treetman.

    2) Fix RCU de-reference in iwl_mvm_get_key_sta_id(), from Johannes
    Berg.

    3) Remove ethernet header assumption in nft_do_chain_netdev(), from
    Pablo Neira Ayuso.

    4) Fix cpsw PHY ident with multiple slaves and fixed-phy, from Pascal
    Speck.

    5) Fix use after free in sixpack_close and mkiss_close.

    6) Fix VXLAN fw assertion on bnx2x, from Yuval Mintz.

    7) natsemi doesn't check for DMA mapping errors, from Alexey
    Khoroshilov.

    8) Fix inverted test in ip6addrlbl_get(), from ANdrey Ryabinin.

    9) Missing initialization of needed_headroom in geneve tunnel driver,
    from Paolo Abeni.

    10) Fix conntrack template leak in openvswitch, from Joe Stringer.

    11) Mission initialization of wq->flags in sock_alloc_inode(), from
    Nicolai Stange.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (35 commits)
    sctp: sctp should release assoc when sctp_make_abort_user return NULL in sctp_close
    net, socket, socket_wq: fix missing initialization of flags
    drivers: net: cpsw: fix error return code
    openvswitch: Fix template leak in error cases.
    sctp: label accepted/peeled off sockets
    sctp: use GFP_USER for user-controlled kmalloc
    qlcnic: fix a loop exit condition better
    net: cdc_ncm: avoid changing RX/TX buffers on MTU changes
    geneve: initialize needed_headroom
    ipv6: honor ifindex in case we receive ll addresses in router advertisements
    addrconf: always initialize sysctl table data
    ipv6/addrlabel: fix ip6addrlbl_get()
    switchdev: bridge: Pass ageing time as clock_t instead of jiffies
    sh_eth: fix 16-bit descriptor field access endianness too
    veth: don’t modify ip_summed; doing so treats packets with bad checksums as good.
    net: usb: cdc_ncm: Adding Dell DW5813 LTE AT&T Mobile Broadband Card
    net: usb: cdc_ncm: Adding Dell DW5812 LTE Verizon Mobile Broadband Card
    natsemi: add checks for dma mapping errors
    rhashtable: Kill harmless RCU warning in rhashtable_walk_init
    openvswitch: correct encoding of set tunnel action attributes
    ...

    Linus Torvalds
     

31 Dec, 2015

2 commits

  • …m/linux/kernel/git/kvalo/wireless-drivers

    Kalle Valo says:

    ====================
    iwlwifi

    * don't load firmware that won't exist for 7260
    * fix RCU splat
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • Pull block fixes from Jens Axboe:
    "Make the block layer great again.

    Basically three amazing fixes in this pull request, split into 4
    patches. Believe me, they should go into 4.4. Two of them fix a
    regression, the third and last fixes an easy-to-trigger bug.

    - Fix a bad irq enable through null_blk, for queue_mode=1 and using
    timer completions. Add a block helper to restart a queue
    asynchronously, and use that from null_blk. From me.

    - Fix a performance issue in NVMe. Some devices (Intel Pxxxx) expose
    a stripe boundary, and performance suffers if we cross it. We took
    that into account for merging, but not for the newer splitting
    code. Fix from Keith.

    - Fix a kernel oops in lightnvm with multiple channels. From Matias"

    * 'for-linus' of git://git.kernel.dk/linux-block:
    lightnvm: wrong offset in bad blk lun calculation
    null_blk: use async queue restart helper
    block: add blk_start_queue_async()
    block: Split bios on chunk boundaries

    Linus Torvalds
     

30 Dec, 2015

2 commits

  • The total delay of HDMI hotplug detecting with 30ms is sometimes not
    enoughtfor HDMI live status up with specific HDMI monitors in BSW platform.

    After doing experiments for following monitors, it needs 80ms at least
    for those worst cases.

    Lenovo L246 1xwA (4 failed, necessary hot-plug delay: 58/40/60/40ms)
    Philips HH2AP (9 failed, necessary hot-plug delay: 80/50/50/60/46/40/58/58/39ms)
    BENQ ET-0035-N (6 failed, necessary hot-plug delay: 60/50/50/80/80/40ms)
    DELL U2713HM (2 failed, necessary hot-plug delay: 58/59ms)
    HP HP-LP2475w (5 failed, necessary hot-plug delay: 70/50/40/60/40ms)

    It looks like 70-80 ms is BSW platform needs in some bad cases of the
    monitors at this end (8 times delay at most). Keep less than 100ms for
    HDCP pulse HPD low (with at least 100ms) to respond a plug out.

    Reviewed-by: Cooper Chiou
    Tested-by: Gary Wang
    Cc: Gavin Hindman
    Cc: Sonika Jindal
    Cc: Shashank Sharma
    Cc: Shobhit Kumar
    Signed-off-by: Gary Wang
    Link: http://patchwork.freedesktop.org/patch/msgid/1450858295-12804-1-git-send-email-gary.c.wang@intel.com
    Tested-by: Shobhit Kumar
    Cc: drm-intel-fixes@lists.freedesktop.org
    Fixes: 237ed86c693d ("drm/i915: Check live status before reading edid")
    Signed-off-by: Daniel Vetter
    (cherry picked from commit f8d03ea0053b23de42c828d559016eabe0b91523)
    [Jani: undo the file mode change of the original commit]
    Signed-off-by: Jani Nikula

    Gary Wang
     
  • Propagate the return value of platform_get_irq on failure.

    A simplified version of the semantic match that finds the two cases where
    no error code is returned at all is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @@
    identifier ret; expression e1,e2;
    @@
    (
    if (\(ret < 0\|ret != 0\))
    { ... return ret; }
    |
    ret = 0
    )
    ... when != ret = e1
    when != &ret
    *if(...)
    {
    ... when != ret = e2
    when forall
    return ret;
    }
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: David S. Miller

    Julia Lawall
     

29 Dec, 2015

7 commits

  • dev->nr_luns reports the total number of luns available in a device
    while dev->luns_per_chnl is the number of luns per channel.

    When multiple channels are available, the offset is calculated from a
    channel and lun id into a linear array. As it multiplies with
    the total number of luns, we go out of bound when channel id > 0 and
    causes the kernel to panic when we read a protected kernel memory area.

    Signed-off-by: Matias Bjørling
    Signed-off-by: Jens Axboe

    Matias Bjørling
     
  • Pull rdma fixes from Doug Ledford:
    "Three late 4.4-rc fixes.

    The first two were very small in terms of number of lines, the third
    is more lines of change than I like this late in the cycle, but there
    are positive test results from Avagotech and from my own test setup
    with the target hardware, and given the problem was a 100% failure
    case, I sent it through.

    - A previous patch updated the mlx4 driver to use vmalloc when there
    was not enough memory to get a contiguous region large enough for
    our needs, so we need kvfree() whenever we free that item. We
    missed one place, so fix that now.

    - A previous patch added code to match incoming packets against a
    specific device, but failed to compensate for devices that have
    both InfiniBand and Ethernet ports. Fix that.

    - Under certain vlan conditions, the ocrdma driver would fail to
    bring up any vlan interfaces and would print out a circular locking
    failure. Fix that"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma:
    RDMA/be2net: Remove open and close entry points
    RDMA/ocrdma: Depend on async link events from CNA
    RDMA/ocrdma: Dispatch only port event when port state changes
    RDMA/ocrdma: Fix vlan-id assignment in qp parameters
    IB/mlx4: Replace kfree with kvfree in mlx4_ib_destroy_srq
    IB/cma: cma_match_net_dev needs to take into account port_num

    Linus Torvalds
     
  • If null_blk is run in NULL_IRQ_TIMER mode and with queue_mode NULL_Q_RQ,
    we need to restart the queue from the hrtimer interrupt. We can't
    directly invoke the request_fn from that context, so punt the queue run
    to async kblockd context.

    Tested-by: Rabin Vincent
    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Recently Dough Ledford reported a deadlock happening
    between ocrdma-load sequence and NetworkManager service
    issueing "open" on be2net interface.

    The deadlock happens when any be2net hook (e.g. open/close) is called
    in parallel to insmod ocrdma.ko.

    A. be2net is sending administrative open/close event to ocrdma holding
    device_list_mutex. It does this from ndo_open/ndo_stop hooks of be2net.
    So sequence of locks is rtnl_lock---> device_list lock

    B. When new ocrdma roce device gets registered, infiniband stack now
    takes rtnl_lock in ib_register_device() in GID initialization routines.
    So sequence of locks in this path is device_list lock ---> rtnl_lock.

    This improper locking sequence causes deadlock.

    In order to resolve the above deadlock condition, ocrdma intorduced a
    patch to stop listening to administrative open/close events generated from
    be2net driver. It now depends on link-state-change async-event generated from
    CNA. This change leaves behind dead code which used to generate administrative
    open/close events. This patch cleans-up all that dead code from be2net.

    Reported-by: Doug Ledford
    CC: Sathya Perla
    Signed-off-by: Padmanabh Ratnakar
    Signed-off-by: Selvin Xavier
    Signed-off-by: Devesh Sharma
    Signed-off-by: Doug Ledford

    Devesh Sharma
     
  • Recently Dough Ledford reported a deadlock happening
    between ocrdma-load sequence and NetworkManager service
    issuing "open" on be2net interface.

    The deadlock happens when any be2net hook (e.g. open/close) is called
    in parallel to insmod ocrdma.ko.

    A. be2net is sending administrative open/close event to ocrdma holding
    device_list_mutex. It does this from ndo_open/ndo_stop hooks of be2net.
    So sequence of locks is rtnl_lock---> device_list lock

    B. When new ocrdma roce device gets registered, infiniband stack now
    takes rtnl_lock in ib_register_device() in GID initialization routines.
    So sequence of locks in this path is device_list lock ---> rtnl_lock.

    This improper locking sequence causes deadlock.

    With this patch we stop using administrative open and close events
    injected by be2net driver. These events were used to dispatch PORT_ACTIVE
    and PORT_ERROR events to the IB-stack. This patch implements a logic
    to receive async-link-events generated from CNA whenever link-state-change
    is detected. Now on, these async-events will be used to dispatch
    PORT_ACTIVE and PORT_ERROR events to IB-stack.

    Depending on async-events from CNA removes the need to hold device-list-mutex
    and thus breaks the busy-wait scenario.

    Reported-by: Doug Ledford
    CC: Sathya Perla
    Signed-off-by: Padmanabh Ratnakar
    Signed-off-by: Selvin Xavier
    Signed-off-by: Devesh Sharma
    Signed-off-by: Doug Ledford

    Devesh Sharma
     
  • Dispatch only port event to IB stack when port state changes.
    Don't explicitly modify qps to error. Let application listen to
    port events on async event queue or let QP fail with retry-exceeded
    completion error.

    Signed-off-by: Padmanabh Ratnakar
    Signed-off-by: Devesh Sharma
    Signed-off-by: Doug Ledford

    Devesh Sharma
     
  • vlan-id is wrongly getting as 0 when PFC is enabled.
    Set vlan-id configured by user in QP parameters.
    In case vlan interface is not used, flash a warning to
    user to configure vlan and assign vlan-id as 0 in qp params.

    Fixes: dbf727de7440 ('IB/core: Use GID table in AH creation and dmac resolution')
    Cc: Matan Barak
    Signed-off-by: Devesh Sharma
    Signed-off-by: Doug Ledford

    Devesh Sharma
     

28 Dec, 2015

1 commit

  • 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
     

27 Dec, 2015

4 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
     
  • * 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

1 commit

  • 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

3 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
     
  • 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
     
  • In the original code, if we succeeded on the last iteration through the
    loop then we still returned failure.

    Fixes: 389e4e04ad2d ('qlcnic: fix a timeout loop')
    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     

24 Dec, 2015

5 commits

  • NCM buffer sizes are negotiated with the device independently of
    the network device MTU. The RX buffers are allocated by the
    usbnet framework based on the rx_urb_size value set by cdc_ncm. A
    single RX buffer can hold a number of MTU sized packets.

    The default usbnet change_mtu ndo only modifies rx_urb_size if it
    is equal to hard_mtu. And the cdc_ncm driver will set rx_urb_size
    and hard_mtu independently of each other, based on dwNtbInMaxSize
    and dwNtbOutMaxSize respectively. It was therefore assumed that
    usbnet_change_mtu() would never touch rx_urb_size. This failed to
    consider the case where dwNtbInMaxSize and dwNtbOutMaxSize happens
    to be equal.

    Fix by implementing an NCM specific change_mtu ndo, modifying the
    netdev MTU without touching the buffer size settings.

    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • Currently the needed_headroom field for the geneve device is left
    to the default value.

    This patch set it to space required for basic geneve encapsulation,
    so that we can avoid the skb head re-allocation on xmit.

    This give a 6% speedup for unsegment traffic on geneve tunnel.

    v1 -> v2:
    - add ETH_HLEN for the lower device to the needed headroom

    Signed-off-by: Paolo Abeni
    Acked-by: Hannes Frederic Sowa
    Acked-by: John W. Linville
    Signed-off-by: David S. Miller

    Paolo Abeni
     
  • 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
     
  • 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

12 commits

  • Atomic changes broke check_digital_port_conflicts(). It needs to look
    at the global situation instead of just trying to find a conflict
    within the current atomic state.

    This bug made my HSW explode spectacularly after I had split the DDI
    encoders into separate DP and HDMI encoders. With the fix, things
    seem much more solid.

    I hope holding the connection_mutex is enough protection that we can
    actually walk the connectors even if they're not part of the current
    atomic state...

    v2: Regenerate the patch so that it actually applies (Jani)

    Cc: stable@vger.kernel.org
    Cc: Ander Conselvan de Oliveira
    Fixes: 5448a00d3f06 ("drm/i915: Don't use staged config in check_digital_port_conflicts()")
    Signed-off-by: Ville Syrjälä
    Reviewed-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/1449764551-12466-1-git-send-email-ville.syrjala@linux.intel.com
    (cherry picked from commit 0bff4858653312a10c83709e0009c3adb87e6f1e)
    Signed-off-by: Jani Nikula

    Ville Syrjälä
     
  • Commit 0ef2f05c7e02ff99c0b5b583d7dee2cd12b053f2 uses vmalloc for WR buffers
    when needed and uses kvfree to free the buffers. It missed changing kfree
    to kvfree in mlx4_ib_destroy_srq().

    Reported-by: Matthew Finaly
    Signed-off-by: Wengang Wang
    Signed-off-by: Doug Ledford

    Wengang Wang
     
  • Previously, cma_match_net_dev called cma_protocol_roce which
    tried to verify that the IB device uses RoCE protocol. However,
    if rdma_id wasn't bound to a port, then the check would occur
    against the first port of the device without regard to whether
    that port was even of the same type as the type of port the
    incoming packet was received on.

    Fix this by passing the port of the request and only checking
    against the same port of the device.

    Reported-by: Or Gerlitz
    Fixes: b8cab5dab15f ('IB/cma: Accept connection without a valid netdev on RoCE')
    Signed-off-by: Matan Barak
    Signed-off-by: Doug Ledford

    Matan Barak
     
  • 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 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
     
  • 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
     
  • Commit 1299653affa4 ("sh_eth: fix descriptor access endianness") only
    addressed the 32-bit buffer address field byte-swapping but the driver
    still accesses 16-bit frame/buffer length descriptor fields without the
    necessary byte-swapping -- which should affect the big-endian kernels.
    In order to be able to use {cpu|edmac}_to_{edmac|cpu}(), we need to declare
    the RX/TX descriptor word 1 as a 32-bit field and use shifts/masking to
    access the 16-bit subfields (which gets rid of the ugly #ifdef'ery too)...

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: David S. Miller

    Sergei Shtylyov
     
  • Packets that arrive from real hardware devices have ip_summed ==
    CHECKSUM_UNNECESSARY if the hardware verified the checksums, or
    CHECKSUM_NONE if the packet is bad or it was unable to verify it. The
    current version of veth will replace CHECKSUM_NONE with
    CHECKSUM_UNNECESSARY, which causes corrupt packets routed from hardware to
    a veth device to be delivered to the application. This caused applications
    at Twitter to receive corrupt data when network hardware was corrupting
    packets.

    We believe this was added as an optimization to skip computing and
    verifying checksums for communication between containers. However, locally
    generated packets have ip_summed == CHECKSUM_PARTIAL, so the code as
    written does nothing for them. As far as we can tell, after removing this
    code, these packets are transmitted from one stack to another unmodified
    (tcpdump shows invalid checksums on both sides, as expected), and they are
    delivered correctly to applications. We didn’t test every possible network
    configuration, but we tried a few common ones such as bridging containers,
    using NAT between the host and a container, and routing from hardware
    devices to containers. We have effectively deployed this in production at
    Twitter (by disabling RX checksum offloading on veth devices).

    This code dates back to the first version of the driver, commit
    ("[NET]: Virtual ethernet device driver"), so I
    suspect this bug occurred mostly because the driver API has evolved
    significantly since then. Commit ("net/veth: Fix
    packet checksumming") (in December 2010) fixed this for packets that get
    created locally and sent to hardware devices, by not changing
    CHECKSUM_PARTIAL. However, the same issue still occurs for packets coming
    in from hardware devices.

    Co-authored-by: Evan Jones
    Signed-off-by: Evan Jones
    Cc: Nicolas Dichtel
    Cc: Phil Sutter
    Cc: Toshiaki Makita
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Vijay Pandurangan
    Acked-by: Cong Wang
    Signed-off-by: David S. Miller

    Vijay Pandurangan
     
  • 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
     
  • This patch fixes a lost request discovered during IO + hot removal.

    The driver's pci removal deletes gendisks prior to shutting down the
    controller to allow dirty data to sync. Dirty data can not be synced on
    a surprise removal, though, and would potentially block indefinitely.

    The driver previously had marked the queue as dying in this scenario
    to prevent new requests from attempting, however it will still block
    for requests that already entered the queue. This patch fixes this by
    quiescing IO first, then aborting the requeued requests before deleting
    disks.

    Reported-by: Sujith Pandel
    Signed-off-by: Keith Busch
    Tested-by: Sujith Pandel
    Signed-off-by: Jens Axboe

    Keith Busch