22 Nov, 2016

8 commits

  • Exactly because for_each_thread() in autogroup_move_group() can't see it
    and update its ->sched_task_group before _put() and possibly free().

    So the exiting task needs another sched_move_task() before exit_notify()
    and we need to re-introduce the PF_EXITING (or similar) check removed by
    the previous change for another reason.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: hartsjc@redhat.com
    Cc: vbendel@redhat.com
    Cc: vlovejoy@redhat.com
    Link: http://lkml.kernel.org/r/20161114184612.GA15968@redhat.com
    Signed-off-by: Ingo Molnar

    Oleg Nesterov
     
  • The PF_EXITING check in task_wants_autogroup() is no longer needed. Remove
    it, but see the next patch.

    However the comment is correct in that autogroup_move_group() must always
    change task_group() for every thread so the sysctl_ check is very wrong;
    we can race with cgroups and even sys_setsid() is not safe because a task
    running with task_group() == ag->tg must participate in refcounting:

    int main(void)
    {
    int sctl = open("/proc/sys/kernel/sched_autogroup_enabled", O_WRONLY);

    assert(sctl > 0);
    if (fork()) {
    wait(NULL); // destroy the child's ag/tg
    pause();
    }

    assert(pwrite(sctl, "1\n", 2, 0) == 2);
    assert(setsid() > 0);
    if (fork())
    pause();

    kill(getppid(), SIGKILL);
    sleep(1);

    // The child has gone, the grandchild runs with kref == 1
    assert(pwrite(sctl, "0\n", 2, 0) == 2);
    assert(setsid() > 0);

    // runs with the freed ag/tg
    for (;;)
    sleep(1);

    return 0;
    }

    crashes the kernel. It doesn't really need sleep(1), it doesn't matter if
    autogroup_move_group() actually frees the task_group or this happens later.

    Reported-by: Vern Lovejoy
    Signed-off-by: Oleg Nesterov
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: hartsjc@redhat.com
    Cc: vbendel@redhat.com
    Link: http://lkml.kernel.org/r/20161114184609.GA15965@redhat.com
    Signed-off-by: Ingo Molnar

    Oleg Nesterov
     
  • Pull apparmor bugfix from James Morris:
    "This has a fix for a policy replacement bug that is fairly serious for
    apache mod_apparmor users, as it results in the wrong policy being
    applied on an network facing service"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
    apparmor: fix change_hat not finding hat after policy replacement

    Linus Torvalds
     
  • Pull sparc fixes from David Miller:

    1) With modern networking cards we can run out of 32-bit DMA space, so
    support 64-bit DMA addressing when possible on sparc64. From Dave
    Tushar.

    2) Some signal frame validation checks are inverted on sparc32, fix
    from Andreas Larsson.

    3) Lockdep tables can get too large in some circumstances on sparc64,
    add a way to adjust the size a bit. From Babu Moger.

    4) Fix NUMA node probing on some sun4v systems, from Thomas Tai.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc: drop duplicate header scatterlist.h
    lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined
    config: Adding the new config parameter CONFIG_PROVE_LOCKING_SMALL for sparc
    sunbmac: Fix compiler warning
    sunqe: Fix compiler warnings
    sparc64: Enable 64-bit DMA
    sparc64: Enable sun4v dma ops to use IOMMU v2 APIs
    sparc64: Bind PCIe devices to use IOMMU v2 service
    sparc64: Initialize iommu_map_table and iommu_pool
    sparc64: Add ATU (new IOMMU) support
    sparc64: Add FORCE_MAX_ZONEORDER and default to 13
    sparc64: fix compile warning section mismatch in find_node()
    sparc32: Fix inverted invalid_frame_pointer checks on sigreturns
    sparc64: Fix find_node warning if numa node cannot be found

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Clear congestion control state when changing algorithms on an
    existing socket, from Florian Westphal.

    2) Fix register bit values in altr_tse_pcs portion of stmmac driver,
    from Jia Jie Ho.

    3) Fix PTP handling in stammc driver for GMAC4, from Giuseppe
    CAVALLARO.

    4) Fix udplite multicast delivery handling, it ignores the udp_table
    parameter passed into the lookups, from Pablo Neira Ayuso.

    5) Synchronize the space estimated by rtnl_vfinfo_size and the space
    actually used by rtnl_fill_vfinfo. From Sabrina Dubroca.

    6) Fix memory leak in fib_info when splitting nodes, from Alexander
    Duyck.

    7) If a driver does a napi_hash_del() explicitily and not via
    netif_napi_del(), it must perform RCU synchronization as needed. Fix
    this in virtio-net and bnxt drivers, from Eric Dumazet.

    8) Likewise, it is not necessary to invoke napi_hash_del() is we are
    also doing neif_napi_del() in the same code path. Remove such calls
    from be2net and cxgb4 drivers, also from Eric Dumazet.

    9) Don't allocate an ID in peernet2id_alloc() if the netns is dead,
    from WANG Cong.

    10) Fix OF node and device struct leaks in of_mdio, from Johan Hovold.

    11) We cannot cache routes in ip6_tunnel when using inherited traffic
    classes, from Paolo Abeni.

    12) Fix several crashes and leaks in cpsw driver, from Johan Hovold.

    13) Splice operations cannot use freezable blocking calls in AF_UNIX,
    from WANG Cong.

    14) Link dump filtering by master device and kind support added an error
    in loop index updates during the dump if we actually do filter, fix
    from Zhang Shengju.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (59 commits)
    tcp: zero ca_priv area when switching cc algorithms
    net: l2tp: Treat NET_XMIT_CN as success in l2tp_eth_dev_xmit
    ethernet: stmmac: make DWMAC_STM32 depend on it's associated SoC
    tipc: eliminate obsolete socket locking policy description
    rtnl: fix the loop index update error in rtnl_dump_ifinfo()
    l2tp: fix racy SOCK_ZAPPED flag check in l2tp_ip{,6}_bind()
    net: macb: add check for dma mapping error in start_xmit()
    rtnetlink: fix FDB size computation
    netns: fix get_net_ns_by_fd(int pid) typo
    af_unix: conditionally use freezable blocking calls in read
    net: ethernet: ti: cpsw: fix fixed-link phy probe deferral
    net: ethernet: ti: cpsw: add missing sanity check
    net: ethernet: ti: cpsw: fix secondary-emac probe error path
    net: ethernet: ti: cpsw: fix of_node and phydev leaks
    net: ethernet: ti: cpsw: fix deferred probe
    net: ethernet: ti: cpsw: fix mdio device reference leak
    net: ethernet: ti: cpsw: fix bad register access in probe error path
    net: sky2: Fix shutdown crash
    cfg80211: limit scan results cache size
    net sched filters: pass netlink message flags in event notification
    ...

    Linus Torvalds
     
  • We need to zero out the private data area when application switches
    connection to different algorithm (TCP_CONGESTION setsockopt).

    When congestion ops get assigned at connect time everything is already
    zeroed because sk_alloc uses GFP_ZERO flag. But in the setsockopt case
    this contains whatever previous cc placed there.

    Signed-off-by: Florian Westphal
    Signed-off-by: David S. Miller

    Florian Westphal
     
  • The tc could return NET_XMIT_CN as one congestion notification, but
    it does not mean the packe is lost. Other modules like ipvlan,
    macvlan, and others treat NET_XMIT_CN as success too.
    So l2tp_eth_dev_xmit should add the NET_XMIT_CN check.

    Signed-off-by: Gao Feng
    Signed-off-by: David S. Miller

    Gao Feng
     
  • There's not much point, except compile test, enabling the stmmac
    platform drivers unless the STM32 SoC is enabled. It's not
    useful without it.

    Signed-off-by: Peter Robinson
    Signed-off-by: David S. Miller

    Peter Robinson
     

