Permalink
Commits on May 17, 2017
Commits on May 16, 2017
  1. add 28c, 28r, & 35r overlays

    toddtreece committed May 16, 2017
  2. add ft6x06_ts support

    toddtreece committed May 16, 2017
  3. update touchscreen STMPE driver

    ladyada committed May 16, 2017
  4. add 28c to overlay makefile

    toddtreece committed May 16, 2017
  5. add pitft28c overlay

    toddtreece committed May 16, 2017
  6. BCM270X: Drop position requirement for CMA in VC4 overlay.

    anholt committed with popcornmix May 15, 2017
    No longer necessary since 2aefcd5,
    and will probably let peeople that want to choose a larger CMA
    allocation (particularly on pi0/1).
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
  7. drm/vc4: Mark the device as active when enabling runtime PM.

    anholt committed with popcornmix May 15, 2017
    Failing to do so meant that we got a resume() callback on first use of
    the device, so we would leak the bin BO that we allocated during
    probe.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Fixes: 553c942 ("drm/vc4: Allow using more than 256MB of CMA memory.")
Commits on May 15, 2017
  1. dwc_otg: remove unnecessary dma-mode channel halts on disconnect inte…

    P33M committed with popcornmix May 15, 2017
    …rrupt
    
    Host channels are already halted in kill_urbs_in_qh_list() with the
    subsequent interrupt processing behaving as if the URB was dequeued
    via HCD callback.
    
    There's no need to clobber the host channel registers a second time
    as this exposes races between the driver and host channel resulting
    in hcd->free_hc_list becoming corrupted.
  2. dwc_otg: delete hcd->channel_lock

    P33M committed with popcornmix May 15, 2017
    The lock serves no purpose as it is only held while the HCD spinlock
    is already being held.
  3. dwc_otg: fix several potential crash sources

    P33M committed with popcornmix May 12, 2017
    On root port disconnect events, the host driver state is cleared and
    in-progress host channels are forcibly stopped. This doesn't play
    well with the FIQ running in the background, so:
    - Guard the disconnect callback with both the host spinlock and FIQ
      spinlock
    - Move qtd dereference in dwc_otg_handle_hc_fsm() after the early-out
      so we don't dereference a qtd that has gone away
    - Turn catch-all BUG()s in dwc_otg_handle_hc_fsm() into warnings.
