04 Nov, 2017

20 commits


31 Oct, 2017

2 commits

  • Hyper-V allows the guest to report panic and the guest can pass additional
    information. All this is logged on the host. Currently Linux is passing back
    information that is not particularly useful. Make the following changes:

    1. Windows uses crash MSR P0 to report bugcheck code. Follow the same
    convention for Linux as well.
    2. It will be useful to know the gust ID of the Linux guest that has
    paniced. Pass back this information.

    These changes will help in better supporting Linux on Hyper-V

    Signed-off-by: K. Y. Srinivasan
    Signed-off-by: Greg Kroah-Hartman

    K. Y. Srinivasan
     
  • When investigating performance, it is useful to be able to look at
    the number of host and guest events per-channel. This is equivalent
    to per-device interrupt statistics.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: K. Y. Srinivasan
    Signed-off-by: Greg Kroah-Hartman

    Stephen Hemminger
     

23 Oct, 2017

8 commits

  • We want the driver fixes in here and this resolves a merge issue with
    the binder driver.

    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • Linus Torvalds
     
  • Pull staging and IIO fixes from Greg KH:
    "Here are a small number of patches to resolve some reported IIO and a
    staging driver problem. Nothing major here, full details are in the
    shortlog below.

    All have been in linux-next with no reported issues"

    * tag 'staging-4.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: bcm2835-audio: Fix memory corruption
    iio: adc: at91-sama5d2_adc: fix probe error on missing trigger property
    iio: adc: dln2-adc: fix build error
    iio: dummy: events: Add missing break
    staging: iio: ade7759: fix signed extension bug on shift of a u8
    iio: pressure: zpa2326: Remove always-true check which confuses gcc
    iio: proximity: as3935: noise detection + threshold changes

    Linus Torvalds
     
  • Pull char/misc driver fixes from Greg KH:
    "Here are four small fixes for 4.14-rc6.

    Three of them are binder driver fixes for reported issues, and the
    last one is a hyperv driver bugfix. Nothing major, but good fixes to
    get into 4.14-final.

    All of these have been in linux-next with no reported issues"

    * tag 'char-misc-4.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    android: binder: Fix null ptr dereference in debug msg
    android: binder: Don't get mm from task
    vmbus: hvsock: add proper sync for vmbus_hvsock_device_unregister()
    binder: call poll_wait() unconditionally.

    Linus Torvalds
     
  • Pull USB/PHY fixes from Greg KH:
    "Here are a small number of USB and PHY driver fixes for 4.14-rc6

    There is the usual musb and xhci fixes in here, as well as some needed
    phy patches. Also is a nasty regression fix for usbfs that has started
    to hit a lot of people using virtual machines.

    All of these have been in linux-next with no reported problems"

    * tag 'usb-4.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (26 commits)
    usb: hub: Allow reset retry for USB2 devices on connect bounce
    USB: core: fix out-of-bounds access bug in usb_get_bos_descriptor()
    MAINTAINERS: fix git tree url for musb module
    usb: quirks: add quirk for WORLDE MINI MIDI keyboard
    usb: musb: sunxi: Explicitly release USB PHY on exit
    usb: musb: Check for host-mode using is_host_active() on reset interrupt
    usb: musb: musb_cppi41: Configure the number of channels for DA8xx
    usb: musb: musb_cppi41: Fix cppi41_set_dma_mode() for DA8xx
    usb: musb: musb_cppi41: Fix the address of teardown and autoreq registers
    USB: musb: fix late external abort on suspend
    USB: musb: fix session-bit runtime-PM quirk
    usb: cdc_acm: Add quirk for Elatec TWN3
    USB: devio: Revert "USB: devio: Don't corrupt user memory"
    usb: xhci: Handle error condition in xhci_stop_device()
    usb: xhci: Reset halted endpoint if trb is noop
    xhci: Cleanup current_cmd in xhci_cleanup_command_queue()
    xhci: Identify USB 3.1 capable hosts by their port protocol capability
    USB: serial: metro-usb: add MS7820 device id
    phy: rockchip-typec: Check for errors from tcphy_phy_init()
    phy: rockchip-typec: Don't set the aux voltage swing to 400 mV
    ...

    Linus Torvalds
     
  • Currently we assume userspace pages are always writable when doing
    memory pinning. This is not true, specially since userspace applications
    may allocate their memory the way they want, we have no control over it.
    If a read-only page is set for pinning, currently the driver fails due
    to get_user_pages_fast() refusing to map read-only pages as writable.

    This patch changes this behavior, by taking the permission flags of the
    pages into account in both pinning/unpinning process, as well as in the
    DMA data copy-back to userpace (which we shouldn't try to do blindly,
    since it will fail in case of read-only-pages).

    Signed-off-by: Frank Haverkamp
    Signed-off-by: Guilherme G. Piccoli
    Signed-off-by: Greg Kroah-Hartman

    Guilherme G. Piccoli
     
  • Pull input fix from Dmitry Torokhov:
    "A fix for a broken commit in the previous pull breaking automatic
    module loading of input handlers, such ad evdev"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: do not use property bits when generating module alias

    Linus Torvalds
     
  • The commit 8724ecb07229 ("Input: allow matching device IDs on property
    bits") started using property bits when generating module aliases for input
    handlers, but did not adjust the generation of MODALIAS attribute on input
    device uevents, breaking automatic module loading. Given that no handler
    currently uses property bits in their module tables, let's revert this part
    of the commit for now.

    Reported-by: Damien Wyart
    Tested-by: Damien Wyart
    Fixes: 8724ecb07229 ("Input: allow matching device IDs on property bits")
    Signed-off-by: Dmitry Torokhov

    Dmitry Torokhov
     

22 Oct, 2017

10 commits

  • Pull x86 fixes from Thomas Gleixner:
    "A couple of fixes addressing the following issues:

    - The last polishing for the TLB code, removing the last BUG_ON() and
    the debug file along with tidying up the lazy TLB code.

    - Prevent triple fault on 1st Gen. 486 caused by stupidly calling the
    early IDT setup after the first function which causes a fault which
    should be caught by the exception table.

    - Limit the mmap of /dev/mem to valid addresses

    - Prevent late microcode loading on Broadwell X

    - Remove a redundant assignment in the cache info code"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/mm: Limit mmap() of /dev/mem to valid physical addresses
    x86/mm: Remove debug/x86/tlb_defer_switch_to_init_mm
    x86/mm: Tidy up "x86/mm: Flush more aggressively in lazy TLB mode"
    x86/mm/64: Remove the last VM_BUG_ON() from the TLB code
    x86/microcode/intel: Disable late loading on model 79
    x86/idt: Initialize early IDT before cr4_init_shadow()
    x86/cpu/intel_cacheinfo: Remove redundant assignment to 'this_leaf'

    Linus Torvalds
     
  • Pull timer fix from Thomas Gleixner:
    "A single fix to make the cs5535 clock event driver robust agaist
    spurious interrupts"

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clockevents/drivers/cs5535: Improve resilience to spurious interrupts

    Linus Torvalds
     
  • Pull smp/hotplug fix from Thomas Gleixner:
    "The recent rework of the callback invocation missed to cleanup the
    leftovers of the operation, so under certain circumstances a
    subsequent CPU hotplug operation accesses stale data and crashes.
    Clean it up."

    * 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    cpu/hotplug: Reset node state after operation

    Linus Torvalds
     
  • Pull perf fixes from Thomas Gleixner:
    "A series of fixes for perf tooling:

    - Make xyarray return the X/Y size correctly which fixes a crash in
    the exit code.

    - Fix the libc path in test so it works not only on Debian/Ubuntu
    correctly

    - Check for eBPF file existance and output a useful error message
    instead of failing to compile a non existant file

    - Make sure perf_hpp_fmt is not longer references before freeing it

    - Use list_del_init() in the histogram code to prevent a crash when
    the already deleted element is deleted again

    - Remove the leftovers of the removed '-l' option

    - Add reviewer entries to the MAINTAINERS file"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf test shell trace+probe_libc_inet_pton.sh: Be compatible with Debian/Ubuntu
    perf xyarray: Fix wrong processing when closing evsel fd
    perf buildid-list: Fix crash when processing PERF_RECORD_NAMESPACE
    perf record: Fix documentation for a inexistent option '-l'
    perf tools: Add long time reviewers to MAINTAINERS
    perf tools: Check wether the eBPF file exists in event parsing
    perf hists: Add extra integrity checks to fmt_free()
    perf hists: Fix crash in perf_hpp__reset_output_field()

    Linus Torvalds
     
  • Pull irq fixes from Thomas Gleixner:
    "A set of small fixes mostly in the irq drivers area:

    - Make the tango irq chip work correctly, which requires a new
    function in the generiq irq chip implementation

    - A set of updates to the GIC-V3 ITS driver removing a bogus BUG_ON()
    and parsing the VCPU table size correctly"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    genirq: generic chip: remove irq_gc_mask_disable_reg_and_ack()
    irqchip/tango: Use irq_gc_mask_disable_and_ack_set
    genirq: generic chip: Add irq_gc_mask_disable_and_ack_set()
    irqchip/gic-v3-its: Add missing changes to support 52bit physical address
    irqchip/gic-v3-its: Fix the incorrect parsing of VCPU table size
    irqchip/gic-v3-its: Fix the incorrect BUG_ON in its_init_vpe_domain()
    DT: arm,gic-v3: Update the ITS size in the examples

    Linus Torvalds
     
  • Pull objtool fix from Thomas Gleixner:
    "Plug a memory leak in the instruction decoder"

    * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    objtool: Fix memory leak in decode_instructions()

    Linus Torvalds
     
  • Pull networking fixes from David Miller:
    "A little more than usual this time around. Been travelling, so that is
    part of it.

    Anyways, here are the highlights:

    1) Deal with memcontrol races wrt. listener dismantle, from Eric
    Dumazet.

    2) Handle page allocation failures properly in nfp driver, from Jaku
    Kicinski.

    3) Fix memory leaks in macsec, from Sabrina Dubroca.

    4) Fix crashes in pppol2tp_session_ioctl(), from Guillaume Nault.

    5) Several fixes in bnxt_en driver, including preventing potential
    NVRAM parameter corruption from Michael Chan.

    6) Fix for KRACK attacks in wireless, from Johannes Berg.

    7) rtnetlink event generation fixes from Xin Long.

    8) Deadlock in mlxsw driver, from Ido Schimmel.

    9) Disallow arithmetic operations on context pointers in bpf, from
    Jakub Kicinski.

    10) Missing sock_owned_by_user() check in sctp_icmp_redirect(), from
    Xin Long.

    11) Only TCP is supported for sockmap, make that explicit with a
    check, from John Fastabend.

    12) Fix IP options state races in DCCP and TCP, from Eric Dumazet.

    13) Fix panic in packet_getsockopt(), also from Eric Dumazet.

    14) Add missing locked in hv_sock layer, from Dexuan Cui.

    15) Various aquantia bug fixes, including several statistics handling
    cures. From Igor Russkikh et al.

    16) Fix arithmetic overflow in devmap code, from John Fastabend.

    17) Fix busted socket memory accounting when we get a fault in the tcp
    zero copy paths. From Willem de Bruijn.

    18) Don't leave opt->tot_len uninitialized in ipv6, from Eric Dumazet"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (106 commits)
    stmmac: Don't access tx_q->dirty_tx before netif_tx_lock
    ipv6: flowlabel: do not leave opt->tot_len with garbage
    of_mdio: Fix broken PHY IRQ in case of probe deferral
    textsearch: fix typos in library helpers
    rxrpc: Don't release call mutex on error pointer
    net: stmmac: Prevent infinite loop in get_rx_timestamp_status()
    net: stmmac: Fix stmmac_get_rx_hwtstamp()
    net: stmmac: Add missing call to dev_kfree_skb()
    mlxsw: spectrum_router: Configure TIGCR on init
    mlxsw: reg: Add Tunneling IPinIP General Configuration Register
    net: ethtool: remove error check for legacy setting transceiver type
    soreuseport: fix initialization race
    net: bridge: fix returning of vlan range op errors
    sock: correct sk_wmem_queued accounting on efault in tcp zerocopy
    bpf: add test cases to bpf selftests to cover all access tests
    bpf: fix pattern matches for direct packet access
    bpf: fix off by one for range markings with L{T, E} patterns
    bpf: devmap fix arithmetic overflow in bitmap_size calculation
    net: aquantia: Bad udp rate on default interrupt coalescing
    net: aquantia: Enable coalescing management via ethtool interface
    ...

    Linus Torvalds
     
  • This is the possible reason for different hard to reproduce
    problems on my ARMv7-SMP test system.

    The symptoms are in recent kernels imprecise external aborts,
    and in older kernels various kinds of network stalls and
    unexpected page allocation failures.

    My testing indicates that the trouble started between v4.5 and v4.6
    and prevails up to v4.14.

    Using the dirty_tx before acquiring the spin lock is clearly
    wrong and was first introduced with v4.6.

    Fixes: e3ad57c96715 ("stmmac: review RX/TX ring management")

    Signed-off-by: Bernd Edlinger
    Signed-off-by: David S. Miller

    Bernd Edlinger
     
  • When syzkaller team brought us a C repro for the crash [1] that
    had been reported many times in the past, I finally could find
    the root cause.

    If FlowLabel info is merged by fl6_merge_options(), we leave
    part of the opt_space storage provided by udp/raw/l2tp with random value
    in opt_space.tot_len, unless a control message was provided at sendmsg()
    time.

    Then ip6_setup_cork() would use this random value to perform a kzalloc()
    call. Undefined behavior and crashes.

    Fix is to properly set tot_len in fl6_merge_options()

    At the same time, we can also avoid consuming memory and cpu cycles
    to clear it, if every option is copied via a kmemdup(). This is the
    change in ip6_setup_cork().

    [1]
    kasan: CONFIG_KASAN_INLINE enabled
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
    (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 6613 Comm: syz-executor0 Not tainted 4.14.0-rc4+ #127
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    task: ffff8801cb64a100 task.stack: ffff8801cc350000
    RIP: 0010:ip6_setup_cork+0x274/0x15c0 net/ipv6/ip6_output.c:1168
    RSP: 0018:ffff8801cc357550 EFLAGS: 00010203
    RAX: dffffc0000000000 RBX: ffff8801cc357748 RCX: 0000000000000010
    RDX: 0000000000000002 RSI: ffffffff842bd1d9 RDI: 0000000000000014
    RBP: ffff8801cc357620 R08: ffff8801cb17f380 R09: ffff8801cc357b10
    R10: ffff8801cb64a100 R11: 0000000000000000 R12: ffff8801cc357ab0
    R13: ffff8801cc357b10 R14: 0000000000000000 R15: ffff8801c3bbf0c0
    FS: 00007f9c5c459700(0000) GS:ffff8801db200000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020324000 CR3: 00000001d1cf2000 CR4: 00000000001406f0
    DR0: 0000000020001010 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000600
    Call Trace:
    ip6_make_skb+0x282/0x530 net/ipv6/ip6_output.c:1729
    udpv6_sendmsg+0x2769/0x3380 net/ipv6/udp.c:1340
    inet_sendmsg+0x11f/0x5e0 net/ipv4/af_inet.c:762
    sock_sendmsg_nosec net/socket.c:633 [inline]
    sock_sendmsg+0xca/0x110 net/socket.c:643
    SYSC_sendto+0x358/0x5a0 net/socket.c:1750
    SyS_sendto+0x40/0x50 net/socket.c:1718
    entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x4520a9
    RSP: 002b:00007f9c5c458c08 EFLAGS: 00000216 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004520a9
    RDX: 0000000000000001 RSI: 0000000020fd1000 RDI: 0000000000000016
    RBP: 0000000000000086 R08: 0000000020e0afe4 R09: 000000000000001c
    R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004bb1ee
    R13: 00000000ffffffff R14: 0000000000000016 R15: 0000000000000029
    Code: e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 ea 0f 00 00 48 8d 79 04 48 b8 00 00 00 00 00 fc ff df 45 8b 74 24 04 48 89 fa 48 c1 ea 03 b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85
    RIP: ip6_setup_cork+0x274/0x15c0 net/ipv6/ip6_output.c:1168 RSP: ffff8801cc357550

    Signed-off-by: Eric Dumazet
    Reported-by: Dmitry Vyukov
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • If an Ethernet PHY is initialized before the interrupt controller it is
    connected to, a message like the following is printed:

    irq: no irq domain found for /interrupt-controller@e61c0000 !

    However, the actual error is ignored, leading to a non-functional (POLL)
    PHY interrupt later:

    Micrel KSZ8041RNLI ee700000.ethernet-ffffffff:01: attached PHY driver [Micrel KSZ8041RNLI] (mii_bus:phy_addr=ee700000.ethernet-ffffffff:01, irq=POLL)

    Depending on whether the PHY driver will fall back to polling, Ethernet
    may or may not work.

    To fix this:
    1. Switch of_mdiobus_register_phy() from irq_of_parse_and_map() to
    of_irq_get().
    Unlike the former, the latter returns -EPROBE_DEFER if the
    interrupt controller is not yet available, so this condition can be
    detected.
    Other errors are handled the same as before, i.e. use the passed
    mdio->irq[addr] as interrupt.
    2. Propagate and handle errors from of_mdiobus_register_phy() and
    of_mdiobus_register_device().

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: David S. Miller

    Geert Uytterhoeven