21 Nov, 2016

3 commits

  • After a policy replacement, the task cred may be out of date and need
    to be updated. However change_hat is using the stale profiles from
    the out of date cred resulting in either: a stale profile being applied
    or, incorrect failure when searching for a hat profile as it has been
    migrated to the new parent profile.

    Fixes: 01e2b670aa898a39259bc85c78e3d74820f4d3b6 (failure to find hat)
    Fixes: 898127c34ec03291c86f4ff3856d79e9e18952bc (stale policy being applied)
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1000287
    Cc: stable@vger.kernel.org
    Signed-off-by: John Johansen
    Signed-off-by: James Morris

    John Johansen
     
  • Linus Torvalds
     
  • Pull ARM fixes from Russell King:
    "A few more ARM fixes:

    - the assembly backtrace code suffers problems with the new printk()
    implementation which assumes that kernel messages without KERN_CONT
    should have newlines inserted between them. Fix this.
    - fix a section naming error - ".init.text" rather than ".text.init"
    - preallocate DMA debug memory at core_initcall() time rather than
    fs_initcall(), as we have some core drivers that need to use DMA
    mapping - and that triggers a kernel warning from the DMA debug
    code.
    - fix XIP kernels after the ro_after_init changes made this data
    permanently read-only"

    * 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: Fix XIP kernels
    ARM: 8628/1: dma-mapping: preallocate DMA-debug hash tables in core_initcall
    ARM: 8624/1: proc-v7m.S: fix init section name
    ARM: fix backtrace

    Linus Torvalds
     