Commits on May 14, 2017
  1. Linux 4.9.28

    gregkh committed May 14, 2017
  2. block: get rid of blk_integrity_revalidate()

    idryomov committed with gregkh Apr 18, 2017
    commit 19b7ccf upstream.
    
    Commit 25520d5 ("block: Inline blk_integrity in struct gendisk")
    introduced blk_integrity_revalidate(), which seems to assume ownership
    of the stable pages flag and unilaterally clears it if no blk_integrity
    profile is registered:
    
        if (bi->profile)
                disk->queue->backing_dev_info->capabilities |=
                        BDI_CAP_STABLE_WRITES;
        else
                disk->queue->backing_dev_info->capabilities &=
                        ~BDI_CAP_STABLE_WRITES;
    
    It's called from revalidate_disk() and rescan_partitions(), making it
    impossible to enable stable pages for drivers that support partitions
    and don't use blk_integrity: while the call in revalidate_disk() can be
    trivially worked around (see zram, which doesn't support partitions and
    hence gets away with zram_revalidate_disk()), rescan_partitions() can
    be triggered from userspace at any time.  This breaks rbd, where the
    ceph messenger is responsible for generating/verifying CRCs.
    
    Since blk_integrity_{un,}register() "must" be used for (un)registering
    the integrity profile with the block layer, move BDI_CAP_STABLE_WRITES
    setting there.  This way drivers that call blk_integrity_register() and
    use integrity infrastructure won't interfere with drivers that don't
    but still want stable pages.
    
    Fixes: 25520d5 ("block: Inline blk_integrity in struct gendisk")
    Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Mike Snitzer <snitzer@redhat.com>
    Tested-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    [idryomov@gmail.com: backport to < 4.11: bdi is embedded in queue]
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  3. drm/ttm: fix use-after-free races in vm fault handling

    Nicolai Hähnle committed with gregkh Feb 18, 2017
    commit 3089c1d upstream.
    
    The vm fault handler relies on the fact that the VMA owns a reference
    to the BO. However, once mmap_sem is released, other tasks are free to
    destroy the VMA, which can lead to the BO being freed. Fix two code
    paths where that can happen, both related to vm fault retries.
    
    Found via a lock debugging warning which flagged &bo->wu_mutex as
    locked while being destroyed.
    
    Fixes: cbe12e7 ("drm/ttm: Allow vm fault retries")
    Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  4. wlcore: Add RX_BA_WIN_SIZE_CHANGE_EVENT event

    Maxim Altshul committed with gregkh Aug 21, 2016
    commit e7ee74b upstream.
    
    This event is used by the Firmware to limit the RX BA win size
    for a specific link.
    
    The event handler updates the new size in the mac's sta->sta struct.
    
    BA sessions opened for that link will use the new restricted
    win_size. This limitation remains until a new update is received or
    until the link is closed.
    
    Signed-off-by: Maxim Altshul <maxim.altshul@ti.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  5. wlcore: Pass win_size taken from ieee80211_sta to FW

    Maxim Altshul committed with gregkh Aug 21, 2016
    commit 42c7372 upstream.
    
    When starting a new BA session, we must pass the win_size to the FW.
    
    To do this we take max_rx_aggregation_subframes (BA RX win size)
    which is stored in ieee80211_sta structure (e.g per link and not per HW)
    
    We will use the value stored per link when passing the win_size to
    firmware through the ACX_BA_SESSION_RX_SETUP command.
    
    Signed-off-by: Maxim Altshul <maxim.altshul@ti.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  6. xen: Revert commits da72ff5 and 72a9b18

    Boris Ostrovsky committed with gregkh Apr 24, 2017
    commit 84d582d upstream.
    
    Recent discussion (http://marc.info/?l=xen-devel&m=149192184523741)
    established that commit 72a9b18 ("xen: Remove event channel
    notification through Xen PCI platform device") (and thus commit
    da72ff5 ("partially revert "xen: Remove event channel
    notification through Xen PCI platform device"")) are unnecessary and,
    in fact, prevent HVM guests from booting on Xen releases prior to 4.0
    
    Therefore we revert both of those commits.
    
    The summary of that discussion is below:
    
      Here is the brief summary of the current situation:
    
      Before the offending commit (72a9b18):
    
      1) INTx does not work because of the reset_watches path.
      2) The reset_watches path is only taken if you have Xen > 4.0
      3) The Linux Kernel by default will use vector inject if the hypervisor
         support. So even INTx does not work no body running the kernel with
         Xen > 4.0 would notice. Unless he explicitly disabled this feature
         either in the kernel or in Xen (and this can only be disabled by
         modifying the code, not user-supported way to do it).
    
      After the offending commit (+ partial revert):
    
      1) INTx is no longer support for HVM (only for PV guests).
      2) Any HVM guest The kernel will not boot on Xen < 4.0 which does
         not have vector injection support. Since the only other mode
         supported is INTx which.
    
      So based on this summary, I think before commit (72a9b18) we were
      in much better position from a user point of view.
    
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: x86@kernel.org
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Stefano Stabellini <sstabellini@kernel.org>
    Cc: Julien Grall <julien.grall@arm.com>
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Ross Lagerwall <ross.lagerwall@citrix.com>
    Cc: xen-devel@lists.xenproject.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-pci@vger.kernel.org
    Cc: Anthony Liguori <aliguori@amazon.com>
    Cc: KarimAllah Ahmed <karahmed@amazon.de>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  7. f2fs: sanity check segment count

    Jin Qian committed with gregkh Apr 25, 2017
    commit b9dd461 upstream.
    
    F2FS uses 4 bytes to represent block address. As a result, supported
    size of disk is 16 TB and it equals to 16 * 1024 * 1024 / 2 segments.
    
    Signed-off-by: Jin Qian <jinqian@google.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  8. net: mdio-mux: bcm-iproc: call mdiobus_free() in error path

    Jon Mason committed with gregkh May 8, 2017
    [ Upstream commit 922c60e ]
    
    If an error is encountered in mdio_mux_init(), the error path will call
    mdiobus_free().  Since mdiobus_register() has been called prior to
    mdio_mux_init(), the bus->state will not be MDIOBUS_UNREGISTERED.  This
    causes a BUG_ON() in mdiobus_free().  To correct this issue, add an
    error path for mdio_mux_init() which calls mdiobus_unregister() prior to
    mdiobus_free().
    
    Signed-off-by: Jon Mason <jon.mason@broadcom.com>
    Fixes: 98bc865 ("net: mdio-mux: Add MDIO mux driver for iProc SoCs")
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  9. bpf: don't let ldimm64 leak map addresses on unprivileged

    borkmann committed with gregkh May 7, 2017
    [ Upstream commit 0d0e576 ]
    
    The patch fixes two things at once:
    
    1) It checks the env->allow_ptr_leaks and only prints the map address to
       the log if we have the privileges to do so, otherwise it just dumps 0
       as we would when kptr_restrict is enabled on %pK. Given the latter is
       off by default and not every distro sets it, I don't want to rely on
       this, hence the 0 by default for unprivileged.
    
    2) Printing of ldimm64 in the verifier log is currently broken in that
       we don't print the full immediate, but only the 32 bit part of the
       first insn part for ldimm64. Thus, fix this up as well; it's okay to
       access, since we verified all ldimm64 earlier already (including just
       constants) through replace_map_fd_with_map_ptr().
    
    Fixes: 1be7f75 ("bpf: enable non-root eBPF programs")
    Fixes: cbd3570 ("bpf: verifier (add ability to receive verification log)")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  10. bnxt_en: allocate enough space for ->ntp_fltr_bmap

    Dan Carpenter committed with gregkh May 6, 2017
    [ Upstream commit ac45bd9 ]
    
    We have the number of longs, but we need to calculate the number of
    bytes required.
    
    Fixes: c0c050c ("bnxt_en: New Broadcom ethernet driver.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  11. ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf

    congwang committed with gregkh May 8, 2017
    [ Upstream commit 242d3a4 ]
    
    For each netns (except init_net), we initialize its null entry
    in 3 places:
    
    1) The template itself, as we use kmemdup()
    2) Code around dst_init_metrics() in ip6_route_net_init()
    3) ip6_route_dev_notify(), which is supposed to initialize it after
       loopback registers
    
    Unfortunately the last one still happens in a wrong order because
    we expect to initialize net->ipv6.ip6_null_entry->rt6i_idev to
    net->loopback_dev's idev, thus we have to do that after we add
    idev to loopback. However, this notifier has priority == 0 same as
    ipv6_dev_notf, and ipv6_dev_notf is registered after
    ip6_route_dev_notifier so it is called actually after
    ip6_route_dev_notifier. This is similar to commit 2f46093
    ("ipv6: initialize route null entry in addrconf_init()") which
    fixes init_net.
    
    Fix it by picking a smaller priority for ip6_route_dev_notifier.
    Also, we have to release the refcnt accordingly when unregistering
    loopback_dev because device exit functions are called before subsys
    exit functions.
    
    Acked-by: David Ahern <dsahern@gmail.com>
    Tested-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  12. ipv6: initialize route null entry in addrconf_init()

    congwang committed with gregkh May 4, 2017
    [ Upstream commit 2f46093 ]
    
    Andrey reported a crash on init_net.ipv6.ip6_null_entry->rt6i_idev
    since it is always NULL.
    
    This is clearly wrong, we have code to initialize it to loopback_dev,
    unfortunately the order is still not correct.
    
    loopback_dev is registered very early during boot, we lose a chance
    to re-initialize it in notifier. addrconf_init() is called after
    ip6_route_init(), which means we have no chance to correct it.
    
    Fix it by moving this initialization explicitly after
    ipv6_add_dev(init_net.loopback_dev) in addrconf_init().
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  13. rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string

    michich committed with gregkh May 4, 2017
    [ Upstream commit 77ef033 ]
    
    IFLA_PHYS_PORT_NAME is a string attribute, so terminate it with \0.
    Otherwise libnl3 fails to validate netlink messages with this attribute.
    "ip -detail a" assumes too that the attribute is NUL-terminated when
    printing it. It often was, due to padding.
    
    I noticed this as libvirtd failing to start on a system with sfc driver
    after upgrading it to Linux 4.11, i.e. when sfc added support for
    phys_port_name.
    
    Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  14. ipv4, ipv6: ensure raw socket message is big enough to hold an IP header

    ramosian-glider committed with gregkh May 3, 2017
    [ Upstream commit 86f4c90 ]
    
    raw_send_hdrinc() and rawv6_send_hdrinc() expect that the buffer copied
    from the userspace contains the IPv4/IPv6 header, so if too few bytes are
    copied, parts of the header may remain uninitialized.
    
    This bug has been detected with KMSAN.
    
    For the record, the KMSAN report:
    
    ==================================================================
    BUG: KMSAN: use of unitialized memory in nf_ct_frag6_gather+0xf5a/0x44a0
    inter: 0
    CPU: 0 PID: 1036 Comm: probe Not tainted 4.11.0-rc5+ #2455
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16
     dump_stack+0x143/0x1b0 lib/dump_stack.c:52
     kmsan_report+0x16b/0x1e0 mm/kmsan/kmsan.c:1078
     __kmsan_warning_32+0x5c/0xa0 mm/kmsan/kmsan_instr.c:510
     nf_ct_frag6_gather+0xf5a/0x44a0 net/ipv6/netfilter/nf_conntrack_reasm.c:577
     ipv6_defrag+0x1d9/0x280 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:68
     nf_hook_entry_hookfn ./include/linux/netfilter.h:102
     nf_hook_slow+0x13f/0x3c0 net/netfilter/core.c:310
     nf_hook ./include/linux/netfilter.h:212
     NF_HOOK ./include/linux/netfilter.h:255
     rawv6_send_hdrinc net/ipv6/raw.c:673
     rawv6_sendmsg+0x2fcb/0x41a0 net/ipv6/raw.c:919
     inet_sendmsg+0x3f8/0x6d0 net/ipv4/af_inet.c:762
     sock_sendmsg_nosec net/socket.c:633
     sock_sendmsg net/socket.c:643
     SYSC_sendto+0x6a5/0x7c0 net/socket.c:1696
     SyS_sendto+0xbc/0xe0 net/socket.c:1664
     do_syscall_64+0x72/0xa0 arch/x86/entry/common.c:285
     entry_SYSCALL64_slow_path+0x25/0x25 arch/x86/entry/entry_64.S:246
    RIP: 0033:0x436e03
    RSP: 002b:00007ffce48baf38 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00000000004002b0 RCX: 0000000000436e03
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
    RBP: 00007ffce48baf90 R08: 00007ffce48baf50 R09: 000000000000001c
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000401790 R14: 0000000000401820 R15: 0000000000000000
    origin: 00000000d9400053
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:362
     kmsan_internal_poison_shadow+0xb1/0x1a0 mm/kmsan/kmsan.c:257
     kmsan_poison_shadow+0x6d/0xc0 mm/kmsan/kmsan.c:270
     slab_alloc_node mm/slub.c:2735
     __kmalloc_node_track_caller+0x1f4/0x390 mm/slub.c:4341
     __kmalloc_reserve net/core/skbuff.c:138
     __alloc_skb+0x2cd/0x740 net/core/skbuff.c:231
     alloc_skb ./include/linux/skbuff.h:933
     alloc_skb_with_frags+0x209/0xbc0 net/core/skbuff.c:4678
     sock_alloc_send_pskb+0x9ff/0xe00 net/core/sock.c:1903
     sock_alloc_send_skb+0xe4/0x100 net/core/sock.c:1920
     rawv6_send_hdrinc net/ipv6/raw.c:638
     rawv6_sendmsg+0x2918/0x41a0 net/ipv6/raw.c:919
     inet_sendmsg+0x3f8/0x6d0 net/ipv4/af_inet.c:762
     sock_sendmsg_nosec net/socket.c:633
     sock_sendmsg net/socket.c:643
     SYSC_sendto+0x6a5/0x7c0 net/socket.c:1696
     SyS_sendto+0xbc/0xe0 net/socket.c:1664
     do_syscall_64+0x72/0xa0 arch/x86/entry/common.c:285
     return_from_SYSCALL_64+0x0/0x6a arch/x86/entry/entry_64.S:246
    ==================================================================
    
    , triggered by the following syscalls:
      socket(PF_INET6, SOCK_RAW, IPPROTO_RAW) = 3
      sendto(3, NULL, 0, 0, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6, "ff00::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EPERM
    
    A similar report is triggered in net/ipv4/raw.c if we use a PF_INET socket
    instead of a PF_INET6 one.
    
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  15. tcp: do not inherit fastopen_req from parent

    Eric Dumazet committed with gregkh May 3, 2017
    [ Upstream commit 8b485ce ]
    
    Under fuzzer stress, it is possible that a child gets a non NULL
    fastopen_req pointer from its parent at accept() time, when/if parent
    morphs from listener to active session.
    
    We need to make sure this can not happen, by clearing the field after
    socket cloning.
    
    BUG: Double free or freeing an invalid pointer
    Unexpected shadow byte: 0xFB
    CPU: 3 PID: 20933 Comm: syz-executor3 Not tainted 4.11.0+ #306
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
    01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x292/0x395 lib/dump_stack.c:52
     kasan_object_err+0x1c/0x70 mm/kasan/report.c:164
     kasan_report_double_free+0x5c/0x70 mm/kasan/report.c:185
     kasan_slab_free+0x9d/0xc0 mm/kasan/kasan.c:580
     slab_free_hook mm/slub.c:1357 [inline]
     slab_free_freelist_hook mm/slub.c:1379 [inline]
     slab_free mm/slub.c:2961 [inline]
     kfree+0xe8/0x2b0 mm/slub.c:3882
     tcp_free_fastopen_req net/ipv4/tcp.c:1077 [inline]
     tcp_disconnect+0xc15/0x13e0 net/ipv4/tcp.c:2328
     inet_child_forget+0xb8/0x600 net/ipv4/inet_connection_sock.c:898
     inet_csk_reqsk_queue_add+0x1e7/0x250
    net/ipv4/inet_connection_sock.c:928
     tcp_get_cookie_sock+0x21a/0x510 net/ipv4/syncookies.c:217
     cookie_v4_check+0x1a19/0x28b0 net/ipv4/syncookies.c:384
     tcp_v4_cookie_check net/ipv4/tcp_ipv4.c:1384 [inline]
     tcp_v4_do_rcv+0x731/0x940 net/ipv4/tcp_ipv4.c:1421
     tcp_v4_rcv+0x2dc0/0x31c0 net/ipv4/tcp_ipv4.c:1715
     ip_local_deliver_finish+0x4cc/0xc20 net/ipv4/ip_input.c:216
     NF_HOOK include/linux/netfilter.h:257 [inline]
     ip_local_deliver+0x1ce/0x700 net/ipv4/ip_input.c:257
     dst_input include/net/dst.h:492 [inline]
     ip_rcv_finish+0xb1d/0x20b0 net/ipv4/ip_input.c:396
     NF_HOOK include/linux/netfilter.h:257 [inline]
     ip_rcv+0xd8c/0x19c0 net/ipv4/ip_input.c:487
     __netif_receive_skb_core+0x1ad1/0x3400 net/core/dev.c:4210
     __netif_receive_skb+0x2a/0x1a0 net/core/dev.c:4248
     process_backlog+0xe5/0x6c0 net/core/dev.c:4868
     napi_poll net/core/dev.c:5270 [inline]
     net_rx_action+0xe70/0x18e0 net/core/dev.c:5335
     __do_softirq+0x2fb/0xb99 kernel/softirq.c:284
     do_softirq_own_stack+0x1c/0x30 arch/x86/entry/entry_64.S:899
     </IRQ>
     do_softirq.part.17+0x1e8/0x230 kernel/softirq.c:328
     do_softirq kernel/softirq.c:176 [inline]
     __local_bh_enable_ip+0x1cf/0x1e0 kernel/softirq.c:181
     local_bh_enable include/linux/bottom_half.h:31 [inline]
     rcu_read_unlock_bh include/linux/rcupdate.h:931 [inline]
     ip_finish_output2+0x9ab/0x15e0 net/ipv4/ip_output.c:230
     ip_finish_output+0xa35/0xdf0 net/ipv4/ip_output.c:316
     NF_HOOK_COND include/linux/netfilter.h:246 [inline]
     ip_output+0x1f6/0x7b0 net/ipv4/ip_output.c:404
     dst_output include/net/dst.h:486 [inline]
     ip_local_out+0x95/0x160 net/ipv4/ip_output.c:124
     ip_queue_xmit+0x9a8/0x1a10 net/ipv4/ip_output.c:503
     tcp_transmit_skb+0x1ade/0x3470 net/ipv4/tcp_output.c:1057
     tcp_write_xmit+0x79e/0x55b0 net/ipv4/tcp_output.c:2265
     __tcp_push_pending_frames+0xfa/0x3a0 net/ipv4/tcp_output.c:2450
     tcp_push+0x4ee/0x780 net/ipv4/tcp.c:683
     tcp_sendmsg+0x128d/0x39b0 net/ipv4/tcp.c:1342
     inet_sendmsg+0x164/0x5b0 net/ipv4/af_inet.c:762
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     SYSC_sendto+0x660/0x810 net/socket.c:1696
     SyS_sendto+0x40/0x50 net/socket.c:1664
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    RIP: 0033:0x446059
    RSP: 002b:00007faa6761fb58 EFLAGS: 00000282 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 0000000000000017 RCX: 0000000000446059
    RDX: 0000000000000001 RSI: 0000000020ba3fcd RDI: 0000000000000017
    RBP: 00000000006e40a0 R08: 0000000020ba4ff0 R09: 0000000000000010
    R10: 0000000020000000 R11: 0000000000000282 R12: 0000000000708150
    R13: 0000000000000000 R14: 00007faa676209c0 R15: 00007faa67620700
    Object at ffff88003b5bbcb8, in cache kmalloc-64 size: 64
    Allocated:
    PID = 20909
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:513
     set_track mm/kasan/kasan.c:525 [inline]
     kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:616
     kmem_cache_alloc_trace+0x82/0x270 mm/slub.c:2745
     kmalloc include/linux/slab.h:490 [inline]
     kzalloc include/linux/slab.h:663 [inline]
     tcp_sendmsg_fastopen net/ipv4/tcp.c:1094 [inline]
     tcp_sendmsg+0x221a/0x39b0 net/ipv4/tcp.c:1139
     inet_sendmsg+0x164/0x5b0 net/ipv4/af_inet.c:762
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     SYSC_sendto+0x660/0x810 net/socket.c:1696
     SyS_sendto+0x40/0x50 net/socket.c:1664
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    Freed:
    PID = 20909
     save_stack_trace+0x16/0x20 arch/x86/kernel/stacktrace.c:59
     save_stack+0x43/0xd0 mm/kasan/kasan.c:513
     set_track mm/kasan/kasan.c:525 [inline]
     kasan_slab_free+0x73/0xc0 mm/kasan/kasan.c:589
     slab_free_hook mm/slub.c:1357 [inline]
     slab_free_freelist_hook mm/slub.c:1379 [inline]
     slab_free mm/slub.c:2961 [inline]
     kfree+0xe8/0x2b0 mm/slub.c:3882
     tcp_free_fastopen_req net/ipv4/tcp.c:1077 [inline]
     tcp_disconnect+0xc15/0x13e0 net/ipv4/tcp.c:2328
     __inet_stream_connect+0x20c/0xf90 net/ipv4/af_inet.c:593
     tcp_sendmsg_fastopen net/ipv4/tcp.c:1111 [inline]
     tcp_sendmsg+0x23a8/0x39b0 net/ipv4/tcp.c:1139
     inet_sendmsg+0x164/0x5b0 net/ipv4/af_inet.c:762
     sock_sendmsg_nosec net/socket.c:633 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:643
     SYSC_sendto+0x660/0x810 net/socket.c:1696
     SyS_sendto+0x40/0x50 net/socket.c:1664
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Fixes: e994b2f ("tcp: do not lock listener to process SYN packets")
    Fixes: 7db9236 ("tcp: fix potential double free issue for fastopen_req")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  16. net: usb: qmi_wwan: add Telit ME910 support

    dnlplm committed with gregkh May 3, 2017
    [ Upstream commit 4c54dc0 ]
    
    This patch adds support for Telit ME910 PID 0x1100.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  17. net: ipv6: Do not duplicate DAD on link up

    dsahern committed with gregkh May 2, 2017
    [ Upstream commit 6d71713 ]
    
    Andrey reported a warning triggered by the rcu code:
    
    ------------[ cut here ]------------
    WARNING: CPU: 1 PID: 5911 at lib/debugobjects.c:289
    debug_print_object+0x175/0x210
    ODEBUG: activate active (active state 1) object type: rcu_head hint:
            (null)
    Modules linked in:
    CPU: 1 PID: 5911 Comm: a.out Not tainted 4.11.0-rc8+ #271
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16
     dump_stack+0x192/0x22d lib/dump_stack.c:52
     __warn+0x19f/0x1e0 kernel/panic.c:549
     warn_slowpath_fmt+0xe0/0x120 kernel/panic.c:564
     debug_print_object+0x175/0x210 lib/debugobjects.c:286
     debug_object_activate+0x574/0x7e0 lib/debugobjects.c:442
     debug_rcu_head_queue kernel/rcu/rcu.h:75
     __call_rcu.constprop.76+0xff/0x9c0 kernel/rcu/tree.c:3229
     call_rcu_sched+0x12/0x20 kernel/rcu/tree.c:3288
     rt6_rcu_free net/ipv6/ip6_fib.c:158
     rt6_release+0x1ea/0x290 net/ipv6/ip6_fib.c:188
     fib6_del_route net/ipv6/ip6_fib.c:1461
     fib6_del+0xa42/0xdc0 net/ipv6/ip6_fib.c:1500
     __ip6_del_rt+0x100/0x160 net/ipv6/route.c:2174
     ip6_del_rt+0x140/0x1b0 net/ipv6/route.c:2187
     __ipv6_ifa_notify+0x269/0x780 net/ipv6/addrconf.c:5520
     addrconf_ifdown+0xe60/0x1a20 net/ipv6/addrconf.c:3672
    ...
    
    Andrey's reproducer program runs in a very tight loop, calling
    'unshare -n' and then spawning 2 sets of 14 threads running random ioctl
    calls. The relevant networking sequence:
    
    1. New network namespace created via unshare -n
    - ip6tnl0 device is created in down state
    
    2. address added to ip6tnl0
    - equivalent to ip -6 addr add dev ip6tnl0 fd00::bb/1
    - DAD is started on the address and when it completes the host
      route is inserted into the FIB
    
    3. ip6tnl0 is brought up
    - the new fixup_permanent_addr function restarts DAD on the address
    
    4. exit namespace
    - teardown / cleanup sequence starts
    - once in a blue moon, lo teardown appears to happen BEFORE teardown
      of ip6tunl0
      + down on 'lo' removes the host route from the FIB since the dst->dev
        for the route is loobback
      + host route added to rcu callback list
        * rcu callback has not run yet, so rt is NOT on the gc list so it has
          NOT been marked obsolete
    
    5. in parallel to 4. worker_thread runs addrconf_dad_completed
    - DAD on the address on ip6tnl0 completes
    - calls ipv6_ifa_notify which inserts the host route
    
    All of that happens very quickly. The result is that a host route that
    has been deleted from the IPv6 FIB and added to the RCU list is re-inserted
    into the FIB.
    
    The exit namespace eventually gets to cleaning up ip6tnl0 which removes the
    host route from the FIB again, calls the rcu function for cleanup -- and
    triggers the double rcu trace.
    
    The root cause is duplicate DAD on the address -- steps 2 and 3. Arguably,
    DAD should not be started in step 2. The interface is in the down state,
    so it can not really send out requests for the address which makes starting
    DAD pointless.
    
    Since the second DAD was introduced by a recent change, seems appropriate
    to use it for the Fixes tag and have the fixup function only start DAD for
    addresses in the PREDAD state which occurs in addrconf_ifdown if the
    address is retained.
    
    Big thanks to Andrey for isolating a reliable reproducer for this problem.
    Fixes: f1705ec ("net: ipv6: Make address flushing on ifdown optional")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  18. tcp: fix wraparound issue in tcp_lp

    Eric Dumazet committed with gregkh May 1, 2017
    [ Upstream commit a9f11f9 ]
    
    Be careful when comparing tcp_time_stamp to some u32 quantity,
    otherwise result can be surprising.
    
    Fixes: 7c106d7 ("[TCP]: TCP Low Priority congestion control")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  19. bpf, arm64: fix jit branch offset related to ldimm64

    borkmann committed with gregkh May 2, 2017
    [ Upstream commit ddc665a ]
    
    When the instruction right before the branch destination is
    a 64 bit load immediate, we currently calculate the wrong
    jump offset in the ctx->offset[] array as we only account
    one instruction slot for the 64 bit load immediate although
    it uses two BPF instructions. Fix it up by setting the offset
    into the right slot after we incremented the index.
    
    Before (ldimm64 test 1):
    
      [...]
      00000020:  52800007  mov w7, #0x0 // #0
      00000024:  d2800060  mov x0, #0x3 // #3
      00000028:  d2800041  mov x1, #0x2 // #2
      0000002c:  eb01001f  cmp x0, x1
      00000030:  54ffff82  b.cs 0x00000020
      00000034:  d29fffe7  mov x7, #0xffff // #65535
      00000038:  f2bfffe7  movk x7, #0xffff, lsl #16
      0000003c:  f2dfffe7  movk x7, #0xffff, lsl #32
      00000040:  f2ffffe7  movk x7, #0xffff, lsl #48
      00000044:  d29dddc7  mov x7, #0xeeee // #61166
      00000048:  f2bdddc7  movk x7, #0xeeee, lsl #16
      0000004c:  f2ddddc7  movk x7, #0xeeee, lsl #32
      00000050:  f2fdddc7  movk x7, #0xeeee, lsl #48
      [...]
    
    After (ldimm64 test 1):
    
      [...]
      00000020:  52800007  mov w7, #0x0 // #0
      00000024:  d2800060  mov x0, #0x3 // #3
      00000028:  d2800041  mov x1, #0x2 // #2
      0000002c:  eb01001f  cmp x0, x1
      00000030:  540000a2  b.cs 0x00000044
      00000034:  d29fffe7  mov x7, #0xffff // #65535
      00000038:  f2bfffe7  movk x7, #0xffff, lsl #16
      0000003c:  f2dfffe7  movk x7, #0xffff, lsl #32
      00000040:  f2ffffe7  movk x7, #0xffff, lsl #48
      00000044:  d29dddc7  mov x7, #0xeeee // #61166
      00000048:  f2bdddc7  movk x7, #0xeeee, lsl #16
      0000004c:  f2ddddc7  movk x7, #0xeeee, lsl #32
      00000050:  f2fdddc7  movk x7, #0xeeee, lsl #48
      [...]
    
    Also, add a couple of test cases to make sure JITs pass
    this test. Tested on Cavium ThunderX ARMv8. The added
    test cases all pass after the fix.
    
    Fixes: 8eee539 ("arm64: bpf: fix out-of-bounds read in bpf2a64_offset()")
    Reported-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Cc: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  20. bpf: enhance verifier to understand stack pointer arithmetic

    Yonghong Song committed with gregkh Apr 30, 2017
    [ Upstream commit 332270f ]
    
    llvm 4.0 and above generates the code like below:
    ....
    440: (b7) r1 = 15
    441: (05) goto pc+73
    515: (79) r6 = *(u64 *)(r10 -152)
    516: (bf) r7 = r10
    517: (07) r7 += -112
    518: (bf) r2 = r7
    519: (0f) r2 += r1
    520: (71) r1 = *(u8 *)(r8 +0)
    521: (73) *(u8 *)(r2 +45) = r1
    ....
    and the verifier complains "R2 invalid mem access 'inv'" for insn #521.
    This is because verifier marks register r2 as unknown value after #519
    where r2 is a stack pointer and r1 holds a constant value.
    
    Teach verifier to recognize "stack_ptr + imm" and
    "stack_ptr + reg with const val" as valid stack_ptr with new offset.
    
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  21. tcp: do not underestimate skb->truesize in tcp_trim_head()

    Eric Dumazet committed with gregkh Apr 27, 2017
    [ Upstream commit 7162fb2 ]
    
    Andrey found a way to trigger the WARN_ON_ONCE(delta < len) in
    skb_try_coalesce() using syzkaller and a filter attached to a TCP
    socket over loopback interface.
    
    I believe one issue with looped skbs is that tcp_trim_head() can end up
    producing skb with under estimated truesize.
    
    It hardly matters for normal conditions, since packets sent over
    loopback are never truncated.
    
    Bytes trimmed from skb->head should not change skb truesize, since
    skb->head is not reallocated.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>