20 Nov, 2016

23 commits

  • The comment block in socket.c describing the locking policy is
    obsolete, and does not reflect current reality. We remove it in this
    commit.

    Since the current locking policy is much simpler and follows a
    mainstream approach, we see no need to add a new description.

    Signed-off-by: Jon Maloy
    Signed-off-by: David S. Miller

    Jon Paul Maloy
     
  • If the link is filtered out, loop index should also be updated. If not,
    loop index will not be correct.

    Fixes: dc599f76c22b0 ("net: Add support for filtering link dump by master device and kind")
    Signed-off-by: Zhang Shengju
    Acked-by: David Ahern
    Signed-off-by: David S. Miller

    Zhang Shengju
     
  • Lock socket before checking the SOCK_ZAPPED flag in l2tp_ip6_bind().
    Without lock, a concurrent call could modify the socket flags between
    the sock_flag(sk, SOCK_ZAPPED) test and the lock_sock() call. This way,
    a socket could be inserted twice in l2tp_ip6_bind_table. Releasing it
    would then leave a stale pointer there, generating use-after-free
    errors when walking through the list or modifying adjacent entries.

    BUG: KASAN: use-after-free in l2tp_ip6_close+0x22e/0x290 at addr ffff8800081b0ed8
    Write of size 8 by task syz-executor/10987
    CPU: 0 PID: 10987 Comm: syz-executor Not tainted 4.8.0+ #39
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.8.2-0-g33fbe13 by qemu-project.org 04/01/2014
    ffff880031d97838 ffffffff829f835b ffff88001b5a1640 ffff8800081b0ec0
    ffff8800081b15a0 ffff8800081b6d20 ffff880031d97860 ffffffff8174d3cc
    ffff880031d978f0 ffff8800081b0e80 ffff88001b5a1640 ffff880031d978e0
    Call Trace:
    [] dump_stack+0xb3/0x118 lib/dump_stack.c:15
    [] kasan_object_err+0x1c/0x70 mm/kasan/report.c:156
    [< inline >] print_address_description mm/kasan/report.c:194
    [] kasan_report_error+0x1f6/0x4d0 mm/kasan/report.c:283
    [< inline >] kasan_report mm/kasan/report.c:303
    [] __asan_report_store8_noabort+0x3e/0x40 mm/kasan/report.c:329
    [< inline >] __write_once_size ./include/linux/compiler.h:249
    [< inline >] __hlist_del ./include/linux/list.h:622
    [< inline >] hlist_del_init ./include/linux/list.h:637
    [] l2tp_ip6_close+0x22e/0x290 net/l2tp/l2tp_ip6.c:239
    [] inet_release+0xed/0x1c0 net/ipv4/af_inet.c:415
    [] inet6_release+0x50/0x70 net/ipv6/af_inet6.c:422
    [] sock_release+0x8d/0x1d0 net/socket.c:570
    [] sock_close+0x16/0x20 net/socket.c:1017
    [] __fput+0x28c/0x780 fs/file_table.c:208
    [] ____fput+0x15/0x20 fs/file_table.c:244
    [] task_work_run+0xf9/0x170
    [] do_exit+0x85e/0x2a00
    [] do_group_exit+0x108/0x330
    [] get_signal+0x617/0x17a0 kernel/signal.c:2307
    [] do_signal+0x7f/0x18f0
    [] exit_to_usermode_loop+0xbf/0x150 arch/x86/entry/common.c:156
    [< inline >] prepare_exit_to_usermode arch/x86/entry/common.c:190
    [] syscall_return_slowpath+0x1a0/0x1e0 arch/x86/entry/common.c:259
    [] entry_SYSCALL_64_fastpath+0xc4/0xc6
    Object at ffff8800081b0ec0, in cache L2TP/IPv6 size: 1448
    Allocated:
    PID = 10987
    [ 1116.897025] [] save_stack_trace+0x16/0x20
    [ 1116.897025] [] save_stack+0x46/0xd0
    [ 1116.897025] [] kasan_kmalloc+0xad/0xe0
    [ 1116.897025] [] kasan_slab_alloc+0x12/0x20
    [ 1116.897025] [< inline >] slab_post_alloc_hook mm/slab.h:417
    [ 1116.897025] [< inline >] slab_alloc_node mm/slub.c:2708
    [ 1116.897025] [< inline >] slab_alloc mm/slub.c:2716
    [ 1116.897025] [] kmem_cache_alloc+0xc8/0x2b0 mm/slub.c:2721
    [ 1116.897025] [] sk_prot_alloc+0x69/0x2b0 net/core/sock.c:1326
    [ 1116.897025] [] sk_alloc+0x38/0xae0 net/core/sock.c:1388
    [ 1116.897025] [] inet6_create+0x2d7/0x1000 net/ipv6/af_inet6.c:182
    [ 1116.897025] [] __sock_create+0x37b/0x640 net/socket.c:1153
    [ 1116.897025] [< inline >] sock_create net/socket.c:1193
    [ 1116.897025] [< inline >] SYSC_socket net/socket.c:1223
    [ 1116.897025] [] SyS_socket+0xef/0x1b0 net/socket.c:1203
    [ 1116.897025] [] entry_SYSCALL_64_fastpath+0x23/0xc6
    Freed:
    PID = 10987
    [ 1116.897025] [] save_stack_trace+0x16/0x20
    [ 1116.897025] [] save_stack+0x46/0xd0
    [ 1116.897025] [] kasan_slab_free+0x71/0xb0
    [ 1116.897025] [< inline >] slab_free_hook mm/slub.c:1352
    [ 1116.897025] [< inline >] slab_free_freelist_hook mm/slub.c:1374
    [ 1116.897025] [< inline >] slab_free mm/slub.c:2951
    [ 1116.897025] [] kmem_cache_free+0xc8/0x330 mm/slub.c:2973
    [ 1116.897025] [< inline >] sk_prot_free net/core/sock.c:1369
    [ 1116.897025] [] __sk_destruct+0x32b/0x4f0 net/core/sock.c:1444
    [ 1116.897025] [] sk_destruct+0x44/0x80 net/core/sock.c:1452
    [ 1116.897025] [] __sk_free+0x53/0x220 net/core/sock.c:1460
    [ 1116.897025] [] sk_free+0x23/0x30 net/core/sock.c:1471
    [ 1116.897025] [] sk_common_release+0x28c/0x3e0 ./include/net/sock.h:1589
    [ 1116.897025] [] l2tp_ip6_close+0x1fe/0x290 net/l2tp/l2tp_ip6.c:243
    [ 1116.897025] [] inet_release+0xed/0x1c0 net/ipv4/af_inet.c:415
    [ 1116.897025] [] inet6_release+0x50/0x70 net/ipv6/af_inet6.c:422
    [ 1116.897025] [] sock_release+0x8d/0x1d0 net/socket.c:570
    [ 1116.897025] [] sock_close+0x16/0x20 net/socket.c:1017
    [ 1116.897025] [] __fput+0x28c/0x780 fs/file_table.c:208
    [ 1116.897025] [] ____fput+0x15/0x20 fs/file_table.c:244
    [ 1116.897025] [] task_work_run+0xf9/0x170
    [ 1116.897025] [] do_exit+0x85e/0x2a00
    [ 1116.897025] [] do_group_exit+0x108/0x330
    [ 1116.897025] [] get_signal+0x617/0x17a0 kernel/signal.c:2307
    [ 1116.897025] [] do_signal+0x7f/0x18f0
    [ 1116.897025] [] exit_to_usermode_loop+0xbf/0x150 arch/x86/entry/common.c:156
    [ 1116.897025] [< inline >] prepare_exit_to_usermode arch/x86/entry/common.c:190
    [ 1116.897025] [] syscall_return_slowpath+0x1a0/0x1e0 arch/x86/entry/common.c:259
    [ 1116.897025] [] entry_SYSCALL_64_fastpath+0xc4/0xc6
    Memory state around the buggy address:
    ffff8800081b0d80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ffff8800081b0e00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff8800081b0e80: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
    ^
    ffff8800081b0f00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ffff8800081b0f80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb

    ==================================================================

    The same issue exists with l2tp_ip_bind() and l2tp_ip_bind_table.

    Fixes: c51ce49735c1 ("l2tp: fix oops in L2TP IP sockets for connect() AF_UNSPEC case")
    Reported-by: Baozeng Ding
    Reported-by: Andrey Konovalov
    Tested-by: Baozeng Ding
    Signed-off-by: Guillaume Nault
    Signed-off-by: David S. Miller

    Guillaume Nault
     
  • Pull ARM SoC fixes from Olof Johansson:
    "Again a set of smaller fixes across several platforms (OMAP, Marvell,
    Allwinner, i.MX, etc).

    A handful of typo fixes and smaller missing contents from device
    trees, with some tweaks to OMAP mach files to deal with CPU feature
    print misformatting, potential NULL ptr dereference and one setup
    issue with UARTs"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ipmi/bt-bmc: change compatible node to 'aspeed, ast2400-ibt-bmc'
    ARM: dts: STiH410-b2260: Fix typo in spi0 chipselect definition
    ARM: dts: omap5: board-common: fix wrong SMPS6 (VDD-DDR3) voltage
    ARM: omap3: Add missing memory node in SOM-LV
    arm64: dts: marvell: add unique identifiers for Armada A8k SPI controllers
    arm64: dts: marvell: fix clocksource for CP110 slave SPI0
    arm64: dts: marvell: Fix typo in label name on Armada 37xx
    ASoC: omap-abe-twl6040: fix typo in bindings documentation
    dts: omap5: board-common: enable twl6040 headset jack detection
    dts: omap5: board-common: add phandle to reference Palmas gpadc
    ARM: OMAP2+: avoid NULL pointer dereference
    ARM: OMAP2+: PRM: initialize en_uart4_mask and grpsel_uart4_mask
    ARM: dts: omap3: Fix memory node in Torpedo board
    ARM: AM43XX: Select OMAP_INTERCONNECT in Kconfig
    ARM: OMAP3: Fix formatting of features printed
    ARM: dts: imx53-qsb: Fix regulator constraints
    ARM: dts: sun8i: fix the pinmux for UART1

    Linus Torvalds
     
  • Pull ext4 fixes from Ted Ts'o:
    "A security fix (so a maliciously corrupted file system image won't
    panic the kernel) and some fixes for CONFIG_VMAP_STACK"

    * tag 'ext4_for_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: sanity check the block and cluster size at mount time
    fscrypto: don't use on-stack buffer for key derivation
    fscrypto: don't use on-stack buffer for filename encryption

    Linus Torvalds
     
  • If the block size or cluster size is insane, reject the mount. This
    is important for security reasons (although we shouldn't be just
    depending on this check).

    Ref: http://www.securityfocus.com/archive/1/539661
    Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1332506
    Reported-by: Borislav Petkov
    Reported-by: Nikolay Borisov
    Signed-off-by: Theodore Ts'o
    Cc: stable@vger.kernel.org

    Theodore Ts'o
     
  • With the new (in 4.9) option to use a virtually-mapped stack
    (CONFIG_VMAP_STACK), stack buffers cannot be used as input/output for
    the scatterlist crypto API because they may not be directly mappable to
    struct page. get_crypt_info() was using a stack buffer to hold the
    output from the encryption operation used to derive the per-file key.
    Fix it by using a heap buffer.

    This bug could most easily be observed in a CONFIG_DEBUG_SG kernel
    because this allowed the BUG in sg_set_buf() to be triggered.

    Cc: stable@vger.kernel.org
    Signed-off-by: Eric Biggers
    Signed-off-by: Theodore Ts'o

    Eric Biggers
     
  • With the new (in 4.9) option to use a virtually-mapped stack
    (CONFIG_VMAP_STACK), stack buffers cannot be used as input/output for
    the scatterlist crypto API because they may not be directly mappable to
    struct page. For short filenames, fname_encrypt() was encrypting a
    stack buffer holding the padded filename. Fix it by encrypting the
    filename in-place in the output buffer, thereby making the temporary
    buffer unnecessary.

    This bug could most easily be observed in a CONFIG_DEBUG_SG kernel
    because this allowed the BUG in sg_set_buf() to be triggered.

    Cc: stable@vger.kernel.org
    Signed-off-by: Eric Biggers
    Signed-off-by: Theodore Ts'o

    Eric Biggers
     
  • Pull i2c fixes from Wolfram Sang:
    "Some I2C driver bugfixes (and one documentation fix)"

    * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: i2c-mux-pca954x: fix deselect enabling for device-tree
    i2c: digicolor: use clk_disable_unprepare instead of clk_unprepare
    i2c: mux: fix up dependencies
    i2c: Documentation: i2c-topology: fix minor whitespace nit
    i2c: mux: demux-pinctrl: make drivers with no pinctrl work again

    Linus Torvalds
     
  • Pull KVM fixes from Radim Krčmář:
    "ARM:
    - Fix handling of the 32bit cycle counter
    - Fix cycle counter filtering

    x86:
    - Fix a race leading to double unregistering of user notifiers
    - Amend oversight in kvm_arch_set_irq that turned Hyper-V code dead
    - Use SRCU around kvm_lapic_set_vapic_addr
    - Avoid recursive flushing of asynchronous page faults
    - Do not rely on deferred update in KVM_GET_CLOCK, which fixes #GP
    - Let userspace know that KVM_GET_CLOCK is useful with master clock;
    4.9 changed the return value to better match the guest clock, but
    didn't provide means to let guests take advantage of it"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    kvm: x86: merge kvm_arch_set_irq and kvm_arch_set_irq_inatomic
    KVM: x86: fix missed SRCU usage in kvm_lapic_set_vapic_addr
    KVM: async_pf: avoid recursive flushing of work items
    kvm: kvmclock: let KVM_GET_CLOCK return whether the master clock is in use
    KVM: Disable irq while unregistering user notifier
    KVM: x86: do not go through vcpu in __get_kvmclock_ns
    KVM: arm64: Fix the issues when guest PMCCFILTR is configured
    arm64: KVM: pmu: Fix AArch32 cycle counter access

    Linus Torvalds
     
  • Deselect functionality can be ignored for device-trees with
    "i2c-mux-idle-disconnect" entries if no platform_data is available.
    By enabling the deselect functionality outside the platform_data
    block the logic works as it did in previous kernels.

    Fixes: 7fcac9807175 ("i2c: i2c-mux-pca954x: convert to use an explicit i2c mux core")
    Cc: # v4.7+
    Signed-off-by: Alex Hemme
    Signed-off-by: Ziyang Wu
    [touched up a few minor issues /peda]
    Signed-off-by: Peter Rosin
    Signed-off-by: Wolfram Sang

    Alex Hemme
     
  • Pull powerpc fixes from Michael Ellerman:
    "Fixes marked for stable:
    - fix system reset interrupt winkle wakeups
    - fix setting of AIL in hypervisor mode

    Fixes for code merged this cycle:
    - fix exception vector build with 2.23 era binutils
    - fix missing update of HID register on secondary CPUs

    Other:
    - fix missing pr_cont()s
    - invalidate ERAT on tlbiel for POWER9 DD1"

    * tag 'powerpc-4.9-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/mm: Fix missing update of HID register on secondary CPUs
    powerpc/mm/radix: Invalidate ERAT on tlbiel for POWER9 DD1
    powerpc/64: Fix setting of AIL in hypervisor mode
    powerpc/oops: Fix missing pr_cont()s in instruction dump
    powerpc/oops: Fix missing pr_cont()s in show_regs()
    powerpc/oops: Fix missing pr_cont()s in print_msr_bits() et. al.
    powerpc/oops: Fix missing pr_cont()s in show_stack()
    powerpc: Fix exception vector build with 2.23 era binutils
    powerpc/64s: Fix system reset interrupt winkle wakeups

    Linus Torvalds
     
  • Pull crypto fixes from Herbert Xu:
    "This fixes the following issues:

    - Compiler warning in caam driver that was the last one remaining

    - Do not register aes-xts in caam drivers on unsupported platforms

    - Regression in algif_hash interface that may lead to an oops"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: algif_hash - Fix NULL hash crash with shash
    crypto: caam - fix type mismatch warning
    crypto: caam - do not register AES-XTS mode on LP units

    Linus Torvalds
     
  • Pull LED subsystem update from Jacek Anaszewski:
    "I'd like to announce a new co-maintainer - Pavel Machek"

    * tag 'leds_4.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
    MAINTAINERS: Add LED subsystem co-maintainer

    Linus Torvalds
     
  • Pull dmaengine fixes from Vinod Koul:
    "Some driver fixes which we pending in my tree:

    - return error code fix in edma driver
    - Kconfig fix for genric allocator in mmp_tdma
    - fix uninitialized value in sun6i
    - Runtime pm fixes for cppi"

    * tag 'dmaengine-fix-4.9-rc6' of git://git.infradead.org/users/vkoul/slave-dma:
    dmaengine: cppi41: More PM runtime fixes
    dmaengine: cpp41: Fix handling of error path
    dmaengine: cppi41: Fix unpaired pm runtime when only a USB hub is connected
    dmaengine: cppi41: Fix list not empty warning on module removal
    dmaengine: sun6i: fix the uninitialized value for v_lli
    dmaengine: mmp_tdma: add missing select GENERIC_ALLOCATOR in Kconfig
    dmaengine: edma: Fix error return code in edma_alloc_chan_resources()

    Linus Torvalds
     
  • kvm_arch_set_irq is unused since commit b97e6de9c96. Merge
    its functionality with kvm_arch_set_irq_inatomic.

    Reported-by: Jiang Biao
    Signed-off-by: Paolo Bonzini
    Reviewed-by: David Hildenbrand
    Signed-off-by: Radim Krčmář

    Paolo Bonzini
     
  • Reported by syzkaller:

    [ INFO: suspicious RCU usage. ]
    4.9.0-rc4+ #47 Not tainted
    -------------------------------
    ./include/linux/kvm_host.h:536 suspicious rcu_dereference_check() usage!

    stack backtrace:
    CPU: 1 PID: 6679 Comm: syz-executor Not tainted 4.9.0-rc4+ #47
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    ffff880039e2f6d0 ffffffff81c2e46b ffff88003e3a5b40 0000000000000000
    0000000000000001 ffffffff83215600 ffff880039e2f700 ffffffff81334ea9
    ffffc9000730b000 0000000000000004 ffff88003c4f8420 ffff88003d3f8000
    Call Trace:
    [< inline >] __dump_stack lib/dump_stack.c:15
    [] dump_stack+0xb3/0x118 lib/dump_stack.c:51
    [] lockdep_rcu_suspicious+0x139/0x180 kernel/locking/lockdep.c:4445
    [< inline >] __kvm_memslots include/linux/kvm_host.h:534
    [< inline >] kvm_memslots include/linux/kvm_host.h:541
    [] kvm_gfn_to_hva_cache_init+0xa1e/0xce0 virt/kvm/kvm_main.c:1941
    [] kvm_lapic_set_vapic_addr+0xed/0x140 arch/x86/kvm/lapic.c:2217

    Reported-by: Dmitry Vyukov
    Fixes: fda4e2e85589191b123d31cdc21fd33ee70f50fd
    Cc: Andrew Honig
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini
    Reviewed-by: David Hildenbrand
    Signed-off-by: Radim Krčmář

    Paolo Bonzini
     
  • This was reported by syzkaller:

    [ INFO: possible recursive locking detected ]
    4.9.0-rc4+ #49 Not tainted
    ---------------------------------------------
    kworker/2:1/5658 is trying to acquire lock:
    ([ 1644.769018] (&work->work)
    [< inline >] list_empty include/linux/compiler.h:243
    [] flush_work+0x0/0x660 kernel/workqueue.c:1511

    but task is already holding lock:
    ([ 1644.769018] (&work->work)
    [] process_one_work+0x94b/0x1900 kernel/workqueue.c:2093

    stack backtrace:
    CPU: 2 PID: 5658 Comm: kworker/2:1 Not tainted 4.9.0-rc4+ #49
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Workqueue: events async_pf_execute
    ffff8800676ff630 ffffffff81c2e46b ffffffff8485b930 ffff88006b1fc480
    0000000000000000 ffffffff8485b930 ffff8800676ff7e0 ffffffff81339b27
    ffff8800676ff7e8 0000000000000046 ffff88006b1fcce8 ffff88006b1fccf0
    Call Trace:
    ...
    [] flush_work+0x93/0x660 kernel/workqueue.c:2846
    [] __cancel_work_timer+0x17a/0x410 kernel/workqueue.c:2916
    [] cancel_work_sync+0x17/0x20 kernel/workqueue.c:2951
    [] kvm_clear_async_pf_completion_queue+0xd7/0x400 virt/kvm/async_pf.c:126
    [< inline >] kvm_free_vcpus arch/x86/kvm/x86.c:7841
    [] kvm_arch_destroy_vm+0x23d/0x620 arch/x86/kvm/x86.c:7946
    [< inline >] kvm_destroy_vm virt/kvm/kvm_main.c:731
    [] kvm_put_kvm+0x40e/0x790 virt/kvm/kvm_main.c:752
    [] async_pf_execute+0x23d/0x4f0 virt/kvm/async_pf.c:111
    [] process_one_work+0x9fc/0x1900 kernel/workqueue.c:2096
    [] worker_thread+0xef/0x1480 kernel/workqueue.c:2230
    [] kthread+0x244/0x2d0 kernel/kthread.c:209
    [] ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:433

    The reason is that kvm_put_kvm is causing the destruction of the VM, but
    the page fault is still on the ->queue list. The ->queue list is owned
    by the VCPU, not by the work items, so we cannot just add list_del to
    the work item.

    Instead, use work->vcpu to note async page faults that have been resolved
    and will be processed through the done list. There is no need to flush
    those.

    Cc: Dmitry Vyukov
    Signed-off-by: Paolo Bonzini
    Signed-off-by: Radim Krčmář

    Paolo Bonzini
     
  • Userspace can read the exact value of kvmclock by reading the TSC
    and fetching the timekeeping parameters out of guest memory. This
    however is brittle and not necessary anymore with KVM 4.11. Provide
    a mechanism that lets userspace know if the new KVM_GET_CLOCK
    semantics are in effect, and---since we are at it---if the clock
    is stable across all VCPUs.

    Cc: Radim Krčmář
    Cc: Marcelo Tosatti
    Signed-off-by: Paolo Bonzini
    Signed-off-by: Radim Krčmář

    Paolo Bonzini
     
  • Function user_notifier_unregister should be called only once for each
    registered user notifier.

    Function kvm_arch_hardware_disable can be executed from an IPI context
    which could cause a race condition with a VCPU returning to user mode
    and attempting to unregister the notifier.

    Signed-off-by: Ignacio Alvarado
    Cc: stable@vger.kernel.org
    Fixes: 18863bdd60f8 ("KVM: x86 shared msr infrastructure")
    Reviewed-by: Paolo Bonzini
    Signed-off-by: Radim Krčmář

    Ignacio Alvarado
     
  • Going through the first VCPU is wrong if you follow a KVM_SET_CLOCK with
    a KVM_GET_CLOCK immediately after, without letting the VCPU run and
    call kvm_guest_time_update.

    To fix this, compute the kvmclock value ourselves, using the master
    clock (tsc, nsec) pair as the base and the host CPU frequency as
    the scale.

    Reported-by: Marcelo Tosatti
    Signed-off-by: Paolo Bonzini
    Signed-off-by: Radim Krčmář

    Paolo Bonzini
     
  • KVM/ARM updates for v4.9-rc6

    - Fix handling of the 32bit cycle counter
    - Fix cycle counter filtering

    Radim Krčmář
     
  • Simon Wunderlich says:

    ====================
    Here are two batman-adv bugfix patches:

    - Revert a splat on disabling interface which created another problem,
    by Sven Eckelmann

    - Fix error handling when the primary interface disappears during a
    throughput meter test, by Sven Eckelmann
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

19 Nov, 2016

6 commits

  • Drop duplicate header scatterlist.h from iommu_common.h.

    Signed-off-by: Geliang Tang
    Signed-off-by: David S. Miller

    Geliang Tang
     
  • at91ether_start_xmit() does not check for dma mapping errors.

    Found by Linux Driver Verification project (linuxtesting.org).

    Signed-off-by: Alexey Khoroshilov
    Signed-off-by: David S. Miller

    Alexey Khoroshilov
     
  • Pull ACPI fixes from Rafael Wysocki:
    "They fix an ACPI thermal management regression introduced by a recent
    FADT handling cleanup, an ACPI tools build issue introduced by a
    recent ACPICA commit and a PCC mailbox initialization bug causing
    lockdep to complain loudly.

    Specifics:

    - Revert a recent ACPICA cleanup that attempted to get rid of all
    FADT version 2 legacy, but broke ACPI thermal management on at
    least one system (Rafael Wysocki).

    - Fix cross-compiled builds of ACPI tools that stopped working after
    a recent cleanup related to the handling of header files in ACPICA
    (Lv Zheng).

    - Fix a locking issue in the PCC channel initialization code that
    invokes devm_request_irq() under a spinlock (among other things)
    and causes lockdep to complain (Hoan Tran)"

    * tag 'acpi-4.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    tools/power/acpi: Remove direct kernel source include reference
    mailbox: PCC: Fix lockdep warning when request PCC channel
    Revert "ACPICA: FADT support cleanup"

    Linus Torvalds
     
  • Pull kbuild fixes from Michal Marek:
    "Here are some regression fixes for kbuild:

    - modversion support for exported asm symbols (Nick Piggin). The
    affected architectures need separate patches adding
    asm-prototypes.h.

    - fix rebuilds of lib-ksyms.o (Nick Piggin)

    - -fno-PIE builds (Sebastian Siewior and Borislav Petkov). This is
    not a kernel regression, but one of the Debian gcc package.
    Nevertheless, it's quite annoying, so I think it should go into
    mainline and stable now"

    * 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kbuild: Steal gcc's pie from the very beginning
    kbuild: be more careful about matching preprocessed asm ___EXPORT_SYMBOL
    x86/kexec: add -fno-PIE
    scripts/has-stack-protector: add -fno-PIE
    kbuild: add -fno-PIE
    kbuild: modversions for EXPORT_SYMBOL() for asm
    kbuild: prevent lib-ksyms.o rebuilds

    Linus Torvalds
     
  • Pull nfsd bugfix from Bruce Fields:
    "Just one fix for an NFS/RDMA crash"

    * tag 'nfsd-4.9-2' of git://linux-nfs.org/~bfields/linux:
    sunrpc: svc_age_temp_xprts_now should not call setsockopt non-tcp transports

    Linus Torvalds
     
  • Mark me as a co-maintainer of LED subsystem.

    Signed-off-by: Pavel Machek
    Signed-off-by: Jacek Anaszewski

    Pavel Machek