commit b22a1fa1b34f17ef3a5cc6007e0705375de3d5dd
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Apr 12 12:31:21 2018 +0200

    Linux 4.15.17

commit 9e6ee870ad5ae59432fa0d87bbbe04d12de0e501
Author: Moshe Shemesh <moshe@mellanox.com>
Date:   Tue Mar 27 14:41:19 2018 +0300

    net/mlx4_core: Fix memory leak while delete slave's resources
    
    
    [ Upstream commit 461d5f1b59490ce0096dfda45e10038c122a7892 ]
    
    mlx4_delete_all_resources_for_slave in resource tracker should free all
    memory allocated for a slave.
    While releasing memory of fs_rule, it misses releasing memory of
    fs_rule->mirr_mbox.
    
    Fixes: 78efed275117 ('net/mlx4_core: Support mirroring VF DMFS rules on both ports')
    Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94f1b8485ce3e6fd0b736ae7c671838eaee2c21c
Author: Jason Wang <jasowang@redhat.com>
Date:   Mon Mar 26 16:10:23 2018 +0800

    vhost_net: add missing lock nesting notation
    
    
    [ Upstream commit aaa3149bbee9ba9b4e6f0bd6e3e7d191edeae942 ]
    
    We try to hold TX virtqueue mutex in vhost_net_rx_peek_head_len()
    after RX virtqueue mutex is held in handle_rx(). This requires an
    appropriate lock nesting notation to calm down deadlock detector.
    
    Fixes: 0308813724606 ("vhost_net: basic polling support")
    Reported-by: syzbot+7f073540b1384a614e09@syzkaller.appspotmail.com
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a17ab0a5c81cd646d7cc14e54dd97aa1205e3ab4
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Mar 26 01:25:06 2018 +0800

    team: move dev_mc_sync after master_upper_dev_link in team_port_add
    
    
    [ Upstream commit 982cf3b3999d39a2eaca0a65542df33c19b5d814 ]
    
    The same fix as in 'bonding: move dev_mc_sync after master_upper_dev_link
    in bond_enslave' is needed for team driver.
    
    The panic can be reproduced easily:
    
      ip link add team1 type team
      ip link set team1 up
      ip link add link team1 vlan1 type vlan id 80
      ip link set vlan1 master team1
    
    Fixes: cb41c997d444 ("team: team should sync the port's uc/mc addrs when add a port")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f9e7b328bffb71c41e2b26fd2984b6f3e3e0527
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Apr 1 22:40:35 2018 +0800

    route: check sysctl_fib_multipath_use_neigh earlier than hash
    
    
    [ Upstream commit 6174a30df1b902e1fedbd728f5343937e83e64e6 ]
    
    Prior to this patch, when one packet is hashed into path [1]
    (hash <= nh_upper_bound) and it's neigh is dead, it will try
    path [2]. However, if path [2]'s neigh is alive but it's
    hash > nh_upper_bound, it will not return this alive path.
    This packet will never be sent even if path [2] is alive.
    
     3.3.3.1/24:
      nexthop via 1.1.1.254 dev eth1 weight 1 <--[1] (dead neigh)
      nexthop via 2.2.2.254 dev eth2 weight 1 <--[2]
    
    With sysctl_fib_multipath_use_neigh set is supposed to find an
    available path respecting to the l3/l4 hash. But if there is
    no available route with this hash, it should at least return
    an alive route even with other hash.
    
    This patch is to fix it by processing fib_multipath_use_neigh
    earlier than the hash check, so that it will at least return
    an alive route if there is when fib_multipath_use_neigh is
    enabled. It's also compatible with before when there are alive
    routes with the l3/l4 hash.
    
    Fixes: a6db4494d218 ("net: ipv4: Consider failed nexthops in multipath routes")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: David Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13ed54d5252e2b2651e96f9c11071b5c78bd37fe
Author: Jason Wang <jasowang@redhat.com>
Date:   Thu Mar 29 16:00:04 2018 +0800

    vhost: validate log when IOTLB is enabled
    
    
    [ Upstream commit d65026c6c62e7d9616c8ceb5a53b68bcdc050525 ]
    
    Vq log_base is the userspace address of bitmap which has nothing to do
    with IOTLB. So it needs to be validated unconditionally otherwise we
    may try use 0 as log_base which may lead to pin pages that will lead
    unexpected result (e.g trigger BUG_ON() in set_bit_to_user()).
    
    Fixes: 6b1e6cc7855b0 ("vhost: new device IOTLB API")
    Reported-by: syzbot+6304bf97ef436580fede@syzkaller.appspotmail.com
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2030a5c0ab139208e33b7137ded115ff705dcfdb
Author: Roi Dayan <roid@mellanox.com>
Date:   Wed Feb 28 12:56:42 2018 +0200

    net/mlx5e: Fix traffic being dropped on VF representor
    
    
    [ Upstream commit 4246f698dd58e3c6246fa919ef0b0a1d29a57e4a ]
    
    Increase representor netdev RQ size to avoid dropped packets.
    The current size (two) is just too small to keep up with
    conventional slow path traffic patterns.
    Also match the SQ size to the RQ size.
    
    Fixes: cb67b832921c ("net/mlx5e: Introduce SRIOV VF representors")
    Signed-off-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Paul Blakey <paulb@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b9260fb6f35d6865890ba75e90a77dbe9cf1a82
Author: Eran Ben Elisha <eranbe@mellanox.com>
Date:   Tue Mar 27 14:41:18 2018 +0300

    net/mlx4_en: Fix mixed PFC and Global pause user control requests
    
    
    [ Upstream commit 6e8814ceb7e8f468659ef9253bd212c07ae19584 ]
    
    Global pause and PFC configuration should be mutually exclusive (i.e. only
    one of them at most can be set). However, once PFC was turned off,
    driver automatically turned Global pause on. This is a bug.
    
    Fix the driver behaviour to turn off PFC/Global once the user turned the
    other on.
    
    This also fixed a weird behaviour that at a current time, the profile
    had both PFC and global pause configuration turned on, which is
    Hardware-wise impossible and caused returning false positive indication
    to query tools.
    
    In addition, fix error code when setting global pause or PFC to change
    metadata only upon successful change.
    
    Also, removed useless debug print.
    
    Fixes: af7d51852631 ("net/mlx4_en: Add DCB PFC support through CEE netlink commands")
    Fixes: c27a02cd94d6 ("mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC")
    Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2b83b77806576b81142d553ccb9f05da22b9bdb
Author: Dave Watson <davejwatson@fb.com>
Date:   Mon Mar 26 12:31:21 2018 -0700

    strparser: Fix sign of err codes
    
    
    [ Upstream commit cd00edc179863848abab5cc5683de5b7b5f70954 ]
    
    strp_parser_err is called with a negative code everywhere, which then
    calls abort_parser with a negative code.  strp_msg_timeout calls
    abort_parser directly with a positive code.  Negate ETIMEDOUT
    to match signed-ness of other calls.
    
    The default abort_parser callback, strp_abort_strp, sets
    sk->sk_err to err.  Also negate the error here so sk_err always
    holds a positive value, as the rest of the net code expects.  Currently
    a negative sk_err can result in endless loops, or user code that
    thinks it actually sent/received err bytes.
    
    Found while testing net/tls_sw recv path.
    
    Fixes: 43a0c6751a322847 ("strparser: Stream parser for messages")
    Signed-off-by: Dave Watson <davejwatson@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73a697b3ef625dec70cefbbd070cd773a520babc
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Fri Mar 16 00:00:57 2018 +0100

    net/sched: fix NULL dereference on the error path of tcf_skbmod_init()
    
    
    [ Upstream commit 2d433610176d6569e8b3a28f67bc72235bf69efc ]
    
    when the following command
    
     # tc action replace action skbmod swap mac index 100
    
    is run for the first time, and tcf_skbmod_init() fails to allocate struct
    tcf_skbmod_params, tcf_skbmod_cleanup() calls kfree_rcu(NULL), thus
    causing the following error:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
     IP: __call_rcu+0x23/0x2b0
     PGD 8000000034057067 P4D 8000000034057067 PUD 74937067 PMD 0
     Oops: 0002 [#1] SMP PTI
     Modules linked in: act_skbmod(E) psample ip6table_filter ip6_tables iptable_filter binfmt_misc ext4 snd_hda_codec_generic snd_hda_intel snd_hda_codec crct10dif_pclmul mbcache jbd2 crc32_pclmul snd_hda_core ghash_clmulni_intel snd_hwdep pcbc snd_seq snd_seq_device snd_pcm aesni_intel snd_timer crypto_simd glue_helper snd cryptd virtio_balloon joydev soundcore pcspkr i2c_piix4 nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c ata_generic pata_acpi qxl drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm virtio_console virtio_net virtio_blk ata_piix libata crc32c_intel virtio_pci serio_raw virtio_ring virtio i2c_core floppy dm_mirror dm_region_hash dm_log dm_mod [last unloaded: act_skbmod]
     CPU: 3 PID: 3144 Comm: tc Tainted: G            E    4.16.0-rc4.act_vlan.orig+ #403
     Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
     RIP: 0010:__call_rcu+0x23/0x2b0
     RSP: 0018:ffffbd2e403e7798 EFLAGS: 00010246
     RAX: ffffffffc0872080 RBX: ffff981d34bff780 RCX: 00000000ffffffff
     RDX: ffffffff922a5f00 RSI: 0000000000000000 RDI: 0000000000000000
     RBP: 0000000000000000 R08: 0000000000000001 R09: 000000000000021f
     R10: 000000003d003000 R11: 0000000000aaaaaa R12: 0000000000000000
     R13: ffffffff922a5f00 R14: 0000000000000001 R15: ffff981d3b698c2c
     FS:  00007f3678292740(0000) GS:ffff981d3fd80000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000008 CR3: 000000007c57a006 CR4: 00000000001606e0
     Call Trace:
      __tcf_idr_release+0x79/0xf0
      tcf_skbmod_init+0x1d1/0x210 [act_skbmod]
      tcf_action_init_1+0x2cc/0x430
      tcf_action_init+0xd3/0x1b0
      tc_ctl_action+0x18b/0x240
      rtnetlink_rcv_msg+0x29c/0x310
      ? _cond_resched+0x15/0x30
      ? __kmalloc_node_track_caller+0x1b9/0x270
      ? rtnl_calcit.isra.28+0x100/0x100
      netlink_rcv_skb+0xd2/0x110
      netlink_unicast+0x17c/0x230
      netlink_sendmsg+0x2cd/0x3c0
      sock_sendmsg+0x30/0x40
      ___sys_sendmsg+0x27a/0x290
      ? filemap_map_pages+0x34a/0x3a0
      ? __handle_mm_fault+0xbfd/0xe20
      __sys_sendmsg+0x51/0x90
      do_syscall_64+0x6e/0x1a0
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
     RIP: 0033:0x7f36776a3ba0
     RSP: 002b:00007fff4703b618 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 00007fff4703b740 RCX: 00007f36776a3ba0
     RDX: 0000000000000000 RSI: 00007fff4703b690 RDI: 0000000000000003
     RBP: 000000005aaaba36 R08: 0000000000000002 R09: 0000000000000000
     R10: 00007fff4703b0a0 R11: 0000000000000246 R12: 0000000000000000
     R13: 00007fff4703b754 R14: 0000000000000001 R15: 0000000000669f60
     Code: 5d e9 42 da ff ff 66 90 0f 1f 44 00 00 41 57 41 56 41 55 49 89 d5 41 54 55 48 89 fd 53 48 83 ec 08 40 f6 c7 07 0f 85 19 02 00 00 <48> 89 75 08 48 c7 45 00 00 00 00 00 9c 58 0f 1f 44 00 00 49 89
     RIP: __call_rcu+0x23/0x2b0 RSP: ffffbd2e403e7798
     CR2: 0000000000000008
    
    Fix it in tcf_skbmod_cleanup(), ensuring that kfree_rcu(p, ...) is called
    only when p is not NULL.
    
    Fixes: 86da71b57383 ("net_sched: Introduce skbmod action")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39eab2e79f81262b44fdd1510f518bf83075131f
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Fri Mar 16 00:00:55 2018 +0100

    net/sched: fix NULL dereference in the error path of tunnel_key_init()
    
    
    [ Upstream commit abdadd3cfd3e7ea3da61ac774f84777d1f702058 ]
    
    when the following command
    
     # tc action add action tunnel_key unset index 100
    
    is run for the first time, and tunnel_key_init() fails to allocate struct
    tcf_tunnel_key_params, tunnel_key_release() dereferences NULL pointers.
    This causes the following error:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
     IP: tunnel_key_release+0xd/0x40 [act_tunnel_key]
     PGD 8000000033787067 P4D 8000000033787067 PUD 74646067 PMD 0
     Oops: 0000 [#1] SMP PTI
     Modules linked in: act_tunnel_key(E) act_csum ip6table_filter ip6_tables iptable_filter binfmt_misc ext4 mbcache jbd2 crct10dif_pclmul crc32_pclmul snd_hda_codec_generic ghash_clmulni_intel snd_hda_intel pcbc snd_hda_codec snd_hda_core snd_hwdep snd_seq aesni_intel snd_seq_device crypto_simd glue_helper snd_pcm cryptd joydev snd_timer pcspkr virtio_balloon snd i2c_piix4 soundcore nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c ata_generic pata_acpi qxl drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm virtio_net virtio_blk drm virtio_console crc32c_intel ata_piix serio_raw i2c_core virtio_pci libata virtio_ring virtio floppy dm_mirror dm_region_hash dm_log dm_mod
     CPU: 2 PID: 3101 Comm: tc Tainted: G            E    4.16.0-rc4.act_vlan.orig+ #403
     Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
     RIP: 0010:tunnel_key_release+0xd/0x40 [act_tunnel_key]
     RSP: 0018:ffffba46803b7768 EFLAGS: 00010286
     RAX: ffffffffc09010a0 RBX: 0000000000000000 RCX: 0000000000000024
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff99ee336d7480
     RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000044
     R10: 0000000000000220 R11: ffff99ee79d73131 R12: 0000000000000000
     R13: ffff99ee32d67610 R14: ffff99ee7671dc38 R15: 00000000fffffff4
     FS:  00007febcb2cd740(0000) GS:ffff99ee7fd00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000010 CR3: 000000007c8e4005 CR4: 00000000001606e0
     Call Trace:
      __tcf_idr_release+0x79/0xf0
      tunnel_key_init+0xd9/0x460 [act_tunnel_key]
      tcf_action_init_1+0x2cc/0x430
      tcf_action_init+0xd3/0x1b0
      tc_ctl_action+0x18b/0x240
      rtnetlink_rcv_msg+0x29c/0x310
      ? _cond_resched+0x15/0x30
      ? __kmalloc_node_track_caller+0x1b9/0x270
      ? rtnl_calcit.isra.28+0x100/0x100
      netlink_rcv_skb+0xd2/0x110
      netlink_unicast+0x17c/0x230
      netlink_sendmsg+0x2cd/0x3c0
      sock_sendmsg+0x30/0x40
      ___sys_sendmsg+0x27a/0x290
      __sys_sendmsg+0x51/0x90
      do_syscall_64+0x6e/0x1a0
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
     RIP: 0033:0x7febca6deba0
     RSP: 002b:00007ffe7b0dd128 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 00007ffe7b0dd250 RCX: 00007febca6deba0
     RDX: 0000000000000000 RSI: 00007ffe7b0dd1a0 RDI: 0000000000000003
     RBP: 000000005aaa90cb R08: 0000000000000002 R09: 0000000000000000
     R10: 00007ffe7b0dcba0 R11: 0000000000000246 R12: 0000000000000000
     R13: 00007ffe7b0dd264 R14: 0000000000000001 R15: 0000000000669f60
     Code: 44 00 00 8b 0d b5 23 00 00 48 8b 87 48 10 00 00 48 8b 3c c8 e9 a5 e5 d8 c3 0f 1f 44 00 00 0f 1f 44 00 00 53 48 8b 9f b0 00 00 00 <83> 7b 10 01 74 0b 48 89 df 31 f6 5b e9 f2 fa 7f c3 48 8b 7b 18
     RIP: tunnel_key_release+0xd/0x40 [act_tunnel_key] RSP: ffffba46803b7768
     CR2: 0000000000000010
    
    Fix this in tunnel_key_release(), ensuring 'param' is not NULL before
    dereferencing it.
    
    Fixes: d0f6dd8a914f ("net/sched: Introduce act_tunnel_key")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6bda9865d4c49e92f8be5f70979f1f89848eb5d
Author: Shahar Klein <shahark@mellanox.com>
Date:   Tue Mar 20 14:44:40 2018 +0200

    net/mlx5e: Sync netdev vxlan ports at open
    
    
    [ Upstream commit a117f73dc2430443f23e18367fa545981129c1a6 ]
    
    When mlx5_core is loaded it is expected to sync ports
    with all vxlan devices so it can support vxlan encap/decap.
    This is done via udp_tunnel_get_rx_info(). Currently this
    call is set in mlx5e_nic_enable() and if the netdev is not in
    NETREG_REGISTERED state it will not be called.
    
    Normally on load the netdev state is not NETREG_REGISTERED
    so udp_tunnel_get_rx_info() will not be called.
    
    Moving udp_tunnel_get_rx_info() to mlx5e_open() so
    it will be called on netdev UP event and allow encap/decap.
    
    Fixes: 610e89e05c3f ("net/mlx5e: Don't sync netdev state when not registered")
    Signed-off-by: Shahar Klein <shahark@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75744bdbce5f6c369fad798009652ea159a7f1a4
Author: Jianbo Liu <jianbol@mellanox.com>
Date:   Fri Mar 2 02:09:08 2018 +0000

    net/mlx5e: Don't override vport admin link state in switchdev mode
    
    
    The vport admin original link state will be re-applied after returning
    back to legacy mode, it is not right to change the admin link state value
    when in switchdev mode.
    
    Use direct vport commands to alter logical vport state in netdev
    representor open/close flows rather than the administrative eswitch API.
    
    Fixes: 20a1ea674783 ('net/mlx5e: Support VF vport link state control for SRIOV switchdev mode')
    Signed-off-by: Jianbo Liu <jianbol@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5dfa4fb5cd26811d6d786976867baf04e9ca8dc0
Author: David Lebrun <dlebrun@google.com>
Date:   Thu Mar 29 17:59:36 2018 +0100

    ipv6: sr: fix seg6 encap performances with TSO enabled
    
    
    [ Upstream commit 5807b22c9164a21cd1077a9bc587f0bba361f72d ]
    
    Enabling TSO can lead to abysmal performances when using seg6 in
    encap mode, such as with the ixgbe driver. This patch adds a call to
    iptunnel_handle_offloads() to remove the encapsulation bit if needed.
    
    Before:
    root@comp4-seg6bpf:~# iperf3 -c fc00::55
    Connecting to host fc00::55, port 5201
    [  4] local fc45::4 port 36592 connected to fc00::55 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec   196 KBytes  1.60 Mbits/sec   47   6.66 KBytes
    [  4]   1.00-2.00   sec   304 KBytes  2.49 Mbits/sec  100   5.33 KBytes
    [  4]   2.00-3.00   sec   284 KBytes  2.32 Mbits/sec   92   5.33 KBytes
    
    After:
    root@comp4-seg6bpf:~# iperf3 -c fc00::55
    Connecting to host fc00::55, port 5201
    [  4] local fc45::4 port 43062 connected to fc00::55 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec  1.03 GBytes  8.89 Gbits/sec    0    743 KBytes
    [  4]   1.00-2.00   sec  1.03 GBytes  8.87 Gbits/sec    0    743 KBytes
    [  4]   2.00-3.00   sec  1.03 GBytes  8.87 Gbits/sec    0    743 KBytes
    
    Reported-by: Tom Herbert <tom@quantonium.net>
    Fixes: 6c8702c60b88 ("ipv6: sr: add support for SRH encapsulation and injection with lwtunnels")
    Signed-off-by: David Lebrun <dlebrun@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0f3ccf5293cdd2419e54f765be9e774ebe5a446
Author: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Date:   Tue Apr 3 17:24:23 2018 -0700

    nfp: use full 40 bits of the NSP buffer address
    
    
    [ Upstream commit 1489bbd10e16079ce30a53d3c22a431fd47af791 ]
    
    The NSP default buffer is a piece of NFP memory where additional
    command data can be placed.  Its format has been copied from
    host buffer, but the PCIe selection bits do not make sense in
    this case.  If those get masked out from a NFP address - writes
    to random place in the chip memory may be issued and crash the
    device.
    
    Even in the general NSP buffer case, it doesn't make sense to have the
    PCIe selection bits there anymore. These are unused at the moment, and
    when it becomes necessary, the PCIe selection bits should rather be
    moved to another register to utilise more bits for the buffer address.
    
    This has never been an issue because the buffer used to be
    allocated in memory with less-than-38-bit-long address but that
    is about to change.
    
    Fixes: 1a64821c6af7 ("nfp: add support for service processor access")
    Signed-off-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
    Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d49e497222cf7c918d1868e71c3bc17f0b2bbd4
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Fri Mar 16 00:00:56 2018 +0100

    net/sched: fix NULL dereference in the error path of tcf_sample_init()
    
    
    [ Upstream commit 1f110e7cae09e6c6a144616480d1a9dd99c5208a ]
    
    when the following command
    
     # tc action add action sample rate 100 group 100 index 100
    
    is run for the first time, and psample_group_get(100) fails to create a
    new group, tcf_sample_cleanup() calls psample_group_put(NULL), thus
    causing the following error:
    
     BUG: unable to handle kernel NULL pointer dereference at 000000000000001c
     IP: psample_group_put+0x15/0x71 [psample]
     PGD 8000000075775067 P4D 8000000075775067 PUD 7453c067 PMD 0
     Oops: 0002 [#1] SMP PTI
     Modules linked in: act_sample(E) psample ip6table_filter ip6_tables iptable_filter binfmt_misc ext4 snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hda_core mbcache jbd2 crct10dif_pclmul snd_hwdep crc32_pclmul snd_seq ghash_clmulni_intel pcbc snd_seq_device snd_pcm aesni_intel crypto_simd snd_timer glue_helper snd cryptd joydev pcspkr i2c_piix4 soundcore virtio_balloon nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c ata_generic pata_acpi qxl drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm virtio_net ata_piix virtio_console virtio_blk libata serio_raw crc32c_intel virtio_pci i2c_core virtio_ring virtio floppy dm_mirror dm_region_hash dm_log dm_mod [last unloaded: act_tunnel_key]
     CPU: 2 PID: 5740 Comm: tc Tainted: G            E    4.16.0-rc4.act_vlan.orig+ #403
     Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
     RIP: 0010:psample_group_put+0x15/0x71 [psample]
     RSP: 0018:ffffb8a80032f7d0 EFLAGS: 00010246
     RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000024
     RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffffffffc06d93c0
     RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000044
     R10: 00000000bd003000 R11: ffff979fba04aa59 R12: 0000000000000000
     R13: 0000000000000000 R14: 0000000000000000 R15: ffff979fbba3f22c
     FS:  00007f7638112740(0000) GS:ffff979fbfd00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 000000000000001c CR3: 00000000734ea001 CR4: 00000000001606e0
     Call Trace:
      __tcf_idr_release+0x79/0xf0
      tcf_sample_init+0x125/0x1d0 [act_sample]
      tcf_action_init_1+0x2cc/0x430
      tcf_action_init+0xd3/0x1b0
      tc_ctl_action+0x18b/0x240
      rtnetlink_rcv_msg+0x29c/0x310
      ? _cond_resched+0x15/0x30
      ? __kmalloc_node_track_caller+0x1b9/0x270
      ? rtnl_calcit.isra.28+0x100/0x100
      netlink_rcv_skb+0xd2/0x110
      netlink_unicast+0x17c/0x230
      netlink_sendmsg+0x2cd/0x3c0
      sock_sendmsg+0x30/0x40
      ___sys_sendmsg+0x27a/0x290
      ? filemap_map_pages+0x34a/0x3a0
      ? __handle_mm_fault+0xbfd/0xe20
      __sys_sendmsg+0x51/0x90
      do_syscall_64+0x6e/0x1a0
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
     RIP: 0033:0x7f7637523ba0
     RSP: 002b:00007fff0473ef58 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 00007fff0473f080 RCX: 00007f7637523ba0
     RDX: 0000000000000000 RSI: 00007fff0473efd0 RDI: 0000000000000003
     RBP: 000000005aaaac80 R08: 0000000000000002 R09: 0000000000000000
     R10: 00007fff0473e9e0 R11: 0000000000000246 R12: 0000000000000000
     R13: 00007fff0473f094 R14: 0000000000000001 R15: 0000000000669f60
     Code: be 02 00 00 00 48 89 df e8 a9 fe ff ff e9 7c ff ff ff 0f 1f 40 00 0f 1f 44 00 00 53 48 89 fb 48 c7 c7 c0 93 6d c0 e8 db 20 8c ef <83> 6b 1c 01 74 10 48 c7 c7 c0 93 6d c0 ff 14 25 e8 83 83 b0 5b
     RIP: psample_group_put+0x15/0x71 [psample] RSP: ffffb8a80032f7d0
     CR2: 000000000000001c
    
    Fix it in tcf_sample_cleanup(), ensuring that calls to psample_group_put(p)
    are done only when p is not NULL.
    
    Fixes: cadb9c9fdbc6 ("net/sched: act_sample: Fix error path in init")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e95cdaee3d7d5bf2439ac344de89270ff8a958de
Author: Jianbo Liu <jianbol@mellanox.com>
Date:   Thu Mar 8 09:20:55 2018 +0000

    net/mlx5e: Fix memory usage issues in offloading TC flows
    
    
    [ Upstream commit af1607c37d9d85a66fbcf43b7f11bf3d94b9bb69 ]
    
    For NIC flows, the parsed attributes are not freed when we exit
    successfully from mlx5e_configure_flower().
    
    There is possible double free for eswitch flows. If error is returned
    from rhashtable_insert_fast(), the parse attrs will be freed in
    mlx5e_tc_del_flow(), but they will be freed again before exiting
    mlx5e_configure_flower().
    
    To fix both issues we do the following:
    (1) change the condition that determines if to issue the free call to
        check if this flow is NIC flow, or it does not have encap action.
    (2) reorder the code such that that the check and free calls are done
        before we attempt to add into the hash table.
    
    Fixes: 232c001398ae ('net/mlx5e: Add support to neighbour update flow')
    Signed-off-by: Jianbo Liu <jianbol@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07c70edfbefd49fe2a74847ceabcec543f651cfa
Author: Or Gerlitz <ogerlitz@mellanox.com>
Date:   Tue Mar 13 21:43:43 2018 +0200

    net/mlx5e: Avoid using the ipv6 stub in the TC offload neigh update path
    
    
    [ Upstream commit 423c9db29943cfc43e3a408192e9efa4178af6a1 ]
    
    Currently we use the global ipv6_stub var to access the ipv6 global
    nd table. This practice gets us to troubles when the stub is only partially
    set e.g when ipv6 is loaded under the disabled policy. In this case, as of commit
    343d60aada5a ("ipv6: change ipv6_stub_impl.ipv6_dst_lookup to take net argument")
    the stub is not null, but stub->nd_tbl is and we crash.
    
    As we can access the ipv6 nd_tbl directly, the fix is just to avoid the
    reference through the stub. There is one place in the code where we
    issue ipv6 route lookup and keep doing it through the stub, but that
    mentioned commit makes sure we get -EAFNOSUPPORT from the stack.
    
    Fixes: 232c001398ae ("net/mlx5e: Add support to neighbour update flow")
    Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
    Reviewed-by: Aviv Heller <avivh@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5075e98fb92f58084d91ca3b50bd7d8a421e60e1
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Fri Mar 16 00:00:53 2018 +0100

    net/sched: fix NULL dereference in the error path of tcf_vlan_init()
    
    
    [ Upstream commit 1edf8abe04090c4f41a85e42c66638be1ee69156 ]
    
    when the following command
    
     # tc actions replace action vlan pop index 100
    
    is run for the first time, and tcf_vlan_init() fails allocating struct
    tcf_vlan_params, tcf_vlan_cleanup() calls kfree_rcu(NULL, ...). This causes
    the following error:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
     IP: __call_rcu+0x23/0x2b0
     PGD 80000000760a2067 P4D 80000000760a2067 PUD 742c1067 PMD 0
     Oops: 0002 [#1] SMP PTI
     Modules linked in: act_vlan(E) ip6table_filter ip6_tables iptable_filter binfmt_misc ext4 snd_hda_codec_generic snd_hda_intel mbcache snd_hda_codec jbd2 snd_hda_core crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc snd_hwdep snd_seq snd_seq_device snd_pcm aesni_intel crypto_simd snd_timer glue_helper snd cryptd joydev soundcore virtio_balloon pcspkr i2c_piix4 nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c ata_generic pata_acpi qxl drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm virtio_console virtio_blk virtio_net ata_piix crc32c_intel libata virtio_pci i2c_core virtio_ring serio_raw virtio floppy dm_mirror dm_region_hash dm_log dm_mod [last unloaded: act_vlan]
     CPU: 3 PID: 3119 Comm: tc Tainted: G            E    4.16.0-rc4.act_vlan.orig+ #403
     Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
     RIP: 0010:__call_rcu+0x23/0x2b0
     RSP: 0018:ffffaac3005fb798 EFLAGS: 00010246
     RAX: ffffffffc0704080 RBX: ffff97f2b4bbe900 RCX: 00000000ffffffff
     RDX: ffffffffabca5f00 RSI: 0000000000000010 RDI: 0000000000000010
     RBP: 0000000000000010 R08: 0000000000000001 R09: 0000000000000044
     R10: 00000000fd003000 R11: ffff97f2faab5b91 R12: 0000000000000000
     R13: ffffffffabca5f00 R14: ffff97f2fb80202c R15: 00000000fffffff4
     FS:  00007f68f75b4740(0000) GS:ffff97f2ffd80000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000018 CR3: 0000000072b52001 CR4: 00000000001606e0
     Call Trace:
      __tcf_idr_release+0x79/0xf0
      tcf_vlan_init+0x168/0x270 [act_vlan]
      tcf_action_init_1+0x2cc/0x430
      tcf_action_init+0xd3/0x1b0
      tc_ctl_action+0x18b/0x240
      rtnetlink_rcv_msg+0x29c/0x310
      ? _cond_resched+0x15/0x30
      ? __kmalloc_node_track_caller+0x1b9/0x270
      ? rtnl_calcit.isra.28+0x100/0x100
      netlink_rcv_skb+0xd2/0x110
      netlink_unicast+0x17c/0x230
      netlink_sendmsg+0x2cd/0x3c0
      sock_sendmsg+0x30/0x40
      ___sys_sendmsg+0x27a/0x290
      ? filemap_map_pages+0x34a/0x3a0
      ? __handle_mm_fault+0xbfd/0xe20
      __sys_sendmsg+0x51/0x90
      do_syscall_64+0x6e/0x1a0
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
     RIP: 0033:0x7f68f69c5ba0
     RSP: 002b:00007fffd79c1118 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 00007fffd79c1240 RCX: 00007f68f69c5ba0
     RDX: 0000000000000000 RSI: 00007fffd79c1190 RDI: 0000000000000003
     RBP: 000000005aaa708e R08: 0000000000000002 R09: 0000000000000000
     R10: 00007fffd79c0ba0 R11: 0000000000000246 R12: 0000000000000000
     R13: 00007fffd79c1254 R14: 0000000000000001 R15: 0000000000669f60
     Code: 5d e9 42 da ff ff 66 90 0f 1f 44 00 00 41 57 41 56 41 55 49 89 d5 41 54 55 48 89 fd 53 48 83 ec 08 40 f6 c7 07 0f 85 19 02 00 00 <48> 89 75 08 48 c7 45 00 00 00 00 00 9c 58 0f 1f 44 00 00 49 89
     RIP: __call_rcu+0x23/0x2b0 RSP: ffffaac3005fb798
     CR2: 0000000000000018
    
    fix this in tcf_vlan_cleanup(), ensuring that kfree_rcu(p, ...) is called
    only when p is not NULL.
    
    Fixes: 4c5b9d9642c8 ("act_vlan: VLAN action rewrite to use RCU lock/unlock and update")
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Acked-by: Manish Kurup <manish.kurup@verizon.com>
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a61bf7ba7f9f7bff39720508b136a9f22966e2af
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Apr 6 17:19:41 2018 -0700

    net_sched: fix a missing idr_remove() in u32_delete_key()
    
    
    [ Upstream commit f12c643209db0626f2f54780d86bb93bfa7a9c2d ]
    
    When we delete a u32 key via u32_delete_key(), we forget to
    call idr_remove() to remove its handle from IDR.
    
    Fixes: e7614370d6f0 ("net_sched: use idr to allocate u32 filter handles")
    Reported-by: Marcin Kabiesz <admin@hostcenter.eu>
    Tested-by: Marcin Kabiesz <admin@hostcenter.eu>
    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>

commit 8c09a81ed1b93982cdc9747decd155b6300ad3a9
Author: Tal Gilboa <talgi@mellanox.com>
Date:   Fri Mar 30 15:50:08 2018 -0700

    net/mlx5e: Set EQE based as default TX interrupt moderation mode
    
    
    [ Upstream commit 48bfc39791b8b4a25f165e711f18b9c1617cefbc ]
    
    The default TX moderation mode was mistakenly set to CQE based. The
    intention was to add a control ability in order to improve some specific
    use-cases. In general, we prefer to use EQE based moderation as it gives
    much better numbers for the common cases.
    
    CQE based causes a degradation in the common case since it resets the
    moderation timer on CQE generation. This causes an issue when TSO is
    well utilized (large TSO sessions). The timer is set to 16us so traffic
    of ~64KB TSO sessions per second would mean timer reset (CQE per TSO
    session -> long time between CQEs). In this case we quickly reach the
    tcp_limit_output_bytes (256KB by default) and cause a halt in TX traffic.
    
    By setting EQE based moderation we make sure timer would expire after
    16us regardless of the packet rate.
    This fixes an up to 40% packet rate and up to 23% bandwidth degradtions.
    
    Fixes: 0088cbbc4b66 ("net/mlx5e: Enable CQE based moderation on TX CQ")
    Signed-off-by: Tal Gilboa <talgi@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34eb1263d97f0ae0dcdcfe471f44b60c751b5091
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:31 2018 -0700

    vti6: better validate user provided tunnel names
    
    
    [ Upstream commit 537b361fbcbcc3cd6fe2bb47069fd292b9256d16 ]
    
    Use valid_name() to make sure user does not provide illegal
    device name.
    
    Fixes: ed1efb2aefbb ("ipv6: Add support for IPsec virtual tunnel interfaces")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fba1a669a9abaed5992c1cf5b3eac7b5ee84f2d
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:30 2018 -0700

    ip6_tunnel: better validate user provided tunnel names
    
    
    [ Upstream commit db7a65e3ab78e5b1c4b17c0870ebee35a4ee3257 ]
    
    Use valid_name() to make sure user does not provide illegal
    device name.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    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>

commit efcc90fcf90a045fdf7abf8506e07dd34f04e029
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:29 2018 -0700

    ip6_gre: better validate user provided tunnel names
    
    
    [ Upstream commit 5f42df013b8bc1b6511af7a04bf93b014884ae2a ]
    
    Use dev_valid_name() to make sure user does not provide illegal
    device name.
    
    syzbot caught the following bug :
    
    BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
    BUG: KASAN: stack-out-of-bounds in ip6gre_tunnel_locate+0x334/0x860 net/ipv6/ip6_gre.c:339
    Write of size 20 at addr ffff8801afb9f7b8 by task syzkaller851048/4466
    
    CPU: 1 PID: 4466 Comm: syzkaller851048 Not tainted 4.16.0+ #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x1b9/0x29f lib/dump_stack.c:53
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
     check_memory_region_inline mm/kasan/kasan.c:260 [inline]
     check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
     memcpy+0x37/0x50 mm/kasan/kasan.c:303
     strlcpy include/linux/string.h:300 [inline]
     ip6gre_tunnel_locate+0x334/0x860 net/ipv6/ip6_gre.c:339
     ip6gre_tunnel_ioctl+0x69d/0x12e0 net/ipv6/ip6_gre.c:1195
     dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
     dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
     sock_ioctl+0x47e/0x680 net/socket.c:1015
     vfs_ioctl fs/ioctl.c:46 [inline]
     file_ioctl fs/ioctl.c:500 [inline]
     do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
     ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
     SYSC_ioctl fs/ioctl.c:708 [inline]
     SyS_ioctl+0x24/0x30 fs/ioctl.c:706
     do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6415377233302346f7f68e8bda5653338ba1c3d
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:28 2018 -0700

    ipv6: sit: better validate user provided tunnel names
    
    
    [ Upstream commit b95211e066fc3494b7c115060b2297b4ba21f025 ]
    
    Use dev_valid_name() to make sure user does not provide illegal
    device name.
    
    syzbot caught the following bug :
    
    BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
    BUG: KASAN: stack-out-of-bounds in ipip6_tunnel_locate+0x63b/0xaa0 net/ipv6/sit.c:254
    Write of size 33 at addr ffff8801b64076d8 by task syzkaller932654/4453
    
    CPU: 0 PID: 4453 Comm: syzkaller932654 Not tainted 4.16.0+ #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x1b9/0x29f lib/dump_stack.c:53
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
     check_memory_region_inline mm/kasan/kasan.c:260 [inline]
     check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
     memcpy+0x37/0x50 mm/kasan/kasan.c:303
     strlcpy include/linux/string.h:300 [inline]
     ipip6_tunnel_locate+0x63b/0xaa0 net/ipv6/sit.c:254
     ipip6_tunnel_ioctl+0xe71/0x241b net/ipv6/sit.c:1221
     dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
     dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
     sock_ioctl+0x47e/0x680 net/socket.c:1015
     vfs_ioctl fs/ioctl.c:46 [inline]
     file_ioctl fs/ioctl.c:500 [inline]
     do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
     ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
     SYSC_ioctl fs/ioctl.c:708 [inline]
     SyS_ioctl+0x24/0x30 fs/ioctl.c:706
     do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc4718fcee7cf0499659bb28d0dce1056688e3f3
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:27 2018 -0700

    ip_tunnel: better validate user provided tunnel names
    
    
    [ Upstream commit 9cb726a212a82c88c98aa9f0037fd04777cd8fe5 ]
    
    Use dev_valid_name() to make sure user does not provide illegal
    device name.
    
    syzbot caught the following bug :
    
    BUG: KASAN: stack-out-of-bounds in strlcpy include/linux/string.h:300 [inline]
    BUG: KASAN: stack-out-of-bounds in __ip_tunnel_create+0xca/0x6b0 net/ipv4/ip_tunnel.c:257
    Write of size 20 at addr ffff8801ac79f810 by task syzkaller268107/4482
    
    CPU: 0 PID: 4482 Comm: syzkaller268107 Not tainted 4.16.0+ #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x1b9/0x29f lib/dump_stack.c:53
     print_address_description+0x6c/0x20b mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report.cold.7+0xac/0x2f5 mm/kasan/report.c:412
     check_memory_region_inline mm/kasan/kasan.c:260 [inline]
     check_memory_region+0x13e/0x1b0 mm/kasan/kasan.c:267
     memcpy+0x37/0x50 mm/kasan/kasan.c:303
     strlcpy include/linux/string.h:300 [inline]
     __ip_tunnel_create+0xca/0x6b0 net/ipv4/ip_tunnel.c:257
     ip_tunnel_create net/ipv4/ip_tunnel.c:352 [inline]
     ip_tunnel_ioctl+0x818/0xd40 net/ipv4/ip_tunnel.c:861
     ipip_tunnel_ioctl+0x1c5/0x420 net/ipv4/ipip.c:350
     dev_ifsioc+0x43e/0xb90 net/core/dev_ioctl.c:334
     dev_ioctl+0x69a/0xcc0 net/core/dev_ioctl.c:525
     sock_ioctl+0x47e/0x680 net/socket.c:1015
     vfs_ioctl fs/ioctl.c:46 [inline]
     file_ioctl fs/ioctl.c:500 [inline]
     do_vfs_ioctl+0x1cf/0x1650 fs/ioctl.c:684
     ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701
     SYSC_ioctl fs/ioctl.c:708 [inline]
     SyS_ioctl+0x24/0x30 fs/ioctl.c:706
     do_syscall_64+0x29e/0x9d0 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 764975439e8bc77227920f9054cfa82daf094a21
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Apr 5 06:39:26 2018 -0700

    net: fool proof dev_valid_name()
    
    
    [ Upstream commit a9d48205d0aedda021fc3728972a9e9934c2b9de ]
    
    We want to use dev_valid_name() to validate tunnel names,
    so better use strnlen(name, IFNAMSIZ) than strlen(name) to make
    sure to not upset KASAN.
    
    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>

commit b9c36c30ccac32bba5c7a8192a979bf99fff59fc
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Mar 26 01:16:47 2018 +0800

    bonding: process the err returned by dev_set_allmulti properly in bond_enslave
    
    
    [ Upstream commit 9f5a90c107741b864398f4ac0014711a8c1d8474 ]
    
    When dev_set_promiscuity(1) succeeds but dev_set_allmulti(1) fails,
    dev_set_promiscuity(-1) should be done before going to the err path.
    Otherwise, dev->promiscuity will leak.
    
    Fixes: 7e1a1ac1fbaa ("bonding: Check return of dev_set_promiscuity/allmulti")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1999253e11b6c5bafc1449cfccf73a3ae88be435
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Mar 26 01:16:46 2018 +0800

    bonding: move dev_mc_sync after master_upper_dev_link in bond_enslave
    
    
    [ Upstream commit ae42cc62a9f07f1f6979054ed92606b9c30f4a2e ]
    
    Beniamino found a crash when adding vlan as slave of bond which is also
    the parent link:
    
      ip link add bond1 type bond
      ip link set bond1 up
      ip link add link bond1 vlan1 type vlan id 80
      ip link set vlan1 master bond1
    
    The call trace is as below:
    
      [<ffffffffa850842a>] queued_spin_lock_slowpath+0xb/0xf
      [<ffffffffa8515680>] _raw_spin_lock+0x20/0x30
      [<ffffffffa83f6f07>] dev_mc_sync+0x37/0x80
      [<ffffffffc08687dc>] vlan_dev_set_rx_mode+0x1c/0x30 [8021q]
      [<ffffffffa83efd2a>] __dev_set_rx_mode+0x5a/0xa0
      [<ffffffffa83f7138>] dev_mc_sync_multiple+0x78/0x80
      [<ffffffffc084127c>] bond_enslave+0x67c/0x1190 [bonding]
      [<ffffffffa8401909>] do_setlink+0x9c9/0xe50
      [<ffffffffa8403bf2>] rtnl_newlink+0x522/0x880
      [<ffffffffa8403ff7>] rtnetlink_rcv_msg+0xa7/0x260
      [<ffffffffa8424ecb>] netlink_rcv_skb+0xab/0xc0
      [<ffffffffa83fe498>] rtnetlink_rcv+0x28/0x30
      [<ffffffffa8424850>] netlink_unicast+0x170/0x210
      [<ffffffffa8424bf8>] netlink_sendmsg+0x308/0x420
      [<ffffffffa83cc396>] sock_sendmsg+0xb6/0xf0
    
    This is actually a dead lock caused by sync slave hwaddr from master when
    the master is the slave's 'slave'. This dead loop check is actually done
    by netdev_master_upper_dev_link. However, Commit 1f718f0f4f97 ("bonding:
    populate neighbour's private on enslave") moved it after dev_mc_sync.
    
    This patch is to fix it by moving dev_mc_sync after master_upper_dev_link,
    so that this loop check would be earlier than dev_mc_sync. It also moves
    if (mode == BOND_MODE_8023AD) into if (!bond_uses_primary) clause as an
    improvement.
    
    Note team driver also has this issue, I will fix it in another patch.
    
    Fixes: 1f718f0f4f97 ("bonding: populate neighbour's private on enslave")
    Reported-by: Beniamino Galvani <bgalvani@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4021b1a4ef73460b97f96ce28ce97b347e43003b
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Mar 26 01:16:45 2018 +0800

    bonding: fix the err path for dev hwaddr sync in bond_enslave
    
    
    [ Upstream commit 5c78f6bfae2b10ff70e21d343e64584ea6280c26 ]
    
    vlan_vids_add_by_dev is called right after dev hwaddr sync, so on
    the err path it should unsync dev hwaddr. Otherwise, the slave
    dev's hwaddr will never be unsync when this err happens.
    
    Fixes: 1ff412ad7714 ("bonding: change the bond's vlan syncing functions with the standard ones")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Reviewed-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Acked-by: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 088d65ddf9c58fff8779d6759dc5757bb1e46476
Author: David Ahern <dsahern@gmail.com>
Date:   Thu Mar 29 12:49:52 2018 -0700

    vrf: Fix use after free and double free in vrf_finish_output
    
    
    [ Upstream commit 82dd0d2a9a76fc8fa2b18d80b987d455728bf83a ]
    
    Miguel reported an skb use after free / double free in vrf_finish_output
    when neigh_output returns an error. The vrf driver should return after
    the call to neigh_output as it takes over the skb on error path as well.
    
    Patch is a simplified version of Miguel's patch which was written for 4.9,
    and updated to top of tree.
    
    Fixes: 8f58336d3f78a ("net: Add ethernet header for pass through VRF device")
    Signed-off-by: Miguel Fadon Perlines <mfadon@teldat.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51c6ba0d8d71d40f5b080c7187ac4edd8944364e
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Fri Mar 30 09:44:00 2018 +0800

    vlan: also check phy_driver ts_info for vlan's real device
    
    
    [ Upstream commit ec1d8ccb07deaf30fd0508af6755364ac47dc08d ]
    
    Just like function ethtool_get_ts_info(), we should also consider the
    phy_driver ts_info call back. For example, driver dp83640.
    
    Fixes: 37dd9255b2f6 ("vlan: Pass ethtool get_ts_info queries to real device.")
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25d45c0fd16c75389ba208c0d2569dc607155f32
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Mar 27 20:50:52 2018 +0800

    vhost: correctly remove wait queue during poll failure
    
    
    [ Upstream commit dc6455a71c7fc5117977e197f67f71b49f27baba ]
    
    We tried to remove vq poll from wait queue, but do not check whether
    or not it was in a list before. This will lead double free. Fixing
    this by switching to use vhost_poll_stop() which zeros poll->wqh after
    removing poll from waitqueue to make sure it won't be freed twice.
    
    Cc: Darren Kenny <darren.kenny@oracle.com>
    Reported-by: syzbot+c0272972b01b872e604a@syzkaller.appspotmail.com
    Fixes: 2b8b328b61c79 ("vhost_net: handle polling errors when setting backend")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3407271beb995f4ae800c7ca28878f0619e7043b
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Sat Mar 31 23:42:03 2018 +0800

    sky2: Increase D3 delay to sky2 stops working after suspend
    
    
    [ Upstream commit afb133637071be6deeb8b3d0e55593ffbf63c527 ]
    
    The sky2 ethernet stops working after system resume from suspend:
    [ 582.852065] sky2 0000:04:00.0: Refused to change power state, currently in D3
    
    The current 150ms delay is not enough, change it to 200ms can solve the
    issue.
    
    BugLink: https://bugs.launchpad.net/bugs/1758507
    Cc: Stable <stable@vger.kernel.org>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e72ce101da89ba18991a8a71915af64d8a43e28
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 8 07:52:08 2018 -0700

    sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6
    
    
    [ Upstream commit 81e98370293afcb58340ce8bd71af7b97f925c26 ]
    
    Check must happen before call to ipv6_addr_v4mapped()
    
    syzbot report was :
    
    BUG: KMSAN: uninit-value in sctp_sockaddr_af net/sctp/socket.c:359 [inline]
    BUG: KMSAN: uninit-value in sctp_do_bind+0x60f/0xdc0 net/sctp/socket.c:384
    CPU: 0 PID: 3576 Comm: syzkaller968804 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:676
     sctp_sockaddr_af net/sctp/socket.c:359 [inline]
     sctp_do_bind+0x60f/0xdc0 net/sctp/socket.c:384
     sctp_bind+0x149/0x190 net/sctp/socket.c:332
     inet6_bind+0x1fd/0x1820 net/ipv6/af_inet6.c:293
     SYSC_bind+0x3f2/0x4b0 net/socket.c:1474
     SyS_bind+0x54/0x80 net/socket.c:1460
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x43fd49
    RSP: 002b:00007ffe99df3d28 EFLAGS: 00000213 ORIG_RAX: 0000000000000031
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 000000000043fd49
    RDX: 0000000000000010 RSI: 0000000020000000 RDI: 0000000000000003
    RBP: 00000000006ca018 R08: 00000000004002c8 R09: 00000000004002c8
    R10: 00000000004002c8 R11: 0000000000000213 R12: 0000000000401670
    R13: 0000000000401700 R14: 0000000000000000 R15: 0000000000000000
    
    Local variable description: ----address@SYSC_bind
    Variable was created at:
     SYSC_bind+0x6f/0x4b0 net/socket.c:1461
     SyS_bind+0x54/0x80 net/socket.c:1460
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9db59791e2b705b05f76f85b756726ed8bae8929
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 7 17:15:22 2018 -0700

    sctp: do not leak kernel memory to user space
    
    
    [ Upstream commit 6780db244d6b1537d139dea0ec8aad10cf9e4adb ]
    
    syzbot produced a nice report [1]
    
    Issue here is that a recvmmsg() managed to leak 8 bytes of kernel memory
    to user space, because sin_zero (padding field) was not properly cleared.
    
    [1]
    BUG: KMSAN: uninit-value in copy_to_user include/linux/uaccess.h:184 [inline]
    BUG: KMSAN: uninit-value in move_addr_to_user+0x32e/0x530 net/socket.c:227
    CPU: 1 PID: 3586 Comm: syzkaller481044 Not tainted 4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     kmsan_internal_check_memory+0x164/0x1d0 mm/kmsan/kmsan.c:1176
     kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
     copy_to_user include/linux/uaccess.h:184 [inline]
     move_addr_to_user+0x32e/0x530 net/socket.c:227
     ___sys_recvmsg+0x4e2/0x810 net/socket.c:2211
     __sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
     SYSC_recvmmsg+0x29b/0x3e0 net/socket.c:2394
     SyS_recvmmsg+0x76/0xa0 net/socket.c:2378
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x4401c9
    RSP: 002b:00007ffc56f73098 EFLAGS: 00000217 ORIG_RAX: 000000000000012b
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 00000000004401c9
    RDX: 0000000000000001 RSI: 0000000020003ac0 RDI: 0000000000000003
    RBP: 00000000006ca018 R08: 0000000020003bc0 R09: 0000000000000010
    R10: 0000000000000000 R11: 0000000000000217 R12: 0000000000401af0
    R13: 0000000000401b80 R14: 0000000000000000 R15: 0000000000000000
    
    Local variable description: ----addr@___sys_recvmsg
    Variable was created at:
     ___sys_recvmsg+0xd5/0x810 net/socket.c:2172
     __sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
    
    Bytes 8-15 of 16 are uninitialized
    
    ==================================================================
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 1 PID: 3586 Comm: syzkaller481044 Tainted: G    B            4.16.0+ #82
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     panic+0x39d/0x940 kernel/panic.c:183
     kmsan_report+0x238/0x240 mm/kmsan/kmsan.c:1083
     kmsan_internal_check_memory+0x164/0x1d0 mm/kmsan/kmsan.c:1176
     kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
     copy_to_user include/linux/uaccess.h:184 [inline]
     move_addr_to_user+0x32e/0x530 net/socket.c:227
     ___sys_recvmsg+0x4e2/0x810 net/socket.c:2211
     __sys_recvmmsg+0x54e/0xdb0 net/socket.c:2313
     SYSC_recvmmsg+0x29b/0x3e0 net/socket.c:2394
     SyS_recvmmsg+0x76/0xa0 net/socket.c:2378
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc:     Vlad Yasevich <vyasevich@gmail.com>
    Cc:     Neil Horman <nhorman@tuxdriver.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb2b72372ab2174b9bf75bb7e3556b3dde2cf364
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Mon Mar 26 19:19:30 2018 +0200

    r8169: fix setting driver_data after register_netdev
    
    
    [ Upstream commit 19c9ea363a244f85f90a424f9936e6d56449e33c ]
    
    pci_set_drvdata() is called only after registering the net_device,
    therefore we could run into a NPE if one of the functions using
    driver_data is called before it's set.
    
    Fix this by calling pci_set_drvdata() before registering the
    net_device.
    
    This fix is a candidate for stable. As far as I can see the
    bug has been there in kernel version 3.2 already, therefore
    I can't provide a reference which commit is fixed by it.
    
    The fix may need small adjustments per kernel version because
    due to other changes the label which is jumped to if
    register_netdev() fails has changed over time.
    
    Reported-by: David Miller <davem@davemloft.net>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b1c6b30170e721896d491b4efd1417458a40073
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Apr 2 18:48:37 2018 -0700

    pptp: remove a buggy dst release in pptp_connect()
    
    
    [ Upstream commit bfacfb457b36911a10140b8cb3ce76a74883ac5a ]
    
    Once dst has been cached in socket via sk_setup_caps(),
    it is illegal to call ip_rt_put() (or dst_release()),
    since sk_setup_caps() did not change dst refcount.
    
    We can still dereference it since we hold socket lock.
    
    Caugth by syzbot :
    
    BUG: KASAN: use-after-free in atomic_dec_return include/asm-generic/atomic-instrumented.h:198 [inline]
    BUG: KASAN: use-after-free in dst_release+0x27/0xa0 net/core/dst.c:185
    Write of size 4 at addr ffff8801c54dc040 by task syz-executor4/20088
    
    CPU: 1 PID: 20088 Comm: syz-executor4 Not tainted 4.16.0+ #376
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x1a7/0x27d lib/dump_stack.c:53
     print_address_description+0x73/0x250 mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report+0x23c/0x360 mm/kasan/report.c:412
     check_memory_region_inline mm/kasan/kasan.c:260 [inline]
     check_memory_region+0x137/0x190 mm/kasan/kasan.c:267
     kasan_check_write+0x14/0x20 mm/kasan/kasan.c:278
     atomic_dec_return include/asm-generic/atomic-instrumented.h:198 [inline]
     dst_release+0x27/0xa0 net/core/dst.c:185
     sk_dst_set include/net/sock.h:1812 [inline]
     sk_dst_reset include/net/sock.h:1824 [inline]
     sock_setbindtodevice net/core/sock.c:610 [inline]
     sock_setsockopt+0x431/0x1b20 net/core/sock.c:707
     SYSC_setsockopt net/socket.c:1845 [inline]
     SyS_setsockopt+0x2ff/0x360 net/socket.c:1828
     do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    RIP: 0033:0x4552d9
    RSP: 002b:00007f4878126c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
    RAX: ffffffffffffffda RBX: 00007f48781276d4 RCX: 00000000004552d9
    RDX: 0000000000000019 RSI: 0000000000000001 RDI: 0000000000000013
    RBP: 000000000072bea0 R08: 0000000000000010 R09: 0000000000000000
    R10: 00000000200010c0 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 0000000000000526 R14: 00000000006fac30 R15: 0000000000000000
    
    Allocated by task 20088:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:552
     kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
     kmem_cache_alloc+0x12e/0x760 mm/slab.c:3542
     dst_alloc+0x11f/0x1a0 net/core/dst.c:104
     rt_dst_alloc+0xe9/0x540 net/ipv4/route.c:1520
     __mkroute_output net/ipv4/route.c:2265 [inline]
     ip_route_output_key_hash_rcu+0xa49/0x2c60 net/ipv4/route.c:2493
     ip_route_output_key_hash+0x20b/0x370 net/ipv4/route.c:2322
     __ip_route_output_key include/net/route.h:126 [inline]
     ip_route_output_flow+0x26/0xa0 net/ipv4/route.c:2577
     ip_route_output_ports include/net/route.h:163 [inline]
     pptp_connect+0xa84/0x1170 drivers/net/ppp/pptp.c:453
     SYSC_connect+0x213/0x4a0 net/socket.c:1639
     SyS_connect+0x24/0x30 net/socket.c:1620
     do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    Freed by task 20082:
     save_stack+0x43/0xd0 mm/kasan/kasan.c:447
     set_track mm/kasan/kasan.c:459 [inline]
     __kasan_slab_free+0x11a/0x170 mm/kasan/kasan.c:520
     kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:527
     __cache_free mm/slab.c:3486 [inline]
     kmem_cache_free+0x83/0x2a0 mm/slab.c:3744
     dst_destroy+0x266/0x380 net/core/dst.c:140
     dst_destroy_rcu+0x16/0x20 net/core/dst.c:153
     __rcu_reclaim kernel/rcu/rcu.h:178 [inline]
     rcu_do_batch kernel/rcu/tree.c:2675 [inline]
     invoke_rcu_callbacks kernel/rcu/tree.c:2930 [inline]
     __rcu_process_callbacks kernel/rcu/tree.c:2897 [inline]
     rcu_process_callbacks+0xd6c/0x17b0 kernel/rcu/tree.c:2914
     __do_softirq+0x2d7/0xb85 kernel/softirq.c:285
    
    The buggy address belongs to the object at ffff8801c54dc000
     which belongs to the cache ip_dst_cache of size 168
    The buggy address is located 64 bytes inside of
     168-byte region [ffff8801c54dc000, ffff8801c54dc0a8)
    The buggy address belongs to the page:
    page:ffffea0007153700 count:1 mapcount:0 mapping:ffff8801c54dc000 index:0x0
    flags: 0x2fffc0000000100(slab)
    raw: 02fffc0000000100 ffff8801c54dc000 0000000000000000 0000000100000010
    raw: ffffea0006b34b20 ffffea0006b6c1e0 ffff8801d674a1c0 0000000000000000
    page dumped because: kasan: bad access detected
    
    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>

commit db714a1ff3597f4a4ff3304659e02f21cad1f8cb
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Fri Apr 6 01:19:37 2018 +0200

    net/sched: fix NULL dereference in the error path of tcf_bpf_init()
    
    
    [ Upstream commit 3239534a79ee6f20cffd974173a1e62e0730e8ac ]
    
    when tcf_bpf_init_from_ops() fails (e.g. because of program having invalid
    number of instructions), tcf_bpf_cfg_cleanup() calls bpf_prog_put(NULL) or
    bpf_prog_destroy(NULL). Unless CONFIG_BPF_SYSCALL is unset, this causes
    the following error:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
     PGD 800000007345a067 P4D 800000007345a067 PUD 340e1067 PMD 0
     Oops: 0000 [#1] SMP PTI
     Modules linked in: act_bpf(E) ip6table_filter ip6_tables iptable_filter binfmt_misc ext4 mbcache jbd2 crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec_generic pcbc snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_seq snd_seq_device snd_pcm aesni_intel crypto_simd glue_helper cryptd joydev snd_timer snd virtio_balloon pcspkr soundcore i2c_piix4 nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c ata_generic pata_acpi qxl drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm virtio_blk drm virtio_net virtio_console i2c_core crc32c_intel serio_raw virtio_pci ata_piix libata virtio_ring floppy virtio dm_mirror dm_region_hash dm_log dm_mod [last unloaded: act_bpf]
     CPU: 3 PID: 5654 Comm: tc Tainted: G            E    4.16.0.bpf_test+ #408
     Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
     RIP: 0010:__bpf_prog_put+0xc/0xc0
     RSP: 0018:ffff9594003ef728 EFLAGS: 00010202
     RAX: 0000000000000000 RBX: ffff9594003ef758 RCX: 0000000000000024
     RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000000
     RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000044
     R10: 0000000000000220 R11: ffff8a7ab9f17131 R12: 0000000000000000
     R13: ffff8a7ab7c3c8e0 R14: 0000000000000001 R15: ffff8a7ab88f1054
     FS:  00007fcb2f17c740(0000) GS:ffff8a7abfd80000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000020 CR3: 000000007c888006 CR4: 00000000001606e0
     Call Trace:
      tcf_bpf_cfg_cleanup+0x2f/0x40 [act_bpf]
      tcf_bpf_cleanup+0x4c/0x70 [act_bpf]
      __tcf_idr_release+0x79/0x140
      tcf_bpf_init+0x125/0x330 [act_bpf]
      tcf_action_init_1+0x2cc/0x430
      ? get_page_from_freelist+0x3f0/0x11b0
      tcf_action_init+0xd3/0x1b0
      tc_ctl_action+0x18b/0x240
      rtnetlink_rcv_msg+0x29c/0x310
      ? _cond_resched+0x15/0x30
      ? __kmalloc_node_track_caller+0x1b9/0x270
      ? rtnl_calcit.isra.29+0x100/0x100
      netlink_rcv_skb+0xd2/0x110
      netlink_unicast+0x17c/0x230
      netlink_sendmsg+0x2cd/0x3c0
      sock_sendmsg+0x30/0x40
      ___sys_sendmsg+0x27a/0x290
      ? mem_cgroup_commit_charge+0x80/0x130
      ? page_add_new_anon_rmap+0x73/0xc0
      ? do_anonymous_page+0x2a2/0x560
      ? __handle_mm_fault+0xc75/0xe20
      __sys_sendmsg+0x58/0xa0
      do_syscall_64+0x6e/0x1a0
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
     RIP: 0033:0x7fcb2e58eba0
     RSP: 002b:00007ffc93c496c8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     RAX: ffffffffffffffda RBX: 00007ffc93c497f0 RCX: 00007fcb2e58eba0
     RDX: 0000000000000000 RSI: 00007ffc93c49740 RDI: 0000000000000003
     RBP: 000000005ac6a646 R08: 0000000000000002 R09: 0000000000000000
     R10: 00007ffc93c49120 R11: 0000000000000246 R12: 0000000000000000
     R13: 00007ffc93c49804 R14: 0000000000000001 R15: 000000000066afa0
     Code: 5f 00 48 8b 43 20 48 c7 c7 70 2f 7c b8 c7 40 10 00 00 00 00 5b e9 a5 8b 61 00 0f 1f 44 00 00 0f 1f 44 00 00 41 54 55 48 89 fd 53 <48> 8b 47 20 f0 ff 08 74 05 5b 5d 41 5c c3 41 89 f4 0f 1f 44 00
     RIP: __bpf_prog_put+0xc/0xc0 RSP: ffff9594003ef728
     CR2: 0000000000000020
    
    Fix it in tcf_bpf_cfg_cleanup(), ensuring that bpf_prog_{put,destroy}(f)
    is called only when f is not NULL.
    
    Fixes: bbc09e7842a5 ("net/sched: fix idr leak on the error path of tcf_bpf_init()")
    Reported-by: Lucas Bates <lucasb@mojatatu.com>
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7aea3ee65f1c1e08cf27e4656c4bf87f2f78db5
Author: Craig Dillabaugh <cdillaba@mojatatu.com>
Date:   Mon Mar 26 14:58:32 2018 -0400

    net sched actions: fix dumping which requires several messages to user space
    
    
    [ Upstream commit 734549eb550c0c720bc89e50501f1b1e98cdd841 ]
    
    Fixes a bug in the tcf_dump_walker function that can cause some actions
    to not be reported when dumping a large number of actions. This issue
    became more aggrevated when cookies feature was added. In particular
    this issue is manifest when large cookie values are assigned to the
    actions and when enough actions are created that the resulting table
    must be dumped in multiple batches.
    
    The number of actions returned in each batch is limited by the total
    number of actions and the memory buffer size.  With small cookies
    the numeric limit is reached before the buffer size limit, which avoids
    the code path triggering this bug. When large cookies are used buffer
    fills before the numeric limit, and the erroneous code path is hit.
    
    For example after creating 32 csum actions with the cookie
    aaaabbbbccccdddd
    
    $ tc actions ls action csum
    total acts 26
    
        action order 0: csum (tcp) action continue
        index 1 ref 1 bind 0
        cookie aaaabbbbccccdddd
    
        .....
    
        action order 25: csum (tcp) action continue
        index 26 ref 1 bind 0
        cookie aaaabbbbccccdddd
    total acts 6
    
        action order 0: csum (tcp) action continue
        index 28 ref 1 bind 0
        cookie aaaabbbbccccdddd
    
        ......
    
        action order 5: csum (tcp) action continue
        index 32 ref 1 bind 0
        cookie aaaabbbbccccdddd
    
    Note that the action with index 27 is omitted from the report.
    
    Fixes: 4b3550ef530c ("[NET_SCHED]: Use nla_nest_start/nla_nest_end")"
    Signed-off-by: Craig Dillabaugh <cdillaba@mojatatu.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae4d4eb29e545b24aa04e947f156ec8e520c8b17
Author: Moshe Shemesh <moshe@mellanox.com>
Date:   Thu Feb 15 12:41:48 2018 +0200

    net/mlx5e: Verify coalescing parameters in range
    
    
    [ Upstream commit b392a2078b5e0094ff38aa0c9d2a31b3f607d4ef ]
    
    Add check of coalescing parameters received through ethtool are within
    range of values supported by the HW.
    Driver gets the coalescing rx/tx-usecs and rx/tx-frames as set by the
    users through ethtool. The ethtool support up to 32 bit value for each.
    However, mlx5 modify cq limits the coalescing time parameter to 12 bit
    and coalescing frames parameters to 16 bits.
    Return out of range error if user tries to set these parameters to
    higher values.
    
    Fixes: f62b8bb8f2d3 ('net/mlx5: Extend mlx5_core to support ConnectX-4 Ethernet functionality')
    Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7102de5aef566b2a51111d49d81a14bb10bb36c4
Author: Alexander Potapenko <glider@google.com>
Date:   Fri Mar 23 13:49:02 2018 +0100

    netlink: make sure nladdr has correct size in netlink_connect()
    
    
    [ Upstream commit 7880287981b60a6808f39f297bb66936e8bdf57a ]
    
    KMSAN reports use of uninitialized memory in the case when |alen| is
    smaller than sizeof(struct sockaddr_nl), and therefore |nladdr| isn't
    fully copied from the userspace.
    
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Fixes: 1da177e4c3f41524 ("Linux-2.6.12-rc2")
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbf5fab136f69fbd5121bba6e64a56ce76ad2484
Author: Jeff Barnhill <0xeffeff@gmail.com>
Date:   Thu Apr 5 21:29:47 2018 +0000

    net/ipv6: Increment OUTxxx counters after netfilter hook
    
    
    [ Upstream commit 71a1c915238c970cd9bdd5bf158b1279d6b6d55b ]
    
    At the end of ip6_forward(), IPSTATS_MIB_OUTFORWDATAGRAMS and
    IPSTATS_MIB_OUTOCTETS are incremented immediately before the NF_HOOK call
    for NFPROTO_IPV6 / NF_INET_FORWARD.  As a result, these counters get
    incremented regardless of whether or not the netfilter hook allows the
    packet to continue being processed.  This change increments the counters
    in ip6_forward_finish() so that it will not happen if the netfilter hook
    chooses to terminate the packet, which is similar to how IPv4 works.
    
    Signed-off-by: Jeff Barnhill <0xeffeff@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3b4bc07821c2759ccfde9b860fb60f9eceae80e
Author: David Ahern <dsahern@gmail.com>
Date:   Thu Mar 29 17:44:57 2018 -0700

    net/ipv6: Fix route leaking between VRFs
    
    
    [ Upstream commit b6cdbc85234b072340b8923e69f49ec293f905dc ]
    
    Donald reported that IPv6 route leaking between VRFs is not working.
    The root cause is the strict argument in the call to rt6_lookup when
    validating the nexthop spec.
    
    ip6_route_check_nh validates the gateway and device (if given) of a
    route spec. It in turn could call rt6_lookup (e.g., lookup in a given
    table did not succeed so it falls back to a full lookup) and if so
    sets the strict argument to 1. That means if the egress device is given,
    the route lookup needs to return a result with the same device. This
    strict requirement does not work with VRFs (IPv4 or IPv6) because the
    oif in the flow struct is overridden with the index of the VRF device
    to trigger a match on the l3mdev rule and force the lookup to its table.
    
    The right long term solution is to add an l3mdev index to the flow
    struct such that the oif is not overridden. That solution will not
    backport well, so this patch aims for a simpler solution to relax the
    strict argument if the route spec device is an l3mdev slave. As done
    in other places, use the FLOWI_FLAG_SKIP_NH_OIF to know that the
    RT6_LOOKUP_F_IFACE flag needs to be removed.
    
    Fixes: ca254490c8df ("net: Add VRF support to IPv6 stack")
    Reported-by: Donald Sharp <sharpd@cumulusnetworks.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 202f1915fa1d1f10ad2ddb58b9c360e030257791
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Mar 26 08:08:07 2018 -0700

    net: fix possible out-of-bound read in skb_network_protocol()
    
    
    [ Upstream commit 1dfe82ebd7d8fd43dba9948fdfb31f145014baa0 ]
    
    skb mac header is not necessarily set at the time skb_network_protocol()
    is called. Use skb->data instead.
    
    BUG: KASAN: slab-out-of-bounds in skb_network_protocol+0x46b/0x4b0 net/core/dev.c:2739
    Read of size 2 at addr ffff8801b3097a0b by task syz-executor5/14242
    
    CPU: 1 PID: 14242 Comm: syz-executor5 Not tainted 4.16.0-rc6+ #280
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x194/0x24d lib/dump_stack.c:53
     print_address_description+0x73/0x250 mm/kasan/report.c:256
     kasan_report_error mm/kasan/report.c:354 [inline]
     kasan_report+0x23c/0x360 mm/kasan/report.c:412
     __asan_report_load_n_noabort+0xf/0x20 mm/kasan/report.c:443
     skb_network_protocol+0x46b/0x4b0 net/core/dev.c:2739
     harmonize_features net/core/dev.c:2924 [inline]
     netif_skb_features+0x509/0x9b0 net/core/dev.c:3011
     validate_xmit_skb+0x81/0xb00 net/core/dev.c:3084
     validate_xmit_skb_list+0xbf/0x120 net/core/dev.c:3142
     packet_direct_xmit+0x117/0x790 net/packet/af_packet.c:256
     packet_snd net/packet/af_packet.c:2944 [inline]
     packet_sendmsg+0x3aed/0x60b0 net/packet/af_packet.c:2969
     sock_sendmsg_nosec net/socket.c:629 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:639
     ___sys_sendmsg+0x767/0x8b0 net/socket.c:2047
     __sys_sendmsg+0xe5/0x210 net/socket.c:2081
    
    Fixes: 19acc327258a ("gso: Handle Trans-Ether-Bridging protocol in skb_network_protocol()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Pravin B Shelar <pshelar@ovn.org>
    Reported-by: Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dd65ec55e313e2962ba893ed0f2cd2ff09c2c5b
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Sat Apr 7 20:37:40 2018 +0200

    net: dsa: Discard frames from unused ports
    
    
    [ Upstream commit fc5f33768cca7144f8d793205b229d46740d183b ]
    
    The Marvell switches under some conditions will pass a frame to the
    host with the port being the CPU port. Such frames are invalid, and
    should be dropped. Not dropping them can result in a crash when
    incrementing the receive statistics for an invalid port.
    
    Reported-by: Chris Healy <cphealy@gmail.com>
    Fixes: 91da11f870f0 ("net: Distributed Switch Architecture protocol support")
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-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>

commit 14fed02e94a8fe69986ef57457ae9dc142a3e5e9
Author: Raghuram Chary J <raghuramchary.jallipalli@microchip.com>
Date:   Tue Mar 27 14:51:16 2018 +0530

    lan78xx: Crash in lan78xx_writ_reg (Workqueue: events lan78xx_deferred_multicast_write)
    
    
    [ Upstream commit 2d2d99ec13f62d5d2cecb6169dfdb6bbe05356d0 ]
    
    Description:
    Crash was reported with syzkaller pointing to lan78xx_write_reg routine.
    
    Root-cause:
    Proper cleanup of workqueues and init/setup routines was not happening
    in failure conditions.
    
    Fix:
    Handled the error conditions by cleaning up the queues and init/setup
    routines.
    
    Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Raghuram Chary J <raghuramchary.jallipalli@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dad8b0244bac90b22a62dac1d86a00bd73e95a3c
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Mar 23 14:47:30 2018 +0100

    ipv6: the entire IPv6 header chain must fit the first fragment
    
    
    [ Upstream commit 10b8a3de603df7b96004179b1b33b1708c76d144 ]
    
    While building ipv6 datagram we currently allow arbitrary large
    extheaders, even beyond pmtu size. The syzbot has found a way
    to exploit the above to trigger the following splat:
    
    kernel BUG at ./include/linux/skbuff.h:2073!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
        (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 4230 Comm: syzkaller672661 Not tainted 4.16.0-rc2+ #326
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    RIP: 0010:__skb_pull include/linux/skbuff.h:2073 [inline]
    RIP: 0010:__ip6_make_skb+0x1ac8/0x2190 net/ipv6/ip6_output.c:1636
    RSP: 0018:ffff8801bc18f0f0 EFLAGS: 00010293
    RAX: ffff8801b17400c0 RBX: 0000000000000738 RCX: ffffffff84f01828
    RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff8801b415ac18
    RBP: ffff8801bc18f360 R08: ffff8801b4576844 R09: 0000000000000000
    R10: ffff8801bc18f380 R11: ffffed00367aee4e R12: 00000000000000d6
    R13: ffff8801b415a740 R14: dffffc0000000000 R15: ffff8801b45767c0
    FS:  0000000001535880(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000002000b000 CR3: 00000001b4123001 CR4: 00000000001606e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
      ip6_finish_skb include/net/ipv6.h:969 [inline]
      udp_v6_push_pending_frames+0x269/0x3b0 net/ipv6/udp.c:1073
      udpv6_sendmsg+0x2a96/0x3400 net/ipv6/udp.c:1343
      inet_sendmsg+0x11f/0x5e0 net/ipv4/af_inet.c:764
      sock_sendmsg_nosec net/socket.c:630 [inline]
      sock_sendmsg+0xca/0x110 net/socket.c:640
      ___sys_sendmsg+0x320/0x8b0 net/socket.c:2046
      __sys_sendmmsg+0x1ee/0x620 net/socket.c:2136
      SYSC_sendmmsg net/socket.c:2167 [inline]
      SyS_sendmmsg+0x35/0x60 net/socket.c:2162
      do_syscall_64+0x280/0x940 arch/x86/entry/common.c:287
      entry_SYSCALL_64_after_hwframe+0x42/0xb7
    RIP: 0033:0x4404c9
    RSP: 002b:00007ffdce35f948 EFLAGS: 00000217 ORIG_RAX: 0000000000000133
    RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 00000000004404c9
    RDX: 0000000000000003 RSI: 0000000020001f00 RDI: 0000000000000003
    RBP: 00000000006cb018 R08: 00000000004002c8 R09: 00000000004002c8
    R10: 0000000020000080 R11: 0000000000000217 R12: 0000000000401df0
    R13: 0000000000401e80 R14: 0000000000000000 R15: 0000000000000000
    Code: ff e8 1d 5e b9 fc e9 15 e9 ff ff e8 13 5e b9 fc e9 44 e8 ff ff e8 29
    5e b9 fc e9 c0 e6 ff ff e8 3f f3 80 fc 0f 0b e8 38 f3 80 fc <0f> 0b 49 8d
    87 80 00 00 00 4d 8d 87 84 00 00 00 48 89 85 20 fe
    RIP: __skb_pull include/linux/skbuff.h:2073 [inline] RSP: ffff8801bc18f0f0
    RIP: __ip6_make_skb+0x1ac8/0x2190 net/ipv6/ip6_output.c:1636 RSP:
    ffff8801bc18f0f0
    
    As stated by RFC 7112 section 5:
    
       When a host fragments an IPv6 datagram, it MUST include the entire
       IPv6 Header Chain in the First Fragment.
    
    So this patch addresses the issue dropping datagrams with excessive
    extheader length. It also updates the error path to report to the
    calling socket nonnegative pmtu values.
    
    The issue apparently predates git history.
    
    v1 -> v2: cleanup error path, as per Eric's suggestion
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: syzbot+91e6f9932ff122fa4410@syzkaller.appspotmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30d032b72d0697924cc495164aee9c796b4e1039
Author: Miguel Fadon Perlines <mfadon@teldat.com>
Date:   Thu Apr 5 10:25:38 2018 +0200

    arp: fix arp_filter on l3slave devices
    
    
    [ Upstream commit 58b35f27689b5eb514fc293c332966c226b1b6e4 ]
    
    arp_filter performs an ip_route_output search for arp source address and
    checks if output device is the same where the arp request was received,
    if it is not, the arp request is not answered.
    
    This route lookup is always done on main route table so l3slave devices
    never find the proper route and arp is not answered.
    
    Passing l3mdev_master_ifindex_rcu(dev) return value as oif fixes the
    lookup for l3slave devices while maintaining same behavior for non
    l3slave devices as this function returns 0 in that case.
    
    Fixes: 613d09b30f8b ("net: Use VRF device index for lookups on TX")
    Signed-off-by: Miguel Fadon Perlines <mfadon@teldat.com>
    Acked-by: David Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fea978223b59a9d6d358b0301d12d5997c43dcfd
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Mar 14 19:36:15 2018 +0100

    x86/microcode: Fix CPU synchronization routine
    
    commit bb8c13d61a629276a162c1d2b1a20a815cbcfbb7 upstream.
    
    Emanuel reported an issue with a hang during microcode update because my
    dumb idea to use one atomic synchronization variable for both rendezvous
    - before and after update - was simply bollocks:
    
      microcode: microcode_reload_late: late_cpus: 4
      microcode: __reload_late: cpu 2 entered
      microcode: __reload_late: cpu 1 entered
      microcode: __reload_late: cpu 3 entered
      microcode: __reload_late: cpu 0 entered
      microcode: __reload_late: cpu 1 left
      microcode: Timeout while waiting for CPUs rendezvous, remaining: 1
    
    CPU1 above would finish, leave and the others will still spin waiting for
    it to join.
    
    So do two synchronization atomics instead, which makes the code a lot more
    straightforward.
    
    Also, since the update is serialized and it also takes quite some time per
    microcode engine, increase the exit timeout by the number of CPUs on the
    system.
    
    That's ok because the moment all CPUs are done, that timeout will be cut
    short.
    
    Furthermore, panic when some of the CPUs timeout when returning from a
    microcode update: we can't allow a system with not all cores updated.
    
    Also, as an optimization, do not do the exit sync if microcode wasn't
    updated.
    
    Reported-by: Emanuel Czirai <xftroxgpx@protonmail.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Emanuel Czirai <xftroxgpx@protonmail.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Link: https://lkml.kernel.org/r/20180314183615.17629-2-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32bfd224e9d60ccd1d177e84b21f6e9b8d4aa541
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Mar 14 19:36:14 2018 +0100

    x86/microcode: Attempt late loading only when new microcode is present
    
    commit 2613f36ed965d0e5a595a1d931fd3b480e82d6fd upstream.
    
    Return UCODE_NEW from the scanning functions to denote that new microcode
    was found and only then attempt the expensive synchronization dance.
    
    Reported-by: Emanuel Czirai <xftroxgpx@protonmail.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Emanuel Czirai <xftroxgpx@protonmail.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Link: https://lkml.kernel.org/r/20180314183615.17629-1-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e1161f94614e76b90197c7f368f1354ab522741
Author: Ashok Raj <ashok.raj@intel.com>
Date:   Wed Feb 28 11:28:46 2018 +0100

    x86/microcode: Synchronize late microcode loading
    
    commit a5321aec6412b20b5ad15db2d6b916c05349dbff upstream.
    
    Original idea by Ashok, completely rewritten by Borislav.
    
    Before you read any further: the early loading method is still the
    preferred one and you should always do that. The following patch is
    improving the late loading mechanism for long running jobs and cloud use
    cases.
    
    Gather all cores and serialize the microcode update on them by doing it
    one-by-one to make the late update process as reliable as possible and
    avoid potential issues caused by the microcode update.
    
    [ Borislav: Rewrite completely. ]
    
    Co-developed-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Arjan Van De Ven <arjan.van.de.ven@intel.com>
    Link: https://lkml.kernel.org/r/20180228102846.13447-8-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7bc523cc535e186b19dfa4ba6038f221af22fb1e
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Feb 28 11:28:45 2018 +0100

    x86/microcode: Request microcode on the BSP
    
    commit cfb52a5a09c8ae3a1dafb44ce549fde5b69e8117 upstream.
    
    ... so that any newer version can land in the cache and can later be
    fished out by the application functions. Do that before grabbing the
    hotplug lock.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Arjan Van De Ven <arjan.van.de.ven@intel.com>
    Link: https://lkml.kernel.org/r/20180228102846.13447-7-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 194ed6edd93f5bcc80341b9b44392e7696230c5c
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Feb 28 11:28:44 2018 +0100

    x86/microcode/intel: Look into the patch cache first
    
    commit d8c3b52c00a05036e0a6b315b4b17921a7b67997 upstream.
    
    The cache might contain a newer patch - look in there first.
    
    A follow-on change will make sure newest patches are loaded into the
    cache of microcode patches.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Cc: Arjan Van De Ven <arjan.van.de.ven@intel.com>
    Link: https://lkml.kernel.org/r/20180228102846.13447-6-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 399c019ea77cc3d5687b3ce86a386932d49c840f
Author: Ashok Raj <ashok.raj@intel.com>
Date:   Wed Feb 28 11:28:43 2018 +0100

    x86/microcode: Do not upload microcode if CPUs are offline
    
    commit 30ec26da9967d0d785abc24073129a34c3211777 upstream.
    
    Avoid loading microcode if any of the CPUs are offline, and issue a
    warning. Having different microcode revisions on the system at any time
    is outright dangerous.
    
    [ Borislav: Massage changelog. ]
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Arjan Van De Ven <arjan.van.de.ven@intel.com>
    Link: http://lkml.kernel.org/r/1519352533-15992-4-git-send-email-ashok.raj@intel.com
    Link: https://lkml.kernel.org/r/20180228102846.13447-5-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1089ac9dda397cf5ef145f75c66902f36a58cb3a
Author: Ashok Raj <ashok.raj@intel.com>
Date:   Wed Feb 28 11:28:42 2018 +0100

    x86/microcode/intel: Writeback and invalidate caches before updating microcode
    
    commit 91df9fdf51492aec9fed6b4cbd33160886740f47 upstream.
    
    Updating microcode is less error prone when caches have been flushed and
    depending on what exactly the microcode is updating. For example, some
    of the issues around certain Broadwell parts can be addressed by doing a
    full cache flush.
    
    [ Borislav: Massage it and use native_wbinvd() in both cases. ]
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Cc: Arjan Van De Ven <arjan.van.de.ven@intel.com>
    Link: http://lkml.kernel.org/r/1519352533-15992-3-git-send-email-ashok.raj@intel.com
    Link: https://lkml.kernel.org/r/20180228102846.13447-4-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c1f5b2cd2cf6fa17e8cb96bd1f9693f14d4ef26
Author: Ashok Raj <ashok.raj@intel.com>
Date:   Wed Feb 28 11:28:41 2018 +0100

    x86/microcode/intel: Check microcode revision before updating sibling threads
    
    commit c182d2b7d0ca48e0d6ff16f7d883161238c447ed upstream.
    
    After updating microcode on one of the threads of a core, the other
    thread sibling automatically gets the update since the microcode
    resources on a hyperthreaded core are shared between the two threads.
    
    Check the microcode revision on the CPU before performing a microcode
    update and thus save us the WRMSR 0x79 because it is a particularly
    expensive operation.
    
    [ Borislav: Massage changelog and coding style. ]
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Cc: Arjan Van De Ven <arjan.van.de.ven@intel.com>
    Link: http://lkml.kernel.org/r/1519352533-15992-2-git-send-email-ashok.raj@intel.com
    Link: https://lkml.kernel.org/r/20180228102846.13447-3-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abb00ec0590932fe224156de4b76ba35ec14165a
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Feb 28 11:28:40 2018 +0100

    x86/microcode: Get rid of struct apply_microcode_ctx
    
    commit 854857f5944c59a881ff607b37ed9ed41d031a3b upstream.
    
    It is a useless remnant from earlier times. Use the ucode_state enum
    directly.
    
    No functional change.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Cc: Arjan Van De Ven <arjan.van.de.ven@intel.com>
    Link: https://lkml.kernel.org/r/20180228102846.13447-2-bp@alien8.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cea945c5a3bce4b8e7091c3de04b0c325a43188
Author: Borislav Petkov <bp@suse.de>
Date:   Fri Feb 16 12:26:40 2018 +0100

    x86/CPU: Check CPU feature bits after microcode upgrade
    
    commit 42ca8082e260dcfd8afa2afa6ec1940b9d41724c upstream.
    
    With some microcode upgrades, new CPUID features can become visible on
    the CPU. Check what the kernel has mirrored now and issue a warning
    hinting at possible things the user/admin can do to make use of the
    newly visible features.
    
    Originally-by: Ashok Raj <ashok.raj@intel.com>
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Ashok Raj <ashok.raj@intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20180216112640.11554-4-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a6150b2bad377fe8a04b5655d7d7724314c73fa
Author: Borislav Petkov <bp@suse.de>
Date:   Fri Feb 16 12:26:39 2018 +0100

    x86/CPU: Add a microcode loader callback
    
    commit 1008c52c09dcb23d93f8e0ea83a6246265d2cce0 upstream.
    
    Add a callback function which the microcode loader calls when microcode
    has been updated to a newer revision. Do the callback only when no error
    was encountered during loading.
    
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Ashok Raj <ashok.raj@intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20180216112640.11554-3-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e280980606e70b88866c87a1ec763adb5312c453
Author: Borislav Petkov <bp@suse.de>
Date:   Fri Feb 16 12:26:38 2018 +0100

    x86/microcode: Propagate return value from updating functions
    
    commit 3f1f576a195aa266813cbd4ca70291deb61e0129 upstream.
    
    ... so that callers can know when microcode was updated and act
    accordingly.
    
    Tested-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Ashok Raj <ashok.raj@intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20180216112640.11554-2-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3839c26e68deb3dc946796bd16cb58e714e3f5e
Author: Rodrigo Vivi <rodrigo.vivi@intel.com>
Date:   Thu Jan 25 14:25:24 2018 -0800

    drm/i915/cnp: Properly handle VBT ddc pin out of bounds.
    
    commit 6e3322c226f15bc1838007f5a75566f1482b8e40 upstream.
    
    If the table result is out of bounds on the array map
    there is something really wrong with VBT pin so we don't
    return that vbt_pin, but only return 0 instead.
    
    This basically reverts commit 'a8e6f3888b05 ("drm/i915/cnp:
    Ignore VBT request for know invalid DDC pin.")'
    
    Also this properly fixes commit 9c3b2689d01f ("drm/i915/cnl:
    Map VBT DDC Pin to BSpec DDC Pin.")
    
    v2: Do in a way that we don't break other platforms. (Jani)
    
    v3: Keep debug message (Jani)
    
    v4: Don't mess with 0 mapping was noticed by Jani and
        addressed with a simple solution suggested by Lucas
        that makes this even simpler.
    
    Fixes: a8e6f3888b05 ("drm/i915/cnp: Ignore VBT request for know invalid DDC pin.")
    Fixes: 9c3b2689d01f ("drm/i915/cnl: Map VBT DDC Pin to BSpec DDC Pin.")
    Cc: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Kai Heng Feng <kai.heng.feng@canonical.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Suggested-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180125222524.22059-1-rodrigo.vivi@intel.com
    (cherry picked from commit 3393ce1ed8fc43dbdb83952facaf04e644ca1d54)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1710c3baec145592701009a19a1bcdaee3adfdea
Author: Rodrigo Vivi <rodrigo.vivi@intel.com>
Date:   Tue Jan 23 09:40:50 2018 -0800

    drm/i915/cnp: Ignore VBT request for know invalid DDC pin.
    
    commit f24c606c21a8cb6f75adc20edcd80b6d851991bf upstream.
    
    Let's ignore VBT request if the pin is clearly wrong.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104139
    Cc: Kai Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180123174050.4261-1-rodrigo.vivi@intel.com
    Reviewed-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
    (cherry picked from commit a8e6f3888b05c1e7b685800a3371ce050720368f)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87ef4d6fc6b002e7634d719996157b379cd32f70
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Sat Dec 30 01:05:21 2017 +0300

    thermal: int3400_thermal: fix error handling in int3400_thermal_probe()
    
    
    [ Upstream commit 0be86969ae385c5c944286bd9f66068525de15ee ]
    
    There are resources that are not dealocated on failure path
    in int3400_thermal_probe().
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 452aecd060f2e70498df7a465bf5eb8f94b7f43f
Author: Mike Christie <mchristi@redhat.com>
Date:   Tue Nov 28 12:40:33 2017 -0600

    tcmu: release blocks for partially setup cmds
    
    
    [ Upstream commit 810b8153c4243d2012a6ec002ddd3bbc9a9ae8c2 ]
    
    If we cannot setup a cmd because we run out of ring space
    or global pages release the blocks before sleeping. This
    prevents a deadlock where dev0 has waiting_blocks set and
    needs N blocks, but dev1 to devX have each allocated N / X blocks
    and also hit the global block limit so they went to sleep.
    
    find_free_blocks is not able to take the sleeping dev's
    blocks becaause their waiting_blocks is set and even
    if it was not the block returned by find_last_bit could equal
    dbi_max. The latter will probably never happen because
    DATA_BLOCK_BITS is so high but in the next patches
    DATA_BLOCK_BITS and TCMU_GLOBAL_MAX_BLOCKS will be settable so
    it might be lower and could happen.
    
    Signed-off-by: Mike Christie <mchristi@redhat.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46279ed3116919273f0481c1d2eba59e43521ba1
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Tue Jan 9 14:39:23 2018 +0100

    perf tools: Fix copyfile_offset update of output offset
    
    
    [ Upstream commit fa1195ccc0af2d121abe0fe266a1caee8c265eea ]
    
    We need to increase output offset in each iteration, not decrease it as
    we currently do.
    
    I guess we were lucky to finish in most cases in first iteration, so the
    bug never showed. However it shows a lot when working with big (~4GB)
    size data.
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: 9c9f5a2f1944 ("perf tools: Introduce copyfile_offset() function")
    Link: http://lkml.kernel.org/r/20180109133923.25406-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit feb5c349feb5346b6509a2a78a1c6da3fb3431f6
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jan 3 23:39:27 2018 +0100

    crypto: aes-generic - build with -Os on gcc-7+
    
    
    [ Upstream commit 148b974deea927f5dbb6c468af2707b488bfa2de ]
    
    While testing other changes, I discovered that gcc-7.2.1 produces badly
    optimized code for aes_encrypt/aes_decrypt. This is especially true when
    CONFIG_UBSAN_SANITIZE_ALL is enabled, where it leads to extremely
    large stack usage that in turn might cause kernel stack overflows:
    
    crypto/aes_generic.c: In function 'aes_encrypt':
    crypto/aes_generic.c:1371:1: warning: the frame size of 4880 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    crypto/aes_generic.c: In function 'aes_decrypt':
    crypto/aes_generic.c:1441:1: warning: the frame size of 4864 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    
    I verified that this problem exists on all architectures that are
    supported by gcc-7.2, though arm64 in particular is less affected than
    the others. I also found that gcc-7.1 and gcc-8 do not show the extreme
    stack usage but still produce worse code than earlier versions for this
    file, apparently because of optimization passes that generally provide
    a substantial improvement in object code quality but understandably fail
    to find any shortcuts in the AES algorithm.
    
    Possible workarounds include
    
    a) disabling -ftree-pre and -ftree-sra optimizations, this was an earlier
       patch I tried, which reliably fixed the stack usage, but caused a
       serious performance regression in some versions, as later testing
       found.
    
    b) disabling UBSAN on this file or all ciphers, as suggested by Ard
       Biesheuvel. This would lead to massively better crypto performance in
       UBSAN-enabled kernels and avoid the stack usage, but there is a concern
       over whether we should exclude arbitrary files from UBSAN at all.
    
    c) Forcing the optimization level in a different way. Similar to a),
       but rather than deselecting specific optimization stages,
       this now uses "gcc -Os" for this file, regardless of the
       CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE/SIZE option. This is a reliable
       workaround for the stack consumption on all architecture, and I've
       retested the performance results now on x86, cycles/byte (lower is
       better) for cbc(aes-generic) with 256 bit keys:
    
                            -O2     -Os
            gcc-6.3.1       14.9    15.1
            gcc-7.0.1       14.7    15.3
            gcc-7.1.1       15.3    14.7
            gcc-7.2.1       16.8    15.9
            gcc-8.0.0       15.5    15.6
    
    This implements the option c) by enabling forcing -Os on all compiler
    versions starting with gcc-7.1. As a workaround for PR83356, it would
    only be needed for gcc-7.2+ with UBSAN enabled, but since it also shows
    better performance on gcc-7.1 without UBSAN, it seems appropriate to
    use the faster version here as well.
    
    Side note: during testing, I also played with the AES code in libressl,
    which had a similar performance regression from gcc-6 to gcc-7.2,
    but was three times slower overall. It might be interesting to
    investigate that further and possibly port the Linux implementation
    into that.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83356
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83651
    Cc: Richard Biener <rguenther@suse.de>
    Cc: Jakub Jelinek <jakub@gcc.gnu.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50dbed12aaa71bad03de94e2edc6c846693b1bfa
Author: Miquel Raynal <miquel.raynal@free-electrons.com>
Date:   Thu Jan 11 21:39:20 2018 +0100

    mtd: mtd_oobtest: Handle bitflips during reads
    
    
    [ Upstream commit 12663b442e5ac5aa3d6097cd3f287c71ba46d26e ]
    
    Reads from NAND devices usually trigger bitflips, this is an expected
    behavior. While bitflips are under a given threshold, the MTD core
    returns 0. However, when the number of corrected bitflips is above this
    same threshold, -EUCLEAN is returned to inform the upper layer that this
    block is slightly dying and soon the ECC engine will be overtaken so
    actions should be taken to move the data out of it.
    
    This particular condition should not be treated like an error and the
    test should continue.
    
    Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dad8f5220c5d85801dfda4475874dbbfff3f7e49
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jan 12 00:36:48 2018 -0800

    Input: goodix - disable IRQs while suspended
    
    
    [ Upstream commit faec44b6838312484d63e82286087cf2d5ebb891 ]
    
    We should not try to do any i2c transfers before the controller is
    resumed (which happens before our resume method gets called).
    
    So we need to disable our IRQ while suspended to enforce this. The
    code paths for devices with GPIOs for the int and reset pins already
    disable the IRQ the through goodix_free_irq().
    
    This commit also disables the IRQ while suspended for devices without
    GPIOs for the int and reset pins.
    
    This fixes the i2c bus sometimes getting stuck after a suspend/resume
    causing the touchscreen to sometimes not work after a suspend/resume.
    This has been tested on a GPD pocked device.
    
    BugLink: https://github.com/nexus511/gpd-ubuntu-packages/issues/10
    BugLink: https://www.reddit.com/r/GPDPocket/comments/7niut2/fix_for_broken_touch_after_resume_all_linux/
    Tested-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Bastien Nocera <hadess@hadess.net>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7c122fd723f5917ef3c46663d8a690d3ffb34e7
Author: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Date:   Wed Jan 10 10:40:09 2018 -0600

    ibmvnic: Don't handle RX interrupts when not up.
    
    
    [ Upstream commit 09fb35ead58cd557aa9b20576d15816bc91a4deb ]
    
    Initiating a kdump via the command line can cause a pending interrupt
    to be handled by the ibmvnic driver when initializing the sub-CRQ
    irqs during driver initialization.
    
    NIP [d000000000ca34f0] ibmvnic_interrupt_rx+0x40/0xd0 [ibmvnic]
    LR [c000000008132ef0] __handle_irq_event_percpu+0xa0/0x2f0
    Call Trace:
    [c000000047fcfde0] [c000000008132ef0] __handle_irq_event_percpu+0xa0/0x2f0
    [c000000047fcfea0] [c00000000813317c] handle_irq_event_percpu+0x3c/0x90
    [c000000047fcfee0] [c00000000813323c] handle_irq_event+0x6c/0xd0
    [c000000047fcff10] [c0000000081385e0] handle_fasteoi_irq+0xf0/0x250
    [c000000047fcff40] [c0000000081320a0] generic_handle_irq+0x50/0x80
    [c000000047fcff60] [c000000008014984] __do_irq+0x84/0x1d0
    [c000000047fcff90] [c000000008027564] call_do_irq+0x14/0x24
    [c00000003c92af00] [c000000008014b70] do_IRQ+0xa0/0x120
    [c00000003c92af50] [c000000008002594] hardware_interrupt_common+0x114/0x180
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82c353ad3da1cb1678ea315c61c60a251e81deb9
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Jan 11 15:51:58 2018 +0200

    sdhci: Advertise 2.0v supply on SDIO host controller
    
    
    [ Upstream commit 2a609abe71ca59e4bd7139e161eaca2144ae6f2e ]
    
    On Intel Edison the Broadcom Wi-Fi card, which is connected to SDIO,
    requires 2.0v, while the host, according to Intel Merrifield TRM,
    supports 1.8v supply only.
    
    The card announces itself as
    
      mmc2: new ultra high speed DDR50 SDIO card at address 0001
    
    Introduce a custom OCR mask for SDIO host controller on Intel Merrifield
    and add a special case to sdhci_set_power_noreg() to override 2.0v supply
    by enforcing 1.8v power choice.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55a0ef8d9d71632bd5410c480d63bd72922cee3c
Author: Jiri Bohac <jbohac@suse.cz>
Date:   Sat Jan 6 02:00:13 2018 +0100

    x86/gart: Exclude GART aperture from vmcore
    
    
    [ Upstream commit 2a3e83c6f96c513f43ce5a8c9034608ea584a255 ]
    
    On machines where the GART aperture is mapped over physical RAM
    /proc/vmcore contains the remapped range and reading it may cause hangs or
    reboots.
    
    In the past, the GART region was added into the resource map, implemented
    by commit 56dd669a138c ("[PATCH] Insert GART region into resource map")
    
    However, inserting the iomem_resource from the early GART code caused
    resource conflicts with some AGP drivers (bko#72201), which got avoided by
    reverting the patch in commit 707d4eefbdb3 ("Revert [PATCH] Insert GART
    region into resource map"). This revert introduced the /proc/vmcore bug.
    
    The vmcore ELF header is either prepared by the kernel (when using the
    kexec_file_load syscall) or by the kexec userspace (when using the kexec_load
    syscall). Since we no longer have the GART iomem resource, the userspace
    kexec has no way of knowing which region to exclude from the ELF header.
    
    Changes from v1 of this patch:
    Instead of excluding the aperture from the ELF header, this patch
    makes /proc/vmcore return zeroes in the second kernel when attempting to
    read the aperture region. This is done by reusing the
    gart_oldmem_pfn_is_ram infrastructure originally intended to exclude XEN
    balooned memory. This works for both, the kexec_file_load and kexec_load
    syscalls.
    
    [Note that the GART region is the same in the first and second kernels:
    regardless whether the first kernel fixed up the northbridge/bios setting
    and mapped the aperture over physical memory, the second kernel finds the
    northbridge properly configured by the first kernel and the aperture
    never overlaps with e820 memory because the second kernel has a fake e820
    map created from the crashkernel memory regions. Thus, the second kernel
    keeps the aperture address/size as configured by the first kernel.]
    
    register_oldmem_pfn_is_ram can only register one callback and returns an error
    if the callback has been registered already. Since XEN used to be the only user
    of this function, it never checks the return value. Now that we have more than
    one user, I added a WARN_ON just in case agp, XEN, or any other future user of
    register_oldmem_pfn_is_ram were to step on each other's toes.
    
    Fixes: 707d4eefbdb3 ("Revert [PATCH] Insert GART region into resource map")
    Signed-off-by: Jiri Bohac <jbohac@suse.cz>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Toshi Kani <toshi.kani@hpe.com>
    Cc: David Airlie <airlied@linux.ie>
    Cc: yinghai@kernel.org
    Cc: joro@8bytes.org
    Cc: kexec@lists.infradead.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Link: https://lkml.kernel.org/r/20180106010013.73suskgxm7lox7g6@dwarf.suse.cz
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a68ef47bea6ff33ff60719cb1f24d4849358469
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Wed Jan 10 14:37:13 2018 +0000

    gpio: thunderx: fix error return code in thunderx_gpio_probe()
    
    
    [ Upstream commit 76e28f5ffed82b1e81a86c4eb8d0420515765620 ]
    
    Fix to return error code -ENOMEM from the error handling
    case instead of 0, as done elsewhere in this function.
    
    Fixes: 5a2a30024d8c ("gpio: Add gpio driver support for ThunderX and OCTEON-TX")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Acked-by: David Daney <david.daney@cavium.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27fac1611fdd80d9332a94ad4779dcb4f0fabf56
Author: Parav Pandit <parav@mellanox.com>
Date:   Mon Jan 8 17:04:48 2018 +0200

    RDMA/cma: Fix rdma_cm path querying for RoCE
    
    
    [ Upstream commit 89838118a515847d3e5c904d2e022779a7173bec ]
    
    The 'if' logic in ucma_query_path was broken with OPA was introduced
    and started to treat RoCE paths as as OPA paths. Invert the logic
    of the 'if' so only OPA paths are treated as OPA paths.
    
    Otherwise the path records returned to rdma_cma users are mangled
    when in RoCE mode.
    
    Fixes: 57520751445b ("IB/SA: Add OPA path record type")
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce87afbbada681f846d44032d1e241a81e451392
Author: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Date:   Fri Jan 5 05:27:41 2018 -0800

    scsi: megaraid_sas: unload flag should be set after scsi_remove_host is called
    
    
    [ Upstream commit f3f7920b3910171b2999c7dc2335eb9f583e44f2 ]
    
    Issue - Driver returns DID_NO_CONNECT when unload is in progress,
    indicated using instance->unload flag. In case of dynamic unload of
    driver, this flag is set before calling scsi_remove_host(). While doing
    manual driver unload, user will see lots of prints for Sync Cache
    command with DID_NO_CONNECT status.
    
    Fix - Set the instance->unload flag after scsi_remove_host(). Allow
    device removal process to be completed and do not block any command
    before that.  SCSI commands (like SYNC_CACHE) are received (as part of
    scsi_remove_host) by driver during unload will be submitted further down
    to the drives.
    
    Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 458419bb84292fff602a4b01b97d16a32852a09c
Author: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Date:   Fri Jan 5 05:27:40 2018 -0800

    scsi: megaraid_sas: Error handling for invalid ldcount provided by firmware in RAID map
    
    
    [ Upstream commit 7ada701d0d5e5c6d357e157a72b841db3e8d03f4 ]
    
    Currently driver does not validate ldcount provided by firmware.  If the
    value is invalid, fail RAID map validation accordingly.  This issue is
    rare to hit in field and is fixed as part of code review.
    
    Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edde080c5e336112792c5e216bc0a45774700c58
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Wed Jan 10 21:31:56 2018 +0100

    PM / domains: Don't skip driver's ->suspend|resume_noirq() callbacks
    
    
    [ Upstream commit a935424bb658f9ca37eb5e94119b857998341356 ]
    
    Commit 10da65423fdb (PM / Domains: Call driver's noirq callbacks)
    started to respect driver's noirq callbacks, but while doing that it
    also introduced a few potential problems.
    
    More precisely, in genpd_finish_suspend() and genpd_resume_noirq()
    the noirq callbacks at the driver level should be invoked, no matter
    of whether dev->power.wakeup_path is set or not.
    
    Additionally, the commit in question also made genpd_resume_noirq()
    to ignore the return value from pm_runtime_force_resume().
    
    Let's fix both these issues!
    
    Fixes: 10da65423fdb (PM / Domains: Call driver's noirq callbacks)
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3018e3d5171e4777a0f3cc4cfeac12f876482321
Author: Arjun Vynipadath <arjun@chelsio.com>
Date:   Wed Jan 10 12:02:13 2018 +0530

    cxgb4vf: Fix SGE FL buffer initialization logic for 64K pages
    
    
    [ Upstream commit ea0a42109aee7b92e631c4eb3f2219fadf58acdd ]
    
    We'd come in with SGE_FL_BUFFER_SIZE[0] and [1] both equal to 64KB and
    the extant logic would flag that as an error. This was already fixed in
    cxgb4 driver with "92ddcc7 cxgb4: Fix some small bugs in
    t4_sge_init_soft() when our Page Size is 64KB".
    
    Original Work by: Casey Leedom <leedom@chelsio.com>
    Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
    Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2320552d1f538bc7d6ac74e899a8ab4bb2a82d4
Author: Yintian Tao <yttao@amd.com>
Date:   Thu Jan 4 11:45:23 2018 +0800

    drm/amd/powerplay: fix memory leakage when reload (v2)
    
    
    [ Upstream commit a25513e7b9b15c318ec44113682e988829aef746 ]
    
    add smu_free_memory when smu fini to prevent memory leakage
    
    v2: squash in typo fix (Yintian) and warning (Harry)
    
    Signed-off-by: Yintian Tao <yttao@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70557b7f58db944a43c2e0ae0e0736a6ab0b2edb
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Fri Oct 27 11:06:49 2017 -0400

    i40evf: don't rely on netif_running() outside rtnl_lock()
    
    
    [ Upstream commit 44b034b406211fc103159f82b9e601e05675c739 ]
    
    In i40evf_reset_task we use netif_running() to determine whether or not
    the device is currently up. This allows us to properly free queue memory
    and shut down things before we request the hardware reset.
    
    It turns out that we cannot be guaranteed of netif_running() returning
    false until the device is fully up, as the kernel core code sets
    __LINK_STATE_START prior to calling .ndo_open. Since we're not holding
    the rtnl_lock(), it's possible that the driver's i40evf_open handler
    function is currently being called while we're resetting.
    
    We can't simply hold the rtnl_lock() while checking netif_running() as
    this could cause a deadlock with the i40evf_open() function.
    Additionally, we can't avoid the deadlock by holding the rtnl_lock()
    over the whole reset path, as this essentially serializes all resets,
    and can cause massive delays if we have multiple VFs on a system.
    
    Instead, lets just check our own internal state __I40EVF_RUNNING state
    field. This allows us to ensure that the state is correct and is only
    set after we've finished bringing the device up.
    
    Without this change we might free data structures about device queues
    and other memory before they've been fully allocated.
    
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6e80af54604d195259e862c040f1220c1a1972c6
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Sun Feb 25 15:10:52 2018 +0100

    Bluetooth: hci_bcm: Make shutdown and device wake GPIO optional
    
    commit ab2f336cb7e629de74d8af06bcaf6b15e4230e19 upstream.
    
    According to the devicetree binding the shutdown and device wake
    GPIOs are optional. Since commit 3e81a4ca51a1 ("Bluetooth: hci_bcm:
    Mandate presence of shutdown and device wake GPIO") this driver
    won't probe anymore on Raspberry Pi 3 and Zero W (no device wake GPIO
    connected). So fix this regression by reverting this commit partially.
    
    Fixes: 3e81a4ca51a1 ("Bluetooth: hci_bcm: Mandate presence of shutdown and device wake GPIO")
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Reviewed-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8d843fe374b5ba9715f47766a7644d02ebc3482
Author: Ronald Tschalär <ronald@innovation.ch>
Date:   Wed Jan 10 16:32:10 2018 +0100

    Bluetooth: hci_bcm: Validate IRQ before using it
    
    
    [ Upstream commit 4a59f1fab91e9445e34c69d8e4401a0d6bdbe914 ]
    
    The ->close, ->suspend and ->resume hooks assume presence of a valid IRQ
    if the device is wakeup capable.  However it's entirely possible that
    wakeup was enabled by some other entity besides this driver and in this
    case the user will get a WARN splat if no valid IRQ was found.  Avoid by
    checking if the IRQ is valid, i.e. > 0.
    
    Case in point:  On recent MacBook Pros, the Bluetooth device lacks an
    IRQ (because host wakeup is handled by the SMC, independently of the
    operating system), but it does possess a _PRW method (which specifies
    the SMC's GPE as wake event).  The ACPI core therefore automatically
    marks the physical Bluetooth device wakeup capable upon binding it to
    its ACPI companion:
    
    device_set_wakeup_capable+0x96/0xb0
    acpi_bind_one+0x28a/0x310
    acpi_platform_notify+0x20/0xa0
    device_add+0x215/0x690
    serdev_device_add+0x57/0xf0
    acpi_serdev_add_device+0xc9/0x110
    acpi_ns_walk_namespace+0x131/0x280
    acpi_walk_namespace+0xf5/0x13d
    serdev_controller_add+0x6f/0x110
    serdev_tty_port_register+0x98/0xf0
    tty_port_register_device_attr_serdev+0x3a/0x70
    uart_add_one_port+0x268/0x500
    serial8250_register_8250_port+0x32e/0x490
    dw8250_probe+0x46c/0x720
    platform_drv_probe+0x35/0x90
    driver_probe_device+0x300/0x450
    bus_for_each_drv+0x67/0xb0
    __device_attach+0xde/0x160
    bus_probe_device+0x9c/0xb0
    device_add+0x448/0x690
    platform_device_add+0x10e/0x260
    mfd_add_device+0x392/0x4c0
    mfd_add_devices+0xb1/0x110
    intel_lpss_probe+0x2a9/0x610 [intel_lpss]
    intel_lpss_pci_probe+0x7a/0xa8 [intel_lpss_pci]
    
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Ronald Tschalär <ronald@innovation.ch>
    [lukas: fix up ->suspend and ->resume as well, add commit message]
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e34b75c7db20ac19d8b7aeb82e6b94a43b67fbde
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Jan 10 16:32:10 2018 +0100

    Bluetooth: hci_bcm: Mandate presence of shutdown and device wake GPIO
    
    
    [ Upstream commit 3e81a4ca51a1172253078ca7abd6a91040b8fcf4 ]
    
    Commit 0395ffc1ee05 ("Bluetooth: hci_bcm: Add PM for BCM devices")
    amended this driver to request a shutdown and device wake GPIO on probe,
    but mandated that only one of them need to be present:
    
            /* Make sure at-least one of the GPIO is defined and that
             * a name is specified for this instance
             */
            if ((!dev->device_wakeup && !dev->shutdown) || !dev->name) {
                    dev_err(&pdev->dev, "invalid platform data\n");
                    return -EINVAL;
            }
    
    However the same commit added a call to bcm_gpio_set_power() to the
    ->probe hook, which unconditionally accesses *both* GPIOs.  Luckily,
    the resulting NULL pointer deref was never reported, suggesting there's
    no machine where either GPIO is missing.
    
    Commit 8a92056837fd ("Bluetooth: hci_bcm: Add (runtime)pm support to the
    serdev driver") removed the check whether at least one of the GPIOs is
    present without specifying a reason.
    
    Because commit 62aaefa7d038 ("Bluetooth: hci_bcm: improve use of gpios
    API") refactored the driver to use devm_gpiod_get_optional() instead of
    devm_gpiod_get(), one is now tempted to believe that the driver doesn't
    require *any* of the two GPIOs.
    
    Which is wrong, the driver still requires both GPIOs to avoid a NULL
    pointer deref.  To this end, establish the status quo ante and request
    the GPIOs with devm_gpiod_get() again.  Bail out of ->probe if either
    of them is missing.
    
    Oddly enough, whereas bcm_gpio_set_power() accesses the device wake pin
    unconditionally, bcm_suspend_device() and bcm_resume_device() do check
    for its presence before accessing it.  Those checks are superfluous,
    so remove them.
    
    Cc: Frédéric Danis <frederic.danis.oss@gmail.com>
    Cc: Loic Poulain <loic.poulain@linaro.org>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ca4e49e9be732841ea5fd44ce90db18e9855f65
Author: Stephen Hemminger <stephen@networkplumber.org>
Date:   Tue Jan 9 12:57:31 2018 -0800

    uio_hv_generic: check that host supports monitor page
    
    
    [ Upstream commit 06028d15177a1b406b7b075ea47c6a352732f23a ]
    
    In order for userspace application to signal host, it needs the
    host to support the monitor page property. Check for the flag
    and fail if this is not supported.
    
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0e9997e06a5f1feb4a896568d4da6fe006a023c
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Jan 7 21:54:00 2018 +0100

    EDAC, mv64x60: Fix an error handling path
    
    
    [ Upstream commit 68fa24f9121c04ef146b5158f538c8b32f285be5 ]
    
    We should not call edac_mc_del_mc() if a corresponding call to
    edac_mc_add_mc() has not been performed yet.
    
    So here, we should go to err instead of err2 to branch at the right
    place of the error handling path.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20180107205400.14068-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7018cb0149d16e30d777dde543bbdc9490fb54c3
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Dec 25 21:50:45 2017 +0100

    serdev: Fix serdev_uevent failure on ACPI enumerated serdev-controllers
    
    
    [ Upstream commit 7d09995dcb0577b4a56aad7f2bb56f28604e8f1a ]
    
    ACPI enumerated serdev-controllers do not have an ACPI companion, the ACPI
    companion belongs to the serdev-device child of the serdev-controller, not
    to the controller itself. This was causing serdev_uevent to always return
    -ENODEV when called on a serdev-controller leading to errors like these:
    
    kernel: serial serial0: uevent: failed to send synthetic uevent
    
    being logged. This commit modifies serdev_uevent to directly return 0
    when called on an ACPI enumerated serdev-controller fixing this.
    
    Note: I do not think that setting a modalias on a devicetree enumerated
    serdev-controller makes sense either. So perhaps the !dev->of_node part of
    the check can be dropped too, but I'm not entirely sure that doing this
    on devicetree too is correct.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3af99e83a27866531976965c0f9c25c65698c35c
Author: Paolo Valente <paolo.valente@linaro.org>
Date:   Tue Jan 9 10:27:58 2018 +0100

    block, bfq: put async queues for root bfq groups too
    
    
    [ Upstream commit 52257ffbfcaf58d247b13fb148e27ed17c33e526 ]
    
    For each pair [device for which bfq is selected as I/O scheduler,
    group in blkio/io], bfq maintains a corresponding bfq group. Each such
    bfq group contains a set of async queues, with each async queue
    created on demand, i.e., when some I/O request arrives for it.  On
    creation, an async queue gets an extra reference, to make sure that
    the queue is not freed as long as its bfq group exists.  Accordingly,
    to allow the queue to be freed after the group exited, this extra
    reference must released on group exit.
    
    The above holds also for a bfq root group, i.e., for the bfq group
    corresponding to the root blkio/io root for a given device. Yet, by
    mistake, the references to the existing async queues of a root group
    are not released when the latter exits. This causes a memory leak when
    the instance of bfq for a given device exits. In a similar vein,
    bfqg_stats_xfer_dead is not executed for a root group.
    
    This commit fixes bfq_pd_offline so that the latter executes the above
    missing operations for a root group too.
    
    Reported-by: Holger Hoffstätte <holger@applied-asynchrony.com>
    Reported-by: Guoqing Jiang <gqjiang@suse.com>
    Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
    Signed-off-by: Davide Ferrari <davideferrari8@gmail.com>
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a551b16c4903daff278a2cb07bdd1d2edabfe9b0
Author: Tony Lindgren <tony@atomide.com>
Date:   Wed Jan 3 10:18:03 2018 -0800

    tty: n_gsm: Allow ADM response in addition to UA for control dlci
    
    
    [ Upstream commit ea3d8465ab9b3e01be329ac5195970a84bef76c5 ]
    
    Some devices have the control dlci stay in ADM mode instead of the UA
    mode. This can seen at least on droid 4 when trying to open the ts
    27.010 mux port. Enabling n_gsm debug mode shows the control dlci
    always respond with DM to SABM instead of UA:
    
    # modprobe n_gsm debug=0xff
    # ldattach -d GSM0710 /dev/ttyS0 &
    gsmld_output: 00000000: f9 03 3f 01 1c f9
    --> 0) C: SABM(P)
    gsmld_receive: 00000000: f9 03 1f 01 36 f9
    <-- 0) C: DM(P)
    ...
    $ minicom -D /dev/gsmtty1
    minicom: cannot open /dev/gsmtty1: No error information
    $ strace minicom -D /dev/gsmtty1
    ...
    open("/dev/gsmtty1", O_RDWR|O_NOCTTY|O_NONBLOCK|O_LARGEFILE) = -1 EL2HLT
    
    Note that this is different issue from other n_gsm -EL2HLT issues such
    as timeouts when the control dlci does not respond at all.
    
    The ADM mode seems to be a quite common according to "RF Wireless World"
    article "GSM Issue-UE sends SABM and gets a DM response instead of
    UA response":
    
      This issue is most commonly observed in GSM networks where in UE sends
      SABM and expects network to send UA response but it ends up receiving
      DM response from the network. SABM stands for Set asynchronous balanced
      mode, UA stands for Unnumbered Acknowledge and DA stands for
      Disconnected Mode.
    
      An RLP entity can be in one of two modes:
      - Asynchronous Balanced Mode (ABM)
      - Asynchronous Disconnected Mode (ADM)
    
    Currently Linux kernel closes the control dlci after several retries
    in gsm_dlci_t1() on DM. This causes n_gsm /dev/gsmtty ports to produce
    error code -EL2HLT when trying to open them as the closing of control
    dlci has already set gsm->dead.
    
    Let's fix the issue by allowing control dlci stay in ADM mode after the
    retries so the /dev/gsmtty ports can be opened and used. It seems that
    it might take several attempts to get any response from the control
    dlci, so it's best to allow ADM mode only after the SABM retries are
    done.
    
    Note that for droid 4 additional patches are needed to mux the ttyS0
    pins and to toggle RTS gpio_149 to wake up the mdm6600 modem are also
    needed to use n_gsm. And the mdm6600 modem needs to be powered on.
    
    Cc: linux-serial@vger.kernel.org
    Cc: Alan Cox <alan@llwyncelyn.cymru>
    Cc: Jiri Prchal <jiri.prchal@aksignal.cz>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Marcel Partap <mpartap@gmx.net>
    Cc: Michael Scott <michael.scott@linaro.org>
    Cc: Peter Hurley <peter@hurleysoftware.com>
    Cc: Russ Gorby <russ.gorby@intel.com>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13ba69ddf542c35236400e1594506d47560dabc0
Author: Ming Lei <ming.lei@redhat.com>
Date:   Tue Jan 9 21:28:29 2018 +0800

    blk-mq: fix kernel oops in blk_mq_tag_idle()
    
    
    [ Upstream commit 8ab0b7dc73e1b3e2987d42554b2bff503f692772 ]
    
    HW queues may be unmapped in some cases, such as blk_mq_update_nr_hw_queues(),
    then we need to check it before calling blk_mq_tag_idle(), otherwise
    the following kernel oops can be triggered, so fix it by checking if
    the hw queue is unmapped since it doesn't make sense to idle the tags
    any more after hw queues are unmapped.
    
    [  440.771298] Workqueue: nvme-wq nvme_rdma_del_ctrl_work [nvme_rdma]
    [  440.779104] task: ffff894bae755ee0 ti: ffff893bf9bc8000 task.ti: ffff893bf9bc8000
    [  440.788359] RIP: 0010:[<ffffffffb730e2b4>]  [<ffffffffb730e2b4>] __blk_mq_tag_idle+0x24/0x40
    [  440.798697] RSP: 0018:ffff893bf9bcbd10  EFLAGS: 00010286
    [  440.805538] RAX: 0000000000000000 RBX: ffff895bb131dc00 RCX: 000000000000011f
    [  440.814426] RDX: 00000000ffffffff RSI: 0000000000000120 RDI: ffff895bb131dc00
    [  440.823301] RBP: ffff893bf9bcbd10 R08: 000000000001b860 R09: 4a51d361c00c0000
    [  440.832193] R10: b5907f32b4cc7003 R11: ffffd6cabfb57000 R12: ffff894bafd1e008
    [  440.841091] R13: 0000000000000001 R14: ffff895baf770000 R15: 0000000000000080
    [  440.849988] FS:  0000000000000000(0000) GS:ffff894bbdcc0000(0000) knlGS:0000000000000000
    [  440.859955] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  440.867274] CR2: 0000000000000008 CR3: 000000103d098000 CR4: 00000000001407e0
    [  440.876169] Call Trace:
    [  440.879818]  [<ffffffffb7309d68>] blk_mq_exit_hctx+0xd8/0xe0
    [  440.887051]  [<ffffffffb730dc40>] blk_mq_free_queue+0xf0/0x160
    [  440.894465]  [<ffffffffb72ff679>] blk_cleanup_queue+0xd9/0x150
    [  440.901881]  [<ffffffffc08a802b>] nvme_ns_remove+0x5b/0xb0 [nvme_core]
    [  440.910068]  [<ffffffffc08a811b>] nvme_remove_namespaces+0x3b/0x60 [nvme_core]
    [  440.919026]  [<ffffffffc08b817b>] __nvme_rdma_remove_ctrl+0x2b/0xb0 [nvme_rdma]
    [  440.928079]  [<ffffffffc08b8237>] nvme_rdma_del_ctrl_work+0x17/0x20 [nvme_rdma]
    [  440.937126]  [<ffffffffb70ab58a>] process_one_work+0x17a/0x440
    [  440.944517]  [<ffffffffb70ac3a8>] worker_thread+0x278/0x3c0
    [  440.951607]  [<ffffffffb70ac130>] ? manage_workers.isra.24+0x2a0/0x2a0
    [  440.959760]  [<ffffffffb70b352f>] kthread+0xcf/0xe0
    [  440.966055]  [<ffffffffb70b3460>] ? insert_kthread_work+0x40/0x40
    [  440.973715]  [<ffffffffb76d8658>] ret_from_fork+0x58/0x90
    [  440.980586]  [<ffffffffb70b3460>] ? insert_kthread_work+0x40/0x40
    [  440.988229] Code: 5b 41 5c 5d c3 66 90 0f 1f 44 00 00 48 8b 87 20 01 00 00 f0 0f ba 77 40 01 19 d2 85 d2 75 08 c3 0f 1f 80 00 00 00 00 55 48 89 e5 <f0> ff 48 08 48 8d 78 10 e8 7f 0f 05 00 5d c3 0f 1f 00 66 2e 0f
    [  441.011620] RIP  [<ffffffffb730e2b4>] __blk_mq_tag_idle+0x24/0x40
    [  441.019301]  RSP <ffff893bf9bcbd10>
    [  441.024052] CR2: 0000000000000008
    
    Reported-by: Zhang Yi <yizhan@redhat.com>
    Tested-by: Zhang Yi <yizhan@redhat.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1aa0564aae9e9269c1bc3de95f189fac4f2acc24
Author: Feras Daoud <ferasda@mellanox.com>
Date:   Tue Oct 31 14:57:27 2017 +0200

    net/mlx5e: IPoIB, Use correct timestamp in child receive flow
    
    
    [ Upstream commit 36e564b76f1862914ad32c35bab433e07da2ebf8 ]
    
    The current implementation takes the child timestamp object from
    the parent since the rq in mlx5i_complete_rx_cqe belongs to the parent.
    This change fixes the issue by taking the correct timestamp.
    
    Fixes: 7e7f4780c340 ("net/mlx5e: IPoIB, Use hash-table to map between QPN to child netdev")
    Signed-off-by: Feras Daoud <ferasda@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4beec7ede2aefbb4f5f2c02a9ca145c860fa41a
Author: chenxiang <chenxiang66@hisilicon.com>
Date:   Thu Jan 4 21:04:33 2018 +0800

    scsi: libsas: initialize sas_phy status according to response of DISCOVER
    
    
    [ Upstream commit affc67788fe5dfffad5cda3d461db5cf2b2ff2b0 ]
    
    The status of SAS PHY is in sas_phy->enabled. There is an issue that the
    status of a remote SAS PHY may be initialized incorrectly: if disable
    remote SAS PHY through sysfs interface (such as echo 0 >
    /sys/class/sas_phy/phy-1:0:0/enable), then reboot the system, and we
    will find the status of remote SAS PHY which is disabled before is
    1 (cat /sys/class/sas_phy/phy-1:0:0/enable). But actually the status of
    remote SAS PHY is disabled and the device attached is not found.
    
    In SAS protocol, NEGOTIATED LOGICAL LINK RATE field of DISCOVER response
    is 0x1 when remote SAS PHY is disabled. So initialize sas_phy->enabled
    according to the value of NEGOTIATED LOGICAL LINK RATE field.
    
    Signed-off-by: chenxiang <chenxiang66@hisilicon.com>
    Reviewed-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8e93148d4e6da200734a7c9722d09b812aef835
Author: Jason Yan <yanaijie@huawei.com>
Date:   Thu Jan 4 21:04:32 2018 +0800

    scsi: libsas: fix error when getting phy events
    
    
    [ Upstream commit 2b23d9509fd7174b362482cf5f3b5f9a2265bc33 ]
    
    The intend purpose here was to goto out if smp_execute_task() returned
    error. Obviously something got screwed up. We will never get these link
    error statistics below:
    
    ~:/sys/class/sas_phy/phy-1:0:12 # cat invalid_dword_count
    0
    ~:/sys/class/sas_phy/phy-1:0:12 # cat running_disparity_error_count
    0
    ~:/sys/class/sas_phy/phy-1:0:12 # cat loss_of_dword_sync_count
    0
    ~:/sys/class/sas_phy/phy-1:0:12 # cat phy_reset_problem_count
    0
    
    Obviously we should goto error handler if smp_execute_task() returns
    non-zero.
    
    Fixes: 2908d778ab3e ("[SCSI] aic94xx: new driver")
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    CC: John Garry <john.garry@huawei.com>
    CC: chenqilin <chenqilin2@huawei.com>
    CC: chenxiang <chenxiang66@hisilicon.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c16490ba27bb7c5bc5ebe22e50a607f84b6bf06f
Author: Jason Yan <yanaijie@huawei.com>
Date:   Thu Jan 4 21:04:31 2018 +0800

    scsi: libsas: fix memory leak in sas_smp_get_phy_events()
    
    
    [ Upstream commit 4a491b1ab11ca0556d2fda1ff1301e862a2d44c4 ]
    
    We've got a memory leak with the following producer:
    
    while true;
    do cat /sys/class/sas_phy/phy-1:0:12/invalid_dword_count >/dev/null;
    done
    
    The buffer req is allocated and not freed after we return. Fix it.
    
    Fixes: 2908d778ab3e ("[SCSI] aic94xx: new driver")
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    CC: John Garry <john.garry@huawei.com>
    CC: chenqilin <chenqilin2@huawei.com>
    CC: chenxiang <chenxiang66@hisilicon.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 614361530f03681c16b97aed0b0821ca11a96263
Author: Gal Pressman <galp@mellanox.com>
Date:   Sun Jan 7 12:08:35 2018 +0200

    net: Fix netdev_WARN_ONCE macro
    
    
    [ Upstream commit 72dd831e24cc9487a9cd534fdd675fe97e3c1839 ]
    
    netdev_WARN_ONCE is broken (whoops..), this fix will remove the
    unnecessary "condition" parameter, add the missing comma and change
    "arg" to "args".
    
    Fixes: 375ef2b1f0d0 ("net: Introduce netdev_*_once functions")
    Signed-off-by: Gal Pressman <galp@mellanox.com>
    Reviewed-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 088ebc83060e21f46c96e6aa107bfe1f0e84c571
Author: Jason Yan <yanaijie@huawei.com>
Date:   Fri Dec 8 17:42:04 2017 +0800

    scsi: libsas: Use dynamic alloced work to avoid sas event lost
    
    
    [ Upstream commit 1c393b970e0f4070e4376d45f89a2d19a5c895d0 ]
    
    Now libsas hotplug work is static, every sas event type has its own
    static work, LLDD driver queues the hotplug work into shost->work_q.  If
    LLDD driver burst posts lots hotplug events to libsas, the hotplug
    events may pending in the workqueue like
    
    shost->work_q
    new work[PORTE_BYTES_DMAED] --> |[PHYE_LOSS_OF_SIGNAL][PORTE_BYTES_DMAED] -> processing
                                    |<-------wait worker to process-------->|
    
    In this case, a new PORTE_BYTES_DMAED event coming, libsas try to queue
    it to shost->work_q, but this work is already pending, so it would be
    lost. Finally, libsas delete the related sas port and sas devices, but
    LLDD driver expect libsas add the sas port and devices(last sas event).
    
    This patch use dynamic allocated work to avoid this issue.
    
    Signed-off-by: Yijing Wang <wangyijing@huawei.com>
    CC: John Garry <john.garry@huawei.com>
    CC: Johannes Thumshirn <jthumshirn@suse.de>
    CC: Ewan Milne <emilne@redhat.com>
    CC: Christoph Hellwig <hch@lst.de>
    CC: Tomas Henzl <thenzl@redhat.com>
    CC: Dan Williams <dan.j.williams@intel.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eead4cd85fe3ec259364e77217ab254ebe16d512
Author: Tang Junhui <tang.junhui@zte.com.cn>
Date:   Mon Jan 8 12:21:21 2018 -0800

    bcache: segregate flash only volume write streams
    
    
    [ Upstream commit 4eca1cb28d8b0574ca4f1f48e9331c5f852d43b9 ]
    
    In such scenario that there are some flash only volumes
    , and some cached devices, when many tasks request these devices in
    writeback mode, the write IOs may fall to the same bucket as bellow:
    | cached data | flash data | cached data | cached data| flash data|
    then after writeback of these cached devices, the bucket would
    be like bellow bucket:
    | free | flash data | free | free | flash data |
    
    So, there are many free space in this bucket, but since data of flash
    only volumes still exists, so this bucket cannot be reclaimable,
    which would cause waste of bucket space.
    
    In this patch, we segregate flash only volume write streams from
    cached devices, so data from flash only volumes and cached devices
    can store in different buckets.
    
    Compare to v1 patch, this patch do not add a additionally open bucket
    list, and it is try best to segregate flash only volume write streams
    from cached devices, sectors of flash only volumes may still be mixed
    with dirty sectors of cached device, but the number is very small.
    
    [mlyle: fixed commit log formatting, permissions, line endings]
    
    Signed-off-by: Tang Junhui <tang.junhui@zte.com.cn>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9390f52f68a80fb82fc2394e94123ab3c7a890d6
Author: Tang Junhui <tang.junhui@zte.com.cn>
Date:   Mon Jan 8 12:21:19 2018 -0800

    bcache: stop writeback thread after detaching
    
    
    [ Upstream commit 8d29c4426b9f8afaccf28de414fde8a722b35fdf ]
    
    Currently, when a cached device detaching from cache, writeback thread is
    not stopped, and writeback_rate_update work is not canceled. For example,
    after the following command:
    echo 1 >/sys/block/sdb/bcache/detach
    you can still see the writeback thread. Then you attach the device to the
    cache again, bcache will create another writeback thread, for example,
    after below command:
    echo  ba0fb5cd-658a-4533-9806-6ce166d883b9 > /sys/block/sdb/bcache/attach
    then you will see 2 writeback threads.
    This patch stops writeback thread and cancels writeback_rate_update work
    when cached device detaching from cache.
    
    Compare with patch v1, this v2 patch moves code down into the register
    lock for safety in case of any future changes as Coly and Mike suggested.
    
    [edit by mlyle: commit log spelling/formatting]
    
    Signed-off-by: Tang Junhui <tang.junhui@zte.com.cn>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18303da51818759490dadbe0c0545f331c0a4e2d
Author: Rui Hua <huarui.dev@gmail.com>
Date:   Mon Jan 8 12:21:18 2018 -0800

    bcache: ret IOERR when read meets metadata error
    
    
    [ Upstream commit b221fc130c49c50f4c2250d22e873420765a9fa2 ]
    
    The read request might meet error when searching the btree, but the error
    was not handled in cache_lookup(), and this kind of metadata failure will
    not go into cached_dev_read_error(), finally, the upper layer will receive
    bi_status=0.  In this patch we judge the metadata error by the return
    value of bch_btree_map_keys(), there are two potential paths give rise to
    the error:
    
    1. Because the btree is not totally cached in memery, we maybe get error
       when read btree node from cache device (see bch_btree_node_get()), the
       likely errno is -EIO, -ENOMEM
    
    2. When read miss happens, bch_btree_insert_check_key() will be called to
       insert a "replace_key" to btree(see cached_dev_cache_miss(), just for
       doing preparatory work before insert the missed data to cache device),
       a failure can also happen in this situation, the likely errno is
       -ENOMEM
    
    bch_btree_map_keys() will return MAP_DONE in normal scenario, but we will
    get either -EIO or -ENOMEM in above two cases. if this happened, we should
    NOT recover data from backing device (when cache device is dirty) because
    we don't know whether bkeys the read request covered are all clean.  And
    after that happened, s->iop.status is still its initially value(0) before
    we submit s->bio.bio, we set it to BLK_STS_IOERR, so it can go into
    cached_dev_read_error(), and finally it can be passed to upper layer, or
    recovered by reread from backing device.
    
    [edit by mlyle: patch formatting, word-wrap, comment spelling,
    commit log format]
    
    Signed-off-by: Hua Rui <huarui.dev@gmail.com>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2300dbc6d1f373778d160ab223f0a1d51c9061e6
Author: Fuyun Liang <liangfuyun1@huawei.com>
Date:   Fri Jan 5 18:18:20 2018 +0800

    net: hns3: fix for changing MTU
    
    
    [ Upstream commit 5bad95a1e55f4d5bb41e130db859d57eaf1b1549 ]
    
    when changing MTU, The new MTU must need to be set to netdevice.
    
    Fixes: a8e8b7ff3517 ("net: hns3: Add support to change MTU in HNS3 hardware")
    Signed-off-by: Fuyun Liang <liangfuyun1@huawei.com>
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfa20d9d7fa9e6cdf0b814eef7f3af25fb92cadb
Author: Jian Shen <shenjian15@huawei.com>
Date:   Fri Jan 5 18:18:14 2018 +0800

    net: hns3: Fix an error macro definition of HNS3_TQP_STAT
    
    
    [ Upstream commit 57ffee737b36dbb81e8e60a37e01791553157a5e ]
    
    The member "stats_offset" was designed to indicate the offset
    of each member of struct ring_stats in struct hns3_enet_ring,
    but forgot to add the offset of the member in struct ring_stats.
    
    Fixes: 496d03e960a ("net: hns3: Add Ethtool support to HNS3 driver")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f55dc2a4c18d6b38db2d35395e5c9ddd09ddfdc5
Author: Jian Shen <shenjian15@huawei.com>
Date:   Fri Jan 5 18:18:13 2018 +0800

    net: hns3: Fix a loop index error of tqp statistics query
    
    
    [ Upstream commit 94bfaafac9d2a3c0bcca00d01e38f7597b741799 ]
    
    An error loop index was used while querying statistics data
    of tqps, which may cause call trace.
    
    Fixes: 496d03e960ae ("net: hns3: Add Ethtool support to HNS3 driver")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4434e6f5820f38c37c58fcb4e1b6a6858e4c847e
Author: Jian Shen <shenjian15@huawei.com>
Date:   Fri Jan 5 18:18:12 2018 +0800

    net: hns3: Fix an error of total drop packet statistics
    
    
    [ Upstream commit d2a5dca8404871be683c6bbc175ebf9c56dd2865 ]
    
    The dropped tx/rx packets number of each tqp should also
    be counted into the total drop tx/rx packets numbers.
    
    Fixes: 76ad4f0ee74 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8de98d55dc4bdcba4161d0163376929e9c03918
Author: Daniel Jurgens <danielj@mellanox.com>
Date:   Thu Jan 4 17:25:31 2018 +0200

    net/mlx5: Fix race for multiple RoCE enable
    
    
    [ Upstream commit 734dc065fc41f6143ff88225aa5d335cb1e0f6aa ]
    
    There are two potential problems with the existing implementation.
    
    1. Enable and disable can race after the atomic operations.
    2. If a command fails the refcount is left in an inconsistent state.
    
    Introduce a lock and perform error checking.
    
    Fixes: a6f7d2aff623 ("net/mlx5: Add support for multiple RoCE enable")
    Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
    Reviewed-by: Parav Pandit <parav@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 717df117663617ac31eea774895e9c383ba20303
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Dec 26 17:33:18 2017 +0000

    wl1251: check return from call to wl1251_acx_arp_ip_filter
    
    
    [ Upstream commit ac1181c60822292176ab96912208ec9f9819faf8 ]
    
    Currently the less than zero error check on ret is incorrect
    as it is checking a far earlier ret assignment rather than the
    return from the call to wl1251_acx_arp_ip_filter. Fix this by
    adding in the missing assginment.
    
    Detected by CoverityScan, CID#1164835 ("Logically dead code")
    
    Fixes: 204cc5c44fb6 ("wl1251: implement hardware ARP filtering")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb49779a13d9639e51f3dc0cd7307750eddecc23
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Tue Dec 19 12:33:56 2017 +0100

    rt2x00: do not pause queue unconditionally on error path
    
    
    [ Upstream commit 6dd80efd75ce7c2dbd9f117cf585ee2b33a42ee1 ]
    
    Pausing queue without checking threshold is racy with txdone path.
    Moreover we do not need pause queue on any error, but only if queue
    is full - in case when we send RTS frame ( other cases of almost full
    queue are already handled in rt2x00queue_write_tx_frame() ).
    
    Patch fixes of theoretically possible problem of pausing empty
    queue.
    
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Tested-by: Enrico Mioso <mrkiko.rs@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14d7f455a4da4117078e9324422832fb2d06c4b8
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Dec 26 13:59:09 2017 +0100

    power: supply: axp288_charger: Properly stop work on probe-error / remove
    
    
    [ Upstream commit 165c2357744e41391902a2a72dd170beb60c28d5 ]
    
    Properly stop any work we may have queued on probe-errors / remove.
    
    Rather then adding a remove driver callback for this, and goto style
    error handling to probe, use a devm_action for this.
    
    The devm_action gets registered before we register any of the extcon
    notifiers which may queue the work, devm does cleanup in reverse order,
    so this ensures that the notifiers are removed before we cancel the work.
    
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9ec5c8ac4188fd11960f2032f3859a0ce6c2cf7
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Jan 6 21:18:24 2018 +0100

    ASoC: Intel: sst: Fix the return value of 'sst_send_byte_stream_mrfld()'
    
    
    [ Upstream commit eaadb1caa966a91128297b754e90b7c92b350a00 ]
    
    In some error handling paths, an error code is assiegned to 'ret'.
    However, the function always return 0.
    
    Fix it and return the error code if such an error paths is taken.
    
    Fixes: 3d9ff34622ba ("ASoC: Intel: sst: add stream operations")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b00f942fef90095479dea5c81a8168123f850112
Author: NeilBrown <neilb@suse.com>
Date:   Tue Dec 19 10:01:47 2017 +1100

    staging: lustre: disable preempt while sampling processor id.
    
    
    [ Upstream commit dbeccabf5294e80f7cc9ee566746c42211bed736 ]
    
    Calling smp_processor_id() without disabling preemption
    triggers a warning (if CONFIG_DEBUG_PREEMPT).
    I think the result of cfs_cpt_current() is only used as a hint for
    load balancing, rather than as a precise and stable indicator of
    the current CPU.  So it doesn't need to be called with
    preemption disabled.
    
    So disable preemption inside cfs_cpt_current() to silence the warning.
    
    Signed-off-by: NeilBrown <neilb@suse.com>
    Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 731edfbaf9e50fdcd7bbdc4c5ac5f2c192d29bf2
Author: Jin Yao <yao.jin@linux.intel.com>
Date:   Tue Dec 26 18:42:43 2017 +0800

    perf report: Fix a no annotate browser displayed issue
    
    
    [ Upstream commit 40c39e3046411f84bab82f66783ff3593e2bcd9b ]
    
    When enabling '-b' option in perf record, for example,
    
      perf record -b ...
      perf report
    
    and then browsing the annotate browser from perf report (press 'A'), it
    would fail (annotate browser can't be displayed).
    
    It's because the '.add_entry_cb' op of struct report is overwritten by
    hist_iter__branch_callback() in builtin-report.c. But this function doesn't do
    something like mapping symbols and sources. So next, do_annotate() will return
    directly.
    
            notes = symbol__annotation(act->ms.sym);
            if (!notes->src)
                    return 0;
    
    This patch adds the lost code to hist_iter__branch_callback (refer to
    hist_iter__report_callback).
    
    v2:
    
    Fix a crash bug when perform 'perf report --stdio'.
    
    The reason is that we init the symbol annotation only in browser mode, it
    doesn't allocate/init resources for stdio mode.
    
    So now in hist_iter__branch_callback(), it will return directly if it's not in
    browser mode.
    
    Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/1514284963-18587-1-git-send-email-yao.jin@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c4f48c3e5d7eb26f3a5d1e3f336bdeb9b30ae8a
Author: Javier Martinez Canillas <javierm@redhat.com>
Date:   Thu Nov 30 08:39:07 2017 +0100

    tpm: return a TPM_RC_COMMAND_CODE response if command is not implemented
    
    
    [ Upstream commit 095531f891e627e408606f2da4008d3d53e6748a ]
    
    According to the TPM Library Specification, a TPM device must do a command
    header validation before processing and return a TPM_RC_COMMAND_CODE code
    if the command is not implemented.
    
    So user-space will expect to handle that response as an error. But if the
    in-kernel resource manager is used (/dev/tpmrm?), an -EINVAL errno code is
    returned instead if the command isn't implemented. This confuses userspace
    since it doesn't expect that error value.
    
    This also isn't consistent with the behavior when not using TPM spaces and
    accessing the TPM directly (/dev/tpm?). In this case, the command is sent
    to the TPM even when not implemented and the TPM responds with an error.
    
    Instead of returning an -EINVAL errno code when the tpm_validate_command()
    function fails, synthesize a TPM command response so user-space can get a
    TPM_RC_COMMAND_CODE as expected when a chip doesn't implement the command.
    
    The TPM only sets 12 of the 32 bits in the TPM_RC response, so the TSS and
    TAB specifications define that higher layers in the stack should use some
    of the unused 20 bits to specify from which level of the stack the error
    is coming from.
    
    Since the TPM_RC_COMMAND_CODE response code is sent by the kernel resource
    manager, set the error level to the TAB/RM layer so user-space is aware of
    this.
    
    Suggested-by: Jason Gunthorpe <jgg@ziepe.ca>
    Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
    Reviewed-by: William Roberts <william.c.roberts@intel.com>
    Reviewed-by: Philip Tricca <philip.b.tricca@intel.com>
    Reviewed-by: Jarkko Sakkinen  <jarkko.sakkinen@linux.intel.com>
    Tested-by: Jarkko Sakkinen  <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen  <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a592432e6e9d508ca44224a788b8e7d0b1456d7
Author: James Smart <jsmart2021@gmail.com>
Date:   Wed Nov 29 16:47:30 2017 -0800

    nvme_fcloop: fix abort race condition
    
    
    [ Upstream commit 278e096063f1914fccfc77a617be9fc8dbb31b0e ]
    
    A test case revealed a race condition of an i/o completing on a thread
    parallel to the delete_association generating the aborts for the
    outstanding ios on the controller.  The i/o completion was freeing the
    target fcloop context, thus the abort task referenced the just-freed
    memory.
    
    Correct by clearing the target/initiator cross pointers in the io
    completion and abort tasks before calling the callbacks. On aborts
    that detect already finished io's, ensure the complete context is
    called.
    
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 513f897ed6e54228492c1d29a9e9f57487a97541
Author: James Smart <jsmart2021@gmail.com>
Date:   Wed Nov 29 16:47:31 2017 -0800

    nvme_fcloop: disassocate local port structs
    
    
    [ Upstream commit 6fda20283e55b9d288cd56822ce39fc8e64f2208 ]
    
    The current fcloop driver gets its lport structure from the private
    area co-allocated with the fc_localport. All is fine except the
    teardown path, which wants to wait on the completion, which is marked
    complete by the delete_localport callback performed after
    unregister_localport.  The issue is, the nvme_fc transport frees the
    localport structure immediately after delete_localport is called,
    meaning the original routine is trying to wait on a complete that
    was just freed.
    
    Change such that a lport struct is allocated coincident with the
    addition and registration of a localport. The private area of the
    localport now contains just a backpointer to the real lport struct.
    Now, the completion can be waited for, and after completing, the
    new structure can be kfree'd.
    
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d0b9e874ecf3ae5d1cfd76d803067bb99a6e498
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Jan 1 13:23:57 2018 +0100

    pinctrl: baytrail: Enable glitch filter for GPIOs used as interrupts
    
    
    [ Upstream commit 9291c65b01d1c67ebd56644cb19317ad665c44b3 ]
    
    On some systems, some PCB traces attached to GpioInts are routed in such
    a way that they pick up enough interference to constantly (many times per
    second) trigger.
    
    Enabling glitch-filtering fixes this.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab0ba11b94b5e4ce7fce6d3f18c9d47e065b8ef4
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Feb 22 07:24:08 2018 -0800

    nvme-fabrics: don't check for non-NULL module in nvmf_register_transport
    
    commit 5a1e59533380a3fd04593e4ab2d4633ebf7745c1 upstream.
    
    THIS_MODULE evaluates to NULL when used from code built into the kernel,
    thus breaking built-in transport modules.  Remove the bogus check.
    
    Fixes: 0de5cd36 ("nvme-fabrics: protect against module unload during create_ctrl")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c624d6fede9a0c3f2ae66518ab0e9847b3bd4fe
Author: Roy Shterman <roys@lightbitslabs.com>
Date:   Mon Dec 25 14:18:30 2017 +0200

    nvme-fabrics: protect against module unload during create_ctrl
    
    
    [ Upstream commit 0de5cd367c6aa2a31a1c931628f778f79f8ef22e ]
    
    NVMe transport driver module unload may (and usually does) trigger
    iteration over the active controllers and delete them all (sometimes
    under a mutex).  However, a controller can be created concurrently with
    module unload which can lead to leakage of resources (most important char
    device node leakage) in case the controller creation occured after the
    unload delete and drain sequence.  To protect against this, we take a
    module reference to guarantee that the nvme transport driver is not
    unloaded while creating a controller.
    
    Signed-off-by: Roy Shterman <roys@lightbitslabs.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d4d30ecc25015b89ceb847051e994c584943b1a
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Thu Dec 28 09:27:41 2017 +0100

    backlight: tdo24m: Fix the SPI CS between transfers
    
    
    [ Upstream commit 2023b0524a6310e9ea80daf085f51c71bff9289f ]
    
    Currently the LCD display (TD035S) on the cm-x300 platform is broken and
    remains blank.
    
    The TD0245S specification requires that the chipselect is toggled
    between commands sent to the panel. This was also the purpose of the
    former patch of commit f64dcac0b124 ("backlight: tdo24m: ensure chip
    select changes between transfers").
    
    Unfortunately, the "cs_change" field of a SPI transfer is
    misleading. Its true meaning is that for a SPI message holding multiple
    transfers, the chip select is toggled between each transfer, but for the
    last transfer it remains asserted.
    
    In this driver, all the SPI messages contain exactly one transfer, which
    means that each transfer is the last of its message, and as a
    consequence the chip select is never toggled.
    
    Actually, there was a second bug hidding the first one, hence the
    problem was not seen until v4.6. This problem was fixed by commit
    a52db659c79c ("spi: pxa2xx: Fix cs_change management") for PXA based
    boards.
    
    This fix makes the TD035S work again on a cm-x300 board. The same
    applies to other PXA boards, ie. corgi and tosa.
    
    Fixes: a52db659c79c ("spi: pxa2xx: Fix cs_change management")
    Reported-by: Andrea Adami <andrea.adami@gmail.com>
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f9ae3bb4dcaa5a8c4f9be8c595db18f6c5f5877
Author: Ming Lei <ming.lei@redhat.com>
Date:   Sat Jan 6 16:27:40 2018 +0800

    blk-mq: fix race between updating nr_hw_queues and switching io sched
    
    
    [ Upstream commit fb350e0ad99359768e1e80b4784692031ec340e4 ]
    
    In both elevator_switch_mq() and blk_mq_update_nr_hw_queues(), sched tags
    can be allocated, and q->nr_hw_queue is used, and race is inevitable, for
    example: blk_mq_init_sched() may trigger use-after-free on hctx, which is
    freed in blk_mq_realloc_hw_ctxs() when nr_hw_queues is decreased.
    
    This patch fixes the race be holding q->sysfs_lock.
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reported-by: Yi Zhang <yi.zhang@redhat.com>
    Tested-by: Yi Zhang <yi.zhang@redhat.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f86fd0585e8ea6d19d2f00a5febcb0b2724631f1
Author: Ming Lei <ming.lei@redhat.com>
Date:   Sat Jan 6 16:27:39 2018 +0800

    blk-mq: avoid to map CPU into stale hw queue
    
    
    [ Upstream commit 7d4901a90d02500c8011472a060f9b2e60e6e605 ]
    
    blk_mq_pci_map_queues() may not map one CPU into any hw queue, but its
    previous map isn't cleared yet, and may point to one stale hw queue
    index.
    
    This patch fixes the following issue by clearing the mapping table before
    setting it up in blk_mq_pci_map_queues().
    
    This patches fixes this following issue reported by Zhang Yi:
    
    [  101.202734] BUG: unable to handle kernel NULL pointer dereference at 0000000094d3013f
    [  101.211487] IP: blk_mq_map_swqueue+0xbc/0x200
    [  101.216346] PGD 0 P4D 0
    [  101.219171] Oops: 0000 [#1] SMP
    [  101.222674] Modules linked in: sunrpc ipmi_ssif vfat fat intel_rapl sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel intel_cstate intel_uncore mxm_wmi intel_rapl_perf iTCO_wdt ipmi_si ipmi_devintf pcspkr iTCO_vendor_support sg dcdbas ipmi_msghandler wmi mei_me lpc_ich shpchp mei acpi_power_meter dm_multipath ip_tables xfs libcrc32c sd_mod mgag200 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm ahci libahci crc32c_intel libata tg3 nvme nvme_core megaraid_sas ptp i2c_core pps_core dm_mirror dm_region_hash dm_log dm_mod
    [  101.284881] CPU: 0 PID: 504 Comm: kworker/u25:5 Not tainted 4.15.0-rc2 #1
    [  101.292455] Hardware name: Dell Inc. PowerEdge R730xd/072T6D, BIOS 2.5.5 08/16/2017
    [  101.301001] Workqueue: nvme-wq nvme_reset_work [nvme]
    [  101.306636] task: 00000000f2c53190 task.stack: 000000002da874f9
    [  101.313241] RIP: 0010:blk_mq_map_swqueue+0xbc/0x200
    [  101.318681] RSP: 0018:ffffc9000234fd70 EFLAGS: 00010282
    [  101.324511] RAX: ffff88047ffc9480 RBX: ffff88047e130850 RCX: 0000000000000000
    [  101.332471] RDX: ffffe8ffffd40580 RSI: ffff88047e509b40 RDI: ffff88046f37a008
    [  101.340432] RBP: 000000000000000b R08: ffff88046f37a008 R09: 0000000011f94280
    [  101.348392] R10: ffff88047ffd4d00 R11: 0000000000000000 R12: ffff88046f37a008
    [  101.356353] R13: ffff88047e130f38 R14: 000000000000000b R15: ffff88046f37a558
    [  101.364314] FS:  0000000000000000(0000) GS:ffff880277c00000(0000) knlGS:0000000000000000
    [  101.373342] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  101.379753] CR2: 0000000000000098 CR3: 000000047f409004 CR4: 00000000001606f0
    [  101.387714] Call Trace:
    [  101.390445]  blk_mq_update_nr_hw_queues+0xbf/0x130
    [  101.395791]  nvme_reset_work+0x6f4/0xc06 [nvme]
    [  101.400848]  ? pick_next_task_fair+0x290/0x5f0
    [  101.405807]  ? __switch_to+0x1f5/0x430
    [  101.409988]  ? put_prev_entity+0x2f/0xd0
    [  101.414365]  process_one_work+0x141/0x340
    [  101.418836]  worker_thread+0x47/0x3e0
    [  101.422921]  kthread+0xf5/0x130
    [  101.426424]  ? rescuer_thread+0x380/0x380
    [  101.430896]  ? kthread_associate_blkcg+0x90/0x90
    [  101.436048]  ret_from_fork+0x1f/0x30
    [  101.440034] Code: 48 83 3c ca 00 0f 84 2b 01 00 00 48 63 cd 48 8b 93 10 01 00 00 8b 0c 88 48 8b 83 20 01 00 00 4a 03 14 f5 60 04 af 81 48 8b 0c c8 <48> 8b 81 98 00 00 00 f0 4c 0f ab 30 8b 81 f8 00 00 00 89 42 44
    [  101.461116] RIP: blk_mq_map_swqueue+0xbc/0x200 RSP: ffffc9000234fd70
    [  101.468205] CR2: 0000000000000098
    [  101.471907] ---[ end trace 5fe710f98228a3ca ]---
    [  101.482489] Kernel panic - not syncing: Fatal exception
    [  101.488505] Kernel Offset: disabled
    [  101.497752] ---[ end Kernel panic - not syncing: Fatal exception
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Suggested-by: Christoph Hellwig <hch@lst.de>
    Reported-by: Yi Zhang <yi.zhang@redhat.com>
    Tested-by: Yi Zhang <yi.zhang@redhat.com>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5be1bc32b82d1bb1ee11c403e229fdfb068c5802
Author: Mike Marciniszyn <mike.marciniszyn@intel.com>
Date:   Mon Dec 18 19:57:06 2017 -0800

    IB/rdmavt: Allocate CQ memory on the correct node
    
    
    [ Upstream commit db9a2c6f9b6196b889b98e961cb9a37617b11ccf ]
    
    CQ allocation does not ensure that completion queue entries
    and the completion queue structure are allocated on the correct
    numa node.
    
    Fix by allocating the rvt_cq and kernel CQ entries on the device node,
    leaving the user CQ entries on the default local node.  Also ensure
    CQ resizes use the correct allocator when extending a CQ.
    
    Reviewed-by: Sebastian Sanchez <sebastian.sanchez@intel.com>
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5a2a6bd5d4a9aa03a29e49e8abe829d0233ef7d
Author: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Date:   Wed Dec 13 12:27:39 2017 +0530

    powernv-cpufreq: Add helper to extract pstate from PMSR
    
    
    [ Upstream commit ee1f4a7dafa997816ff3de96155c6f3edc21c1e6 ]
    
    On POWERNV platform, the fields for pstates in the Power Management
    Status Register (PMSR) and the Power Management Control Register
    (PMCR) are 8-bits wide. On POWER8 the pstates are negatively numbered
    while on POWER9 they are positively numbered.
    
    The device-tree exports pstates as 32-bit entries. The device-tree
    implementation sign-extends the 8-bit pstate values to obtain the
    corresponding 32-bit entry.
    
    Eg: On POWER8, a pstate value 0x82 [-126] is represented in the
    device-tree as 0xfffffff82 while on POWER9, the same value 0x82 [130]
    is represented in the device-tree as 0x00000082.
    
    The powernv-cpufreq driver implementation represents pstates using the
    integer type. In multiple places in the driver, the code interprets
    the pstates extracted from the PMSR as a signed byte and assigns it to
    a integer variable to get the sign-extention.
    
    On POWER9 platforms which have greater than 128 pstates, this results
    in the driver performing incorrect sign-extention, and thereby
    treating a legitimate pstate (say 130) as an invalid pstates (since it
    is interpreted as -126).
    
    This patch fixes the issue by implementing a helper function to
    extract Pstates from PMSR register, and correctly sign-extend it to be
    consistent with the values provided by the device-tree.
    
    Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Acked-by: Balbir Singh <bsingharora@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 618d7862281145aeff04382d8a6587d09a881315
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Wed Dec 27 15:12:56 2017 +0000

    arm64: asid: Do not replace active_asids if already 0
    
    
    [ Upstream commit a8ffaaa060b8d4da6138e0958cb0f45b73e1cb78 ]
    
    Under some uncommon timing conditions, a generation check and
    xchg(active_asids, A1) in check_and_switch_context() on P1 can race with
    an ASID roll-over on P2. If P2 has not seen the update to
    active_asids[P1], it can re-allocate A1 to a new task T2 on P2. P1 ends
    up waiting on the spinlock since the xchg() returned 0 while P2 can go
    through a second ASID roll-over with (T2,A1,G2) active on P2. This
    roll-over copies active_asids[P1] == A1,G1 into reserved_asids[P1] and
    active_asids[P2] == A1,G2 into reserved_asids[P2]. A subsequent
    scheduling of T1 on P1 and T2 on P2 would match reserved_asids and get
    their generation bumped to G3:
    
    P1                                      P2
    --                                      --
    TTBR0.BADDR = T0
    TTBR0.ASID = A0
    asid_generation = G1
    check_and_switch_context(T1,A1,G1)
      generation match
                                            check_and_switch_context(T2,A0,G0)
                                              new_context()
                                                ASID roll-over
                                                asid_generation = G2
                                                flush_context()
                                                  active_asids[P1] = 0
                                                  asid_map[A1] = 0
                                                  reserved_asids[P1] = A0,G0
      xchg(active_asids, A1)
        active_asids[P1] = A1,G1
        xchg returns 0
      spin_lock_irqsave()
                                                allocated ASID (T2,A1,G2)
                                                asid_map[A1] = 1
                                              active_asids[P2] = A1,G2
                                            ...
                                            check_and_switch_context(T3,A0,G0)
                                              new_context()
                                                ASID roll-over
                                                asid_generation = G3
                                                flush_context()
                                                  active_asids[P1] = 0
                                                  asid_map[A1] = 1
                                                  reserved_asids[P1] = A1,G1
                                                  reserved_asids[P2] = A1,G2
                                                allocated ASID (T3,A2,G3)
                                                asid_map[A2] = 1
                                              active_asids[P2] = A2,G3
      new_context()
        check_update_reserved_asid(A1,G1)
          matches reserved_asid[P1]
          reserved_asid[P1] = A1,G3
      updated T1 ASID to (T1,A1,G3)
                                            check_and_switch_context(T2,A1,G2)
                                              new_context()
                                                check_and_switch_context(A1,G2)
                                                  matches reserved_asids[P2]
                                                  reserved_asids[P2] = A1,G3
                                              updated T2 ASID to (T2,A1,G3)
    
    At this point, we have two tasks, T1 and T2 both using ASID A1 with the
    latest generation G3. Any of them is allowed to be scheduled on the
    other CPU leading to two different tasks with the same ASID on the same
    CPU.
    
    This patch changes the xchg to cmpxchg so that the active_asids is only
    updated if non-zero to avoid a race with an ASID roll-over on a
    different CPU.
    
    The ASID allocation algorithm has been formally verified using the TLA+
    model checker (see
    https://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/kernel-tla.git/tree/asidalloc.tla
    for the spec).
    
    Reviewed-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a257594a30d3bf1faa3fba80d4e3484c0ce0d35d
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Thu Jan 4 22:31:11 2018 +0100

    gpio: label descriptors using the device name
    
    
    [ Upstream commit 24e78079bf2250874e33da2e7cfbb6db72d3caf4 ]
    
    Some GPIO lines appear named "?" in the lsgpio dump due to their
    requesting drivers not passing a reasonable label.
    
    Most typically this happens if a device tree node just defines
    gpios = <...> and not foo-gpios = <...>, the former gets named
    "foo" and the latter gets named "?".
    
    However the struct device passed in is always valid so let's
    just label the GPIO with dev_name() on the device if no proper
    label was passed.
    
    Cc: Reported-by: Jason Kridner <jkridner@beagleboard.org>
    Reported-by: Jason Kridner <jkridner@beagleboard.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2b11aebe49ecb7fe905a874517a5d26cf75077f
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Sat Dec 23 19:45:46 2017 +0100

    crypto: crypto4xx - perform aead icv check in the driver
    
    
    [ Upstream commit 0b5a7f71b4c557b15ec54a1b49023bc1b21044cc ]
    
    The ccm-aes-ppc4xx now fails one of testmgr's expected
    failure test cases as such:
    
    |decryption failed on test 10 for ccm-aes-ppc4xx:
    |ret was 0, |expected -EBADMSG
    
    It doesn't look like the hardware sets the authentication failure
    flag. The original vendor source from which this was ported does
    not have any special code or notes about why this would happen or
    if there are any WAs.
    
    Hence, this patch converts the aead_done callback handler to
    perform the icv check in the driver. And this fixes the false
    negative and the ccm-aes-ppc4xx passes the selftests once again.
    
    |name         : ccm(aes)
    |driver       : ccm-aes-ppc4xx
    |module       : crypto4xx
    |priority     : 300
    |refcnt       : 1
    |selftest     : passed
    |internal     : no
    |type         : aead
    |async        : yes
    |blocksize    : 1
    |ivsize       : 16
    |maxauthsize  : 16
    |geniv        : <none>
    
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56d3fab6bc6424a80288eef2d4a5bf1c3781e73d
Author: Pieter \"PoroCYon\" Sluys <pcy@national.shitposting.agency>
Date:   Thu Jan 4 16:53:50 2018 +0100

    vfb: fix video mode and line_length being set when loaded
    
    
    [ Upstream commit 7b9faf5df0ac495a1a3d7cdb64921c179f9008ac ]
    
    Currently, when loading the vfb module, the newly created fbdev
    has a line_length of 0, and its video mode would be PSEUDOCOLOR
    regardless of color depth. (The former could be worked around by
    calling the FBIOPUT_VSCREENINFO ioctl with having the FBACTIVIATE_FORCE
    flag set.) This patch automatically sets the line_length correctly,
    and the video mode is derived from the bit depth now as well.
    
    Thanks to Geert Uytterhoeven for confirming the bug and helping me with
    the patch.
    
    Output of `fbset -i' before the patch:
    mode "1366x768-60"
        # D: 72.432 MHz, H: 47.403 kHz, V: 60.004 Hz
        geometry 1366 768 1366 768 32
        timings 13806 120 10 14 3 32 5
        rgba 8/0,8/8,8/16,8/24
    endmode
    
    Frame buffer device information:
        Name        : Virtual FB
        Address     : 0xffffaa1405d85000
        Size        : 4196352
        Type        : PACKED PIXELS
        Visual      : PSEUDOCOLOR
        XPanStep    : 1
        YPanStep    : 1
        YWrapStep   : 1
        LineLength  : 0                    <-- note this
        Accelerator : No
    
    After:
    mode "1366x768-60"
        # D: 72.432 MHz, H: 47.403 kHz, V: 60.004 Hz
        geometry 1366 768 1366 768 32
        timings 13806 120 10 14 3 32 5
        rgba 8/0,8/8,8/16,8/24
    endmode
    
    Frame buffer device information:
        Name        : Virtual FB
        Address     : 0xffffaa1405d85000
        Size        : 4196352
        Type        : PACKED PIXELS
        Visual      : TRUECOLOR
        XPanStep    : 1
        YPanStep    : 1
        YWrapStep   : 1
        LineLength  : 5464
        Accelerator : No
    
    Signed-off-by: "Pieter \"PoroCYon\" Sluys" <pcy@national.shitposting.agency>
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    [b.zolnierkie: minor fixups]
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f12c3f9eec6dfa2dec212e0d5d6184413d316e3
Author: Peter Große <pegro@friiks.de>
Date:   Wed Dec 13 18:29:46 2017 +0100

    mac80211: Fix setting TX power on monitor interfaces
    
    
    [ Upstream commit 3a3713ec360138f806c6fc368d1de570f692b347 ]
    
    Instead of calling ieee80211_recalc_txpower on monitor interfaces
    directly, call it using the virtual monitor interface, if one exists.
    
    In case of a single monitor interface given, reject setting TX power,
    if no virtual monitor interface exists.
    
    That being checked, don't warn in ieee80211_bss_info_change_notify,
    after setting TX power on a monitor interface.
    
    Fixes warning:
    ------------[ cut here ]------------
     WARNING: CPU: 0 PID: 2193 at net/mac80211/driver-ops.h:167
     ieee80211_bss_info_change_notify+0x111/0x190 Modules linked in: uvcvideo
     videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_core
    rndis_host cdc_ether usbnet mii tp_smapi(O) thinkpad_ec(O) ohci_hcd vboxpci(O)
     vboxnetadp(O) vboxnetflt(O) v boxdrv(O) x86_pkg_temp_thermal kvm_intel kvm
     irqbypass iwldvm iwlwifi ehci_pci ehci_hcd tpm_tis tpm_tis_core tpm CPU: 0
     PID: 2193 Comm: iw Tainted: G           O    4.12.12-gentoo #2 task:
     ffff880186fd5cc0 task.stack: ffffc90001b54000 RIP:
     0010:ieee80211_bss_info_change_notify+0x111/0x190 RSP: 0018:ffffc90001b57a10
     EFLAGS: 00010246 RAX: 0000000000000006 RBX: ffff8801052ce840 RCX:
     0000000000000064 RDX: 00000000fffffffc RSI: 0000000000040000 RDI:
     ffff8801052ce840 RBP: ffffc90001b57a38 R08: 0000000000000062 R09:
     0000000000000000 R10: ffff8802144b5000 R11: ffff880049dc4614 R12:
     0000000000040000 R13: 0000000000000064 R14: ffff8802105f0760 R15:
     ffffc90001b57b48 FS:  00007f92644b4580(0000) GS:ffff88021e200000(0000)
     knlGS:0000000000000000 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007f9263c109f0 CR3: 00000001df850000 CR4: 00000000000406f0
     Call Trace:
      ieee80211_recalc_txpower+0x33/0x40
      ieee80211_set_tx_power+0x40/0x180
      nl80211_set_wiphy+0x32e/0x950
    
    Reported-by: Peter Große <pegro@friiks.de>
    Signed-off-by: Peter Große <pegro@friiks.de>
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 110909d7a0c922bac1c9053605c842e02a0f20e9
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Jan 2 16:26:31 2018 +0100

    ACPI: EC: Fix debugfs_create_*() usage
    
    
    [ Upstream commit 3522f867c13b63cf62acdf1b8ca5664c549a716a ]
    
    acpi_ec.gpe is "unsigned long", hence treating it as "u32" would expose
    the wrong half on big-endian 64-bit systems.  Fix this by changing its
    type to "u32" and removing the cast, as all other code already uses u32
    or sometimes even only u8.
    
    Fixes: 1195a098168fcacf (ACPI: Provide /sys/kernel/debug/ec/...)
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03e965ebd983f659ac7e242ce7f4b7f3d3ab5867
Author: Shanker Donthineni <shankerd@codeaurora.org>
Date:   Tue Dec 5 13:16:21 2017 -0600

    irqchip/gic-v3: Fix the driver probe() fail due to disabled GICC entry
    
    
    [ Upstream commit ebe2f8718007d5a1238bb3cb8141b5bb2b4d5773 ]
    
    The ACPI specification says OS shouldn't attempt to use GICC configuration
    parameters if the flag ACPI_MADT_ENABLED is cleared. The ARM64-SMP code
    skips the disabled GICC entries but not causing any issue. However the
    current GICv3 driver probe bails out causing kernel panic() instead of
    skipping the disabled GICC interfaces. This issue happens on systems
    where redistributor regions are not in the always-on power domain and
    one of GICC interface marked with ACPI_MADT_ENABLED=0.
    
    This patch does the two things to fix the panic.
      - Don't return an error in gic_acpi_match_gicc() for disabled GICC entry.
      - No need to keep GICR region information for disabled GICC entry.
    
    Observed kernel crash on QDF2400 platform GICC entry is disabled.
    Kernel crash traces:
      Kernel panic - not syncing: No interrupt controller found.
      CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.13.5 #26
      [<ffff000008087770>] dump_backtrace+0x0/0x218
      [<ffff0000080879dc>] show_stack+0x14/0x20
      [<ffff00000883b078>] dump_stack+0x98/0xb8
      [<ffff0000080c5c14>] panic+0x118/0x26c
      [<ffff000008b62348>] init_IRQ+0x24/0x2c
      [<ffff000008b609fc>] start_kernel+0x230/0x394
      [<ffff000008b601e4>] __primary_switched+0x64/0x6c
      ---[ end Kernel panic - not syncing: No interrupt controller found.
    
    Disabled GICC subtable example:
                       Subtable Type : 0B [Generic Interrupt Controller]
                              Length : 50
                            Reserved : 0000
                CPU Interface Number : 0000003D
                       Processor UID : 0000003D
               Flags (decoded below) : 00000000
                   Processor Enabled : 0
     Performance Interrupt Trig Mode : 0
     Virtual GIC Interrupt Trig Mode : 0
            Parking Protocol Version : 00000000
               Performance Interrupt : 00000017
                      Parked Address : 0000000000000000
                        Base Address : 0000000000000000
            Virtual GIC Base Address : 0000000000000000
         Hypervisor GIC Base Address : 0000000000000000
               Virtual GIC Interrupt : 00000019
          Redistributor Base Address : 0000FFFF88F40000
                           ARM MPIDR : 000000000000000D
                    Efficiency Class : 00
                            Reserved : 000000
    Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c97d465dadddc9efa33488741399eccb777737c2
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Tue Jan 2 11:47:19 2018 +0000

    irqchip/ompic: fix return value check in ompic_of_init()
    
    
    [ Upstream commit 404e6bea10662f0e142748353169d25378271e49 ]
    
    In case of error, the function ioremap() returns NULL pointer not
    ERR_PTR(). The IS_ERR() test in the return value check should be
    replaced with NULL test.
    
    Fixes: 9b54470afd83 ("irqchip: add initial support for ompic")
    Acked-by: Stafford Horne <shorne@gmail.com>
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f885f0701f6d68c4fdf2c6ad5ddba694863f2884
Author: Chaitra P B <chaitra.basappa@broadcom.com>
Date:   Wed Dec 27 23:09:11 2017 -0800

    scsi: mpt3sas: Proper handling of set/clear of "ATA command pending" flag.
    
    
    [ Upstream commit f49d4aed1315a7b766d855f1367142e682b0cc87 ]
    
    1. In IO path, setting of "ATA command pending" flag early before device
       removal, invalid device handle etc., checks causes any new commands
       to be always returned with SAM_STAT_BUSY and when the driver removes
       the drive the SML issues SYNC Cache command and that command is
       always returned with SAM_STAT_BUSY and thus making SYNC Cache command
       to requeued.
    
    2. If the driver gets an ATA PT command for a SATA drive then the driver
       set "ATA command pending" flag in device specific data structure not
       to allow any further commands until the ATA PT command is completed.
       However, after setting the flag if the driver decides to return the
       command back to upper layers without actually issuing to the firmware
       (i.e., returns from qcmd failure return paths) then the corresponding
       flag is not cleared and this prevents the driver from sending any new
       commands to the drive.
    
    This patch fixes above two issues by setting of "ATA command pending"
    flag after checking for whether device deleted, invalid device handle,
    device busy with task management. And by setting "ATA command pending"
    flag to false in all of the qcmd failure return paths after setting the
    flag.
    
    Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
    Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f212235717ed2f8082a9176beeac96b8e10b41b6
Author: Rafael David Tinoco <rafael.tinoco@canonical.com>
Date:   Thu Dec 7 19:59:13 2017 -0200

    scsi: libiscsi: Allow sd_shutdown on bad transport
    
    
    [ Upstream commit d754941225a7dbc61f6dd2173fa9498049f9a7ee ]
    
    If, for any reason, userland shuts down iscsi transport interfaces
    before proper logouts - like when logging in to LUNs manually, without
    logging out on server shutdown, or when automated scripts can't
    umount/logout from logged LUNs - kernel will hang forever on its
    sd_sync_cache() logic, after issuing the SYNCHRONIZE_CACHE cmd to all
    still existent paths.
    
    PID: 1 TASK: ffff8801a69b8000 CPU: 1 COMMAND: "systemd-shutdow"
     #0 [ffff8801a69c3a30] __schedule at ffffffff8183e9ee
     #1 [ffff8801a69c3a80] schedule at ffffffff8183f0d5
     #2 [ffff8801a69c3a98] schedule_timeout at ffffffff81842199
     #3 [ffff8801a69c3b40] io_schedule_timeout at ffffffff8183e604
     #4 [ffff8801a69c3b70] wait_for_completion_io_timeout at ffffffff8183fc6c
     #5 [ffff8801a69c3bd0] blk_execute_rq at ffffffff813cfe10
     #6 [ffff8801a69c3c88] scsi_execute at ffffffff815c3fc7
     #7 [ffff8801a69c3cc8] scsi_execute_req_flags at ffffffff815c60fe
     #8 [ffff8801a69c3d30] sd_sync_cache at ffffffff815d37d7
     #9 [ffff8801a69c3da8] sd_shutdown at ffffffff815d3c3c
    
    This happens because iscsi_eh_cmd_timed_out(), the transport layer
    timeout helper, would tell the queue timeout function (scsi_times_out)
    to reset the request timer over and over, until the session state is
    back to logged in state. Unfortunately, during server shutdown, this
    might never happen again.
    
    Other option would be "not to handle" the issue in the transport
    layer. That would trigger the error handler logic, which would also need
    the session state to be logged in again.
    
    Best option, for such case, is to tell upper layers that the command was
    handled during the transport layer error handler helper, marking it as
    DID_NO_CONNECT, which will allow completion and inform about the
    problem.
    
    After the session was marked as ISCSI_STATE_FAILED, due to the first
    timeout during the server shutdown phase, all subsequent cmds will fail
    to be queued, allowing upper logic to fail faster.
    
    Signed-off-by: Rafael David Tinoco <rafael.tinoco@canonical.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4fecf24ae66352cf9aff195e8d791e810e9ce2b
Author: oulijun <oulijun@huawei.com>
Date:   Wed Jan 3 10:44:04 2018 +0800

    RDMA/hns: Update the usage of sr_max and rr_max field
    
    
    [ Upstream commit 4f3f7a704b3bff9e4eb322ab3c989b505f7562eb ]
    
    This patch fixes the usage with sr_max filed and rr_max of qp
    context when modify qp. Its modifications include:
    1. Adjust location of filling sr_max filed of qpc
    2. Only assign the number of responder resource if
       IB_QP_MAX_DEST_RD_ATOMIC bit is set
    3. Only assign the number of outstanding resource if
       IB_QP_MAX_QP_RD_ATOMIC
    4. Fix the assgin algorithms for the field of sr_max
       and rr_max of qp context
    
    Signed-off-by: Lijun Ou <oulijun@huawei.com>
    Signed-off-by: Yixian Liu <liuyixian@huawei.com>
    Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 311b60b294b4501616f3ecdc334ad0170de57df1
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Jan 3 18:11:14 2018 +0100

    spi: sh-msiof: Fix timeout failures for TX-only DMA transfers
    
    
    [ Upstream commit 89434c3c35081439627baa2225622d5bd12242fe ]
    
    When using RX (with or without TX), the DMA interrupt triggers
    completion when the RX FIFO has been emptied, i.e. after the full
    transfer has finished.
    
    However, when using TX without RX, the DMA interrupt triggers completion
    as soon as the DMA engine has filled the TX FIFO, i.e. before the full
    transfer has finished.  Then sh_msiof_modify_ctr_wait() will spin until
    the transfer has really finished and the TFSE bit is cleared, for at
    most 1 ms.  For slow speeds and/or large transfers, this may cause
    timeouts and transfer failures:
    
        spi_sh_msiof e6e10000.spi: failed to shut down hardware
        74x164 spi2.0: SPI transfer failed: -110
        spi_master spi2: failed to transfer one message from queue
        74x164 spi2.0: Failed writing: -110
    
    Fix this by waiting explicitly until the TX FIFO has been emptied.
    
    Based on a patch in the BSP by Hiromitsu Yamasaki.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 902dae240b4a45971858c671b5361365a89af114
Author: Alex Estrin <alex.estrin@intel.com>
Date:   Wed Jan 3 07:39:50 2018 -0500

    IB/ipoib: Fix for notify send CQ failure messages
    
    
    [ Upstream commit 809cb6955650d892c6ef95f1d55f28fceded0ce1 ]
    
    If IB_CQ_REPORT_MISSED_EVENTS flag is passed in ib_req_notify_cq()
    it may return positive value indicating non-empty CQ.
    If return code not verified the log might be flooded with false
    warning messages "request notify on send CQ failed".
    
    Fixes: 8966e28d2e40 ("IB/ipoib: Use NAPI in UD/TX flows")
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Alex Estrin <alex.estrin@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ca14535c781c54b25b0e786c43fefe12b58f14b
Author: Archit Taneja <architt@codeaurora.org>
Date:   Fri Dec 22 15:41:13 2017 +0530

    drm/msm: Fix NULL deref in adreno_load_gpu
    
    
    [ Upstream commit 9dcfbc182f1aac0aa5ea194733d21e67dd2ba1fd ]
    
    The msm/kms driver should work even if there is no GPU device specified
    in DT. Currently, we get a NULL dereference crash in adreno_load_gpu
    since the driver assumes that priv->gpu_pdev is non-NULL.
    
    Perform an additional check on priv->gpu_pdev before trying to retrieve
    the msm_gpu pointer from it.
    
    v2: Incorporate Jordan's comments:
    - Simplify the check to share the same error message.
    - Use dev_err_once() to avoid an error message every time we open the
      drm device fd.
    
    Fixes: eec874ce5ff1 (drm/msm/adreno: load gpu at probe/bind time)
    
    Signed-off-by: Archit Taneja <architt@codeaurora.org>
    Acked-by: Jordan Crouse <jcrouse@codeaurora.org>
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70a6a6877a886b09d1ad72e4812da6e44b348772
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Jan 2 19:53:14 2018 +0100

    ASoC: Intel: cht_bsw_rt5645: Analog Mic support
    
    
    [ Upstream commit b70b309950418437bbd2a30afd169c4f09dee3e5 ]
    
    Various Cherry Trail boards with a rt5645 codec have an analog mic
    connected to IN2P + IN2N. The mic on this boards also needs micbias to
    be enabled, on some boards micbias1 is used and on others micbias2, so
    we enable both.
    
    This commit adds a new "Int Analog Mic" DAPM widget for this, so that we
    do not end up enabling micbias on boards with a digital mic which uses
    the already present "Int Mic" widget. Some existing UCM files already
    refer to "Int Mic" for their "Internal Analog Microphones" SectionDevice,
    but these don't work anyways since they enable the RECMIX BST1 Switch
    instead of the BST2 switch.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df85cc29794ad595f39672910a38426012a2e317
Author: Pardha Saradhi K <pardha.saradhi.kesapragada@intel.com>
Date:   Tue Jan 2 14:59:57 2018 +0530

    ASoC: Intel: Skylake: Disable clock gating during firmware and library download
    
    
    [ Upstream commit d5cc0a1fcbb5ddbef9fdd4c4a978da3254ddbf37 ]
    
    During firmware and library download, sometimes it is observed that
    firmware and library download is timed-out resulting into probe failure.
    
    This patch disables dynamic clock gating while firmware and library
    download.
    
    Signed-off-by: Pardha Saradhi K <pardha.saradhi.kesapragada@intel.com>
    Signed-off-by: Sanyog Kale <sanyog.r.kale@intel.com>
    Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com>
    Acked-By: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4577c7f85edaa9e6616493d2624f0cf300bea7d5
Author: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Date:   Thu Dec 28 09:16:47 2017 -0500

    media: videobuf2-core: don't go out of the buffer range
    
    
    [ Upstream commit df93dc61b0d8b19a5c9db545cf3fcc24f88dfde4 ]
    
    Currently, there's no check if an invalid buffer range
    is passed. However, while testing DVB memory mapped apps,
    I got this:
    
       videobuf2_core: VB: num_buffers -2143943680, buffer 33, index -2143943647
       unable to handle kernel paging request at ffff888b773c0890
       IP: __vb2_queue_alloc+0x134/0x4e0 [videobuf2_core]
       PGD 4142c7067 P4D 4142c7067 PUD 0
       Oops: 0002 [#1] SMP
       Modules linked in: xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack tun bridge stp llc ebtable_filter ebtables ip6table_filter ip6_tables bluetooth rfkill ecdh_generic binfmt_misc rc_dvbsky sp2 ts2020 intel_rapl x86_pkg_temp_thermal dvb_usb_dvbsky intel_powerclamp dvb_usb_v2 coretemp m88ds3103 kvm_intel i2c_mux dvb_core snd_hda_codec_hdmi crct10dif_pclmul crc32_pclmul videobuf2_vmalloc videobuf2_memops snd_hda_intel ghash_clmulni_intel videobuf2_core snd_hda_codec rc_core mei_me intel_cstate snd_hwdep snd_hda_core videodev intel_uncore snd_pcm mei media tpm_tis tpm_tis_core intel_rapl_perf tpm snd_timer lpc_ich snd soundcore kvm irqbypass libcrc32c i915 i2c_algo_bit drm_kms_helper
       e1000e ptp drm crc32c_intel video pps_core
       CPU: 3 PID: 1776 Comm: dvbv5-zap Not tainted 4.14.0+ #78
       Hardware name:                  /NUC5i7RYB, BIOS RYBDWi35.86A.0364.2017.0511.0949 05/11/2017
       task: ffff88877c73bc80 task.stack: ffffb7c402418000
       RIP: 0010:__vb2_queue_alloc+0x134/0x4e0 [videobuf2_core]
       RSP: 0018:ffffb7c40241bc60 EFLAGS: 00010246
       RAX: 0000000080360421 RBX: 0000000000000021 RCX: 000000000000000a
       RDX: ffffb7c40241bcf4 RSI: ffff888780362c60 RDI: ffff888796d8e130
       RBP: ffffb7c40241bcc8 R08: 0000000000000316 R09: 0000000000000004
       R10: ffff888780362c00 R11: 0000000000000001 R12: 000000000002f000
       R13: ffff8887758be700 R14: 0000000000021000 R15: 0000000000000001
       FS:  00007f2849024740(0000) GS:ffff888796d80000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: ffff888b773c0890 CR3: 000000043beb2005 CR4: 00000000003606e0
       Call Trace:
        vb2_core_reqbufs+0x226/0x420 [videobuf2_core]
        dvb_vb2_reqbufs+0x2d/0xc0 [dvb_core]
        dvb_dvr_do_ioctl+0x98/0x1d0 [dvb_core]
        dvb_usercopy+0x53/0x1b0 [dvb_core]
        ? dvb_demux_ioctl+0x20/0x20 [dvb_core]
        ? tty_ldisc_deref+0x16/0x20
        ? tty_write+0x1f9/0x310
        ? process_echoes+0x70/0x70
        dvb_dvr_ioctl+0x15/0x20 [dvb_core]
        do_vfs_ioctl+0xa5/0x600
        SyS_ioctl+0x79/0x90
        entry_SYSCALL_64_fastpath+0x1a/0xa5
       RIP: 0033:0x7f28486f7ea7
       RSP: 002b:00007ffc13b2db18 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
       RAX: ffffffffffffffda RBX: 000055b10fc06130 RCX: 00007f28486f7ea7
       RDX: 00007ffc13b2db48 RSI: 00000000c0086f3c RDI: 0000000000000007
       RBP: 0000000000000203 R08: 000055b10df1e02c R09: 000000000000002e
       R10: 0036b42415108357 R11: 0000000000000246 R12: 0000000000000000
       R13: 00007f2849062f60 R14: 00000000000001f1 R15: 00007ffc13b2da54
       Code: 74 0a 60 8b 0a 48 83 c0 30 48 83 c2 04 89 48 d0 89 48 d4 48 39 f0 75 eb 41 8b 42 08 83 7d d4 01 41 c7 82 ec 01 00 00 ff ff ff ff <4d> 89 94 c5 88 00 00 00 74 14 83 c3 01 41 39 dc 0f 85 f1 fe ff
       RIP: __vb2_queue_alloc+0x134/0x4e0 [videobuf2_core] RSP: ffffb7c40241bc60
       CR2: ffff888b773c0890
    
    So, add a sanity check in order to prevent going past array.
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8d3eea33c25c6a9b4728e746763dfe24005f5a8
Author: Jernej Å krabec <jernej.skrabec@siol.net>
Date:   Sat Dec 30 22:01:54 2017 +0100

    clk: sunxi-ng: a83t: Add M divider to TCON1 clock
    
    
    [ Upstream commit 7dbc7f5f4904cfddc199af171ea095490a434f15 ]
    
    TCON1 also has M divider, contrary to TCON0. And the mux is only
    2 bits wide, instead of 3.
    
    Fixes: 05359be1176b ("clk: sunxi-ng: Add driver for A83T CCU")
    Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
    [wens@csie.org: Add description about mux width difference]
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0870e5401eee3d7aa29506385b30f9e07edb8c3
Author: Chao Yu <yuchao0@huawei.com>
Date:   Thu Nov 23 23:26:52 2017 +0800

    f2fs: fix lock dependency in between dio_rwsem & i_mmap_sem
    
    
    [ Upstream commit 21020812c9e1ab593367fad9ce579f842a0b406d ]
    
    test/generic/208 reports a potential deadlock as below:
    
    Chain exists of:
      &mm->mmap_sem --> &fi->i_mmap_sem --> &fi->dio_rwsem[WRITE]
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(&fi->dio_rwsem[WRITE]);
                                   lock(&fi->i_mmap_sem);
                                   lock(&fi->dio_rwsem[WRITE]);
      lock(&mm->mmap_sem);
    
    This patch changes the lock dependency as below in fallocate() to
    fix this issue:
    - dio_rwsem
     - i_mmap_sem
    
    Fixes: bb06664a534b ("f2fs: avoid race in between GC and block exchange")
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bde6301dbf14b99c673db7d33431b5718eaf1623
Author: Maciej Purski <m.purski@samsung.com>
Date:   Wed Nov 22 16:32:15 2017 +0100

    hwmon: (ina2xx) Make calibration register value fixed
    
    
    [ Upstream commit 5d389b125186cf254ad5b8015763ac07c151aea4 ]
    
    Calibration register is used for calculating current register in
    hardware according to datasheet:
    current = shunt_volt * calib_register / 2048 (ina 226)
    current = shunt_volt * calib_register / 4096 (ina 219)
    
    Fix calib_register value to 2048 for ina226 and 4096 for ina 219 in
    order to avoid truncation error and provide best precision allowed
    by shunt_voltage measurement. Make current scale value follow changes
    of shunt_resistor from sysfs as calib_register value is now fixed.
    
    Power_lsb value should also follow shunt_resistor changes as stated in
    datasheet:
    power_lsb = 25 * current_lsb (ina 226)
    power_lsb = 20 * current_lsb (ina 219)
    
    Signed-off-by: Maciej Purski <m.purski@samsung.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bddcdd33e3a2a9c90aebebf6be116467627d202
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Mon Jan 1 13:07:17 2018 +0200

    RDMA/cma: Mark end of CMA ID messages
    
    
    [ Upstream commit e48e5e198fb6ec77c91047a694022f0fefa45292 ]
    
    The commit 1a1c116f3dcf ("RDMA/netlink: Simplify the put_msg and put_attr")
    removes nlmsg_len calculation in ibnl_put_attr causing netlink messages and
    caused to miss source and destination addresses.
    
    Fixes: 1a1c116f3dcf ("RDMA/netlink: Simplify the put_msg and put_attr")
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f0880203e52a50a90bd1a751f3026b5f37a35e2
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Sun Nov 19 12:04:27 2017 +0100

    thermal/drivers/hisi: Remove bogus const from function return type
    
    
    [ Upstream commit d0ecbbbe518e1b256fcda1770ec06a5a1a058567 ]
    
    With gcc-4.1.2:
    
        drivers/thermal/hisi_thermal.c: In function ‘hisi_thermal_probe’:
        drivers/thermal/hisi_thermal.c:530: warning: type qualifiers ignored on function return type
    
    Remove the "const" keyword to fix this.
    
    Fixes: a160a465297362c5 ("thermal/drivers/hisi: Prepare to add support for other hisi platforms")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a696e385ac751aa90529090ede4ab81eb4d5021a
Author: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date:   Mon Dec 25 14:43:04 2017 -0800

    selftests/net: fix bugs in address and port initialization
    
    
    [ Upstream commit d36f45e5b46723cf2d4147173e18c52d4143176d ]
    
    Address/port initialization should work correctly regardless
    of the order in which command line arguments are supplied,
    E.g, cfg_port should be used to connect to the remote host
    even if it is processed after -D, src/dst address initialization
    should not require that [-4|-6] be specified before
    the -S or -D args, receiver should be able to bind to *.<cfg_port>
    
    Achieve this by making sure that the address/port structures
    are initialized after all command line options are parsed.
    
    Store cfg_port in host-byte order, and use htons()
    to set up the sin_port/sin6_port before bind/connect,
    so that the network system calls get the correct values
    in network-byte order.
    
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abf63e3cb1a811986718d0cf9a679efe3a01d67b
Author: Nogah Frankel <nogahf@mellanox.com>
Date:   Mon Dec 25 10:51:41 2017 +0200

    net_sch: red: Fix the new offload indication
    
    
    [ Upstream commit 8234af2db3614d78b49e77ef46ea8cfab6586568 ]
    
    Update the offload flag, TCQ_F_OFFLOADED, in each dump call (and ignore
    the offloading function return value in relation to this flag).
    This is done because a qdisc is being initialized, and therefore offloaded
    before being grafted. Since the ability of the driver to offload the qdisc
    depends on its location, a qdisc can be offloaded and un-offloaded by graft
    calls, that doesn't effect the qdisc itself.
    
    Fixes: 428a68af3a7c ("net: sched: Move to new offload indication in RED"
    Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
    Reviewed-by: Yuval Mintz <yuvalm@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffc544a91a0f9040a79fda8c2cb051fefa43212b
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Thu Dec 21 18:37:24 2017 +0200

    gpiolib: don't dereference a desc before validation
    
    
    [ Upstream commit 30322bcf82d74cad0d6e1cf9ba7fa7fa48c7a026 ]
    
    The fix restores a proper validation of an input gpio desc, which
    might be needed to deal with optional GPIOs correctly.
    
    Fixes: 02e479808b5d ("gpio: Alter semantics of *raw* operations to actually be raw")
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebc5545383f78234c4f3c176ae785ee5bffe9a9d
Author: Gustavo A. R. Silva <garsilva@embeddedor.com>
Date:   Wed Dec 6 14:20:15 2017 -0600

    PM / devfreq: Fix potential NULL pointer dereference in governor_store
    
    
    [ Upstream commit 63f1e05f7fe9ca509c60154d6a833abf96eecdc9 ]
    
    df->governor is being dereferenced before it is null checked,
    hence there is a potential null pointer dereference.
    
    Notice that df->governor is being null checked at line 1004:
    if (df->governor) {, which implies it might be null.
    
    Fix this by null checking df->governor before dereferencing it.
    
    Addresses-Coverity-ID: 1401988 ("Dereference before null check")
    Fixes: bcf23c79c4e4 ("PM / devfreq: Fix available_governor sysfs")
    Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
    Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34e1b76c57d0d088fa3a8c1128296f982b225015
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Thu Dec 21 17:30:54 2017 +0100

    clk: divider: fix incorrect usage of container_of
    
    
    [ Upstream commit 12a26c298d2a8b1cab498533fa65198e49e3afd3 ]
    
    divider_recalc_rate() is an helper function used by clock divider of
    different types, so the structure containing the 'hw' pointer is not
    always a 'struct clk_divider'
    
    At the following line:
    > div = _get_div(table, val, flags, divider->width);
    
    in several cases, the value of 'divider->width' is garbage as the actual
    structure behind this memory is not a 'struct clk_divider'
    
    Fortunately, this width value is used by _get_val() only when
    CLK_DIVIDER_MAX_AT_ZERO flag is set. This has never been the case so
    far when the structure is not a 'struct clk_divider'. This is probably
    why we did not notice this bug before
    
    Fixes: afe76c8fd030 ("clk: allow a clk divider with max divisor when zero")
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Acked-by: Sylvain Lemieux <slemieux.tyco@gmail.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5218e11fbd2f7366384ccde2f012af85a00edc27
Author: Oleksij Rempel <o.rempel@pengutronix.de>
Date:   Tue Sep 26 08:11:22 2017 +0200

    watchdog: dw_wdt: add stop watchdog operation
    
    
    [ Upstream commit 1bfe8889380890efe4943d125124f5a7b48571b0 ]
    
    The only way of stopping the watchdog is by resetting it.
    Add the watchdog op for stopping the device and reset if
    a reset line is provided.
    
    At same time WDOG_HW_RUNNING should be remove from dw_wdt_start.
    As commented by Guenter Roeck:
    dw_wdt sets WDOG_HW_RUNNING in its open function. Result is
    that the kref_get() in watchdog_open() won't be executed. But then
    kref_put() in close will be called since the watchdog now does stop.
    This causes the imbalance.
    
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Cc: Wim Van Sebroeck <wim@iguana.be>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: linux-watchdog@vger.kernel.org
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a0289a45385dc9a0665b34ab25e4d887298db79
Author: NeilBrown <neilb@suse.com>
Date:   Fri Nov 10 15:45:41 2017 +1100

    VFS: close race between getcwd() and d_move()
    
    
    [ Upstream commit 61647823aa920e395afcce4b57c32afb51456cab ]
    
    d_move() will call __d_drop() and then __d_rehash()
    on the dentry being moved.  This creates a small window
    when the dentry appears to be unhashed.  Many tests
    of d_unhashed() are made under ->d_lock and so are safe
    from racing with this window, but some aren't.
    In particular, getcwd() calls d_unlinked() (which calls
    d_unhashed()) without d_lock protection, so it can race.
    
    This races has been seen in practice with lustre, which uses d_move() as
    part of name lookup.  See:
       https://jira.hpdd.intel.com/browse/LU-9735
    It could race with a regular rename(), and result in ENOENT instead
    of either the 'before' or 'after' name.
    
    The race can be demonstrated with a simple program which
    has two threads, one renaming a directory back and forth
    while another calls getcwd() within that directory: it should never
    fail, but does.  See:
      https://patchwork.kernel.org/patch/9455345/
    
    We could fix this race by taking d_lock and rechecking when
    d_unhashed() reports true.  Alternately when can remove the window,
    which is the approach this patch takes.
    
    ___d_drop() is introduce which does *not* clear d_hash.pprev
    so the dentry still appears to be hashed.  __d_drop() calls
    ___d_drop(), then clears d_hash.pprev.
    __d_move() now uses ___d_drop() and only clears d_hash.pprev
    when not rehashing.
    
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 827fe75987f164a80b9b159c1785f66728f0dddc
Author: Maor Gottlieb <maorg@mellanox.com>
Date:   Sun Dec 24 14:51:25 2017 +0200

    IB/mlx5: Report inner RSS capability
    
    
    [ Upstream commit 4e2b53a5cb5a8243284dd7ec4980d2dc556e79f0 ]
    
    Add missing inner RSS support capability as part of
    the RSS supported fields.
    
    In addition change MLX5_RX_HASH_INNER to 1UL << 31 in
    order to define it as unsigned.
    
    Fixes: 309fa3470fca ("IB/mlx5: Add support for RSS on the inner packet")
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b644c41acce12e01248dc3a23989c7ef23a1e241
Author: Moni Shoua <monis@mellanox.com>
Date:   Thu Dec 28 16:26:11 2017 +0200

    net/mlx4_en: Change default QoS settings
    
    
    [ Upstream commit a42b63c1ac1986f17f71bc91a6b0aaa14d4dae71 ]
    
    Change the default mapping between TC and TCG as follows:
    
    Prio     |             TC/TCG
             |      from             to
             |    (set by FW)      (set by SW)
    ---------+-----------------------------------
    0        |      0/0              0/7
    1        |      1/0              0/6
    2        |      2/0              0/5
    3        |      3/0              0/4
    4        |      4/0              0/3
    5        |      5/0              0/2
    6        |      6/0              0/1
    7        |      7/0              0/0
    
    These new settings cause that a pause frame for any prio stops
    traffic for all prios.
    
    Fixes: 564c274c3df0 ("net/mlx4_en: DCB QoS support")
    Signed-off-by: Moni Shoua <monis@mellanox.com>
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 965736ee654db8bb009a9736e52cac0278a24a8b
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Dec 23 19:41:47 2017 +0100

    ACPI / video: Default lcd_only to true on Win8-ready and newer machines
    
    
    [ Upstream commit 5928c281524fe451114e04f1dfa11246a37e859f ]
    
    We're seeing a lot of bogus backlight interfaces on newer machines without
    a LCD such as desktops, servers and HDMI sticks. This causes userspace to
    show a non-functional brightness slider in e.g. the GNOME3 system menu,
    which is undesirable. And, in general, we should simply just not register
    a non functional backlight interface.
    
    Checking the LCD flag causes the bogus acpi_video backlight interfaces to
    go away (on the machines this was tested on).
    
    This change sets the lcd_only option by default on any machines which
    are Win8-ready, to fix this.
    
    This is not entirely without a risk of regressions, but video_detect.c
    already prefers native-backlight interfaces over the acpi_video one
    on Win8-ready machines, calling acpi_video_unregister_backlight() as soon
    as a native interface shows up. This is done because the ACPI backlight
    interface often is broken on Win8-ready machines, because win8 does not
    seem to actually use it.
    
    So in practice we already end up not registering the ACPI backlight
    interface on (most) Win8-ready machines with a LCD panel, thus this
    change does not change anything for (most) machines with a LCD panel
    and on machines without a LCD panel we actually don't want to register
    any backlight interfaces.
    
    This has been tested on the following machines and fixes a bogus backlight
    interface showing up there:
     - Desktop with an Asrock B150M Pro4S/D3 m.b. using i5-6500 builtin gfx
     - Intel Compute Stick STK1AW32SC
     - Meegopad T08 HDMI stick
    
    Bogus backlight interfaces have also been reported on:
     - Desktop with Asus H87I-Plus m.b.
     - Desktop with ASRock B75M-ITX m.b.
     - Desktop with Gigabyte Z87-D3HP m.b.
     - Dell PowerEdge T20 desktop
    
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1097436
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1133327
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1133329
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1133646
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce6b782c6f38bed869892736bec4e6b50813894c
Author: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date:   Fri Dec 22 09:38:59 2017 -0800

    rds; Reset rs->rs_bound_addr in rds_add_bound() failure path
    
    
    [ Upstream commit 7ae0c649c47f1c5d2db8cee6dd75855970af1669 ]
    
    If the rds_sock is not added to the bind_hash_table, we must
    reset rs_bound_addr so that rds_remove_bound will not trip on
    this rds_sock.
    
    rds_add_bound() does a rds_sock_put() in this failure path, so
    failing to reset rs_bound_addr will result in a socket refcount
    bug, and will trigger a WARN_ON with the stack shown below when
    the application subsequently tries to close the PF_RDS socket.
    
         WARNING: CPU: 20 PID: 19499 at net/rds/af_rds.c:496 \
                    rds_sock_destruct+0x15/0x30 [rds]
           :
         __sk_destruct+0x21/0x190
         rds_remove_bound.part.13+0xb6/0x140 [rds]
         rds_release+0x71/0x120 [rds]
         sock_release+0x1a/0x70
         sock_close+0xe/0x20
         __fput+0xd5/0x210
         task_work_run+0x82/0xa0
         do_exit+0x2ce/0xb30
         ? syscall_trace_enter+0x1cc/0x2b0
         do_group_exit+0x39/0xa0
         SyS_exit_group+0x10/0x10
         do_syscall_64+0x61/0x1a0
    
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e78a6e9aee5bed512e68b6793c739d51b37f93c9
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Fri Dec 22 15:10:17 2017 +0100

    l2tp: fix missing print session offset info
    
    
    [ Upstream commit 820da5357572715c6235ba3b3daa2d5b43a1198f ]
    
    Report offset parameter in L2TP_CMD_SESSION_GET command if
    it has been configured by userspace
    
    Fixes: 309795f4bec ("l2tp: Add netlink control API for L2TP")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8ffa7dfceb5fa5c4ddcd51639bbec759592ced2
Author: Fuyun Liang <liangfuyun1@huawei.com>
Date:   Fri Dec 22 12:21:53 2017 +0800

    net: hns3: add Asym Pause support to phy default features
    
    
    [ Upstream commit f16121c80c8ee4dab3c41363cb8b24f8d8eaf45f ]
    
    commit c4fb2cdf575d ("net: hns3: fix a bug for phy supported feature
    initialization") adds default supported features for phy, but our hardware
    also supports Asym Pause. This patch adds Asym Pause support to phy
    default features to prevent Asym Pause can not be advertised when the phy
    negotiates flow control.
    
    Fixes: c4fb2cdf575d ("net: hns3: fix a bug for phy supported feature initialization")
    Signed-off-by: Fuyun Liang <liangfuyun1@huawei.com>
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 353900b835146f3d83712987cd12d15159842577
Author: Fuyun Liang <liangfuyun1@huawei.com>
Date:   Fri Dec 22 12:21:50 2017 +0800

    net: hns3: fix for getting auto-negotiation state in hclge_get_autoneg
    
    
    [ Upstream commit 27b5bf49f0924fd62d2b1ef8467b40773973da34 ]
    
    When phy exists, we use the value of phydev.autoneg to represent the
    auto-negotiation state of hardware. Otherwise, we use the value of
    mac.autoneg to represent it.
    
    This patch fixes for getting a error value of auto-negotiation state in
    hclge_get_autoneg().
    
    Fixes: 46a3df9f9718 ("net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support")
    Signed-off-by: Fuyun Liang <liangfuyun1@huawei.com>
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4edd8be70f1160944e94d69272ae0467236f23b8
Author: Peng Li <lipeng321@huawei.com>
Date:   Fri Dec 22 12:21:43 2017 +0800

    net: hns3: free the ring_data structrue when change tqps
    
    
    [ Upstream commit 99fdf6b1cadf41bb253408589788f025027274f3 ]
    
    This patch fixes a memory leak problems in change tqps process,
    the function hns3_uninit_all_ring and hns3_init_all_ring
    may be called many times.
    
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: Mingguang Qu <qumingguang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 295c02ce3322c7dd95b5a0b938526083f7dc6cf9
Author: Mengting Zhang <zhangmengting@huawei.com>
Date:   Wed Dec 13 15:01:53 2017 +0800

    perf evsel: Enable ignore_missing_thread for pid option
    
    
    [ Upstream commit ca8000684ec4e66f965e1f9547a3c6cb834154ca ]
    
    While monitoring a multithread process with pid option, perf sometimes
    may return sys_perf_event_open failure with 3(No such process) if any of
    the process's threads die before we open the event. However, we want
    perf continue monitoring the remaining threads and do not exit with
    error.
    
    Here, the patch enables perf_evsel::ignore_missing_thread for -p option
    to ignore complete failure if any of threads die before we open the event.
    But it may still return sys_perf_event_open failure with 22(Invalid) if we
    monitors several event groups.
    
            sys_perf_event_open: pid 28960  cpu 40  group_fd 118202  flags 0x8
            sys_perf_event_open: pid 28961  cpu 40  group_fd 118203  flags 0x8
            WARNING: Ignored open failure for pid 28962
            sys_perf_event_open: pid 28962  cpu 40  group_fd [118203]  flags 0x8
            sys_perf_event_open failed, error -22
    
    That is because when we ignore a missing thread, we change the thread_idx
    without dealing with its fds, FD(evsel, cpu, thread). Then get_group_fd()
    may return a wrong group_fd for the next thread and sys_perf_event_open()
    return with 22.
    
            sys_perf_event_open(){
               ...
               if (group_fd != -1)
                   perf_fget_light()//to get corresponding group_leader by group_fd
               ...
               if (group_leader)
                  if (group_leader->ctx->task != ctx->task)//should on the same task
                       goto err_context
               ...
            }
    
    This patch also fixes this bug by introducing perf_evsel__remove_fd() and
    update_fds to allow removing fds for the missing thread.
    
    Changes since v1:
    - Change group_fd__remove() into a more genetic way without changing code logic
    - Remove redundant condition
    
    Changes since v2:
    - Use a proper function name and add some comment.
    - Multiline comment style fixes.
    
    Committer testing:
    
    Before this patch the recently added 'perf stat --per-thread' for system
    wide counting would race while enumerating all threads using /proc:
    
      [root@jouet ~]# perf stat --per-thread
      failed to parse CPUs map: No such file or directory
    
       Usage: perf stat [<options>] [<command>]
    
          -C, --cpu <cpu>       list of cpus to monitor in system-wide
          -a, --all-cpus        system-wide collection from all CPUs
      [root@jouet ~]# perf stat --per-thread
      failed to parse CPUs map: No such file or directory
    
       Usage: perf stat [<options>] [<command>]
    
          -C, --cpu <cpu>       list of cpus to monitor in system-wide
          -a, --all-cpus        system-wide collection from all CPUs
      [root@jouet ~]#
    
    When, say, the kernel was being built, so lots of shortlived threads,
    after this patch this doesn't happen.
    
    Signed-off-by: Mengting Zhang <zhangmengting@huawei.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Cheng Jian <cj.chengjian@huawei.com>
    Cc: Li Bin <huawei.libin@huawei.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1513148513-6974-1-git-send-email-zhangmengting@huawei.com
    [ Remove one use 'evlist' alias variable ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88d7e9f141c3e451117bbefe88b87bddf7432572
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Wed Nov 29 19:43:46 2017 +0100

    perf evsel: Fix swap for samples with raw data
    
    
    [ Upstream commit f9d8adb345d7adbb2d3431eea73beb89c8d6d612 ]
    
    When we detect a different endianity we swap event before processing.
    It's tricky for samples because we have no idea what's inside. We treat
    it as an array of u64s, swap them and later on we swap back parts which
    are different.
    
    We mangle this way also the tracepoint raw data, which ends up in report
    showing wrong data:
    
      1.95%  comm=Q^B pid=29285 prio=16777216 target_cpu=000
      1.67%  comm=l^B pid=0 prio=16777216 target_cpu=000
    
    Luckily the traceevent library handles the endianity by itself (thank
    you Steven!), so we can pass the RAW data directly in the other
    endianity.
    
      2.51%  comm=beah-rhts-task pid=1175 prio=120 target_cpu=002
      2.23%  comm=kworker/0:0 pid=11566 prio=120 target_cpu=000
    
    The fix is basically to swap back the raw data if different endianity is
    detected.
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/r/20171129184346.3656-1-jolsa@kernel.org
    [ Add util/memswap.c to python-ext-sources to link missing mem_bswap_64() ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ab8894f195ddd42766f6e46ad5424fd2af6e596
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Dec 9 01:26:46 2017 +0900

    perf probe: Add warning message if there is unexpected event name
    
    
    [ Upstream commit 9f5c6d8777a2d962b0eeacb2a16f37da6bea545b ]
    
    This improve the error message so that user can know event-name error
    before writing new events to kprobe-events interface.
    
    E.g.
       ======
       #./perf probe -x /lib64/libc-2.25.so malloc_get_state*
       Internal error: "malloc_get_state@GLIBC_2" is an invalid event name.
         Error: Failed to add events.
       ======
    
    Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Acked-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Reviewed-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Paul Clarke <pc@us.ibm.com>
    Cc: bhargavb <bhargavaramudu@gmail.com>
    Cc: linux-rt-users@vger.kernel.org
    Link: http://lkml.kernel.org/r/151275040665.24652.5188568529237584489.stgit@devbox
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef0fa7a1ec6e567ce36c990d2e98157b49841f8d
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Dec 9 01:28:12 2017 +0900

    perf probe: Find versioned symbols from map
    
    
    [ Upstream commit 4b3a2716dd785fabb9f6ac80c1d53cb29a88169d ]
    
    Commit d80406453ad4 ("perf symbols: Allow user probes on versioned
    symbols") allows user to find default versioned symbols (with "@@") in
    map. However, it did not enable normal versioned symbol (with "@") for
    perf-probe.  E.g.
    
      =====
      # ./perf probe -x /lib64/libc-2.25.so malloc_get_state
      Failed to find symbol malloc_get_state in /usr/lib64/libc-2.25.so
        Error: Failed to add events.
      =====
    
    This solves above issue by improving perf-probe symbol search function,
    as below.
    
      =====
      # ./perf probe -x /lib64/libc-2.25.so malloc_get_state
      Added new event:
        probe_libc:malloc_get_state (on malloc_get_state in /usr/lib64/libc-2.25.so)
    
      You can now use it in all perf tools, such as:
    
              perf record -e probe_libc:malloc_get_state -aR sleep 1
    
      # ./perf probe -l
        probe_libc:malloc_get_state (on malloc_get_state@GLIBC_2.2.5 in /usr/lib64/libc-2.25.so)
      =====
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Reviewed-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
    Acked-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Paul Clarke <pc@us.ibm.com>
    Cc: bhargavb <bhargavaramudu@gmail.com>
    Cc: linux-rt-users@vger.kernel.org
    Link: http://lkml.kernel.org/r/151275049269.24652.1639103455496216255.stgit@devbox
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2dffefdf975a074a5b5d6e1f2163e00fad63cfb1
Author: Yi Zeng <yizeng@asrmicro.com>
Date:   Tue Dec 26 19:22:26 2017 +0800

    thermal: power_allocator: fix one race condition issue for thermal_instances list
    
    
    [ Upstream commit a5de11d67dcd268b8d0beb73dc374de5e97f0caf ]
    
    When invoking allow_maximum_power and traverse tz->thermal_instances,
    we should grab thermal_zone_device->lock to avoid race condition. For
    example, during the system reboot, if the mali GPU device implements
    device shutdown callback and unregister GPU devfreq cooling device,
    the deleted list head may be accessed to cause panic, as the following
    log shows:
    
    [   33.551070] c3 25 (kworker/3:0) Unable to handle kernel paging request at virtual address dead000000000070
    [   33.566708] c3 25 (kworker/3:0) pgd = ffffffc0ed290000
    [   33.572071] c3 25 (kworker/3:0) [dead000000000070] *pgd=00000001ed292003, *pud=00000001ed292003, *pmd=0000000000000000
    [   33.581515] c3 25 (kworker/3:0) Internal error: Oops: 96000004 [#1] PREEMPT SMP
    [   33.599761] c3 25 (kworker/3:0) CPU: 3 PID: 25 Comm: kworker/3:0 Not tainted 4.4.35+ #912
    [   33.614137] c3 25 (kworker/3:0) Workqueue: events_freezable thermal_zone_device_check
    [   33.620245] c3 25 (kworker/3:0) task: ffffffc0f32e4200 ti: ffffffc0f32f0000 task.ti: ffffffc0f32f0000
    [   33.629466] c3 25 (kworker/3:0) PC is at power_allocator_throttle+0x7c8/0x8a4
    [   33.636609] c3 25 (kworker/3:0) LR is at power_allocator_throttle+0x808/0x8a4
    [   33.643742] c3 25 (kworker/3:0) pc : [<ffffff8008683dd0>] lr : [<ffffff8008683e10>] pstate: 20000145
    [   33.652874] c3 25 (kworker/3:0) sp : ffffffc0f32f3bb0
    [   34.468519] c3 25 (kworker/3:0) Process kworker/3:0 (pid: 25, stack limit = 0xffffffc0f32f0020)
    [   34.477220] c3 25 (kworker/3:0) Stack: (0xffffffc0f32f3bb0 to 0xffffffc0f32f4000)
    [   34.819822] c3 25 (kworker/3:0) Call trace:
    [   34.824021] c3 25 (kworker/3:0) Exception stack(0xffffffc0f32f39c0 to 0xffffffc0f32f3af0)
    [   34.924993] c3 25 (kworker/3:0) [<ffffff8008683dd0>] power_allocator_throttle+0x7c8/0x8a4
    [   34.933184] c3 25 (kworker/3:0) [<ffffff80086807f4>] handle_thermal_trip.part.25+0x70/0x224
    [   34.941545] c3 25 (kworker/3:0) [<ffffff8008680a68>] thermal_zone_device_update+0xc0/0x20c
    [   34.949818] c3 25 (kworker/3:0) [<ffffff8008680bd4>] thermal_zone_device_check+0x20/0x2c
    [   34.957924] c3 25 (kworker/3:0) [<ffffff80080b93a4>] process_one_work+0x168/0x458
    [   34.965414] c3 25 (kworker/3:0) [<ffffff80080ba068>] worker_thread+0x13c/0x4b4
    [   34.972650] c3 25 (kworker/3:0) [<ffffff80080c0a4c>] kthread+0xe8/0xfc
    [   34.979187] c3 25 (kworker/3:0) [<ffffff8008084e90>] ret_from_fork+0x10/0x40
    [   34.986244] c3 25 (kworker/3:0) Code: f9405e73 eb1302bf d102e273 54ffc460 (b9402a61)
    [   34.994339] c3 25 (kworker/3:0) ---[ end trace 32057901e3b7e1db ]---
    
    Signed-off-by: Yi Zeng <yizeng@asrmicro.com>
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4dfb698be2a5ede1bd887fb10f79e97564fba4aa
Author: Tobias Brunner <tobias@strongswan.org>
Date:   Thu Dec 21 17:32:24 2017 +0100

    ipv6: Reinject IPv6 packets if IPsec policy matches after SNAT
    
    
    [ Upstream commit 09ee9dba9611cd382fd360a99ad1c2fa23bfdca8 ]
    
    If SNAT modifies the source address the resulting packet might match
    an IPsec policy, reinject the packet if that's the case.
    
    The exact same thing is already done for IPv4.
    
    Signed-off-by: Tobias Brunner <tobias@strongswan.org>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 542f2cc70fe69310b8b889e898d8f7f22aa33dd6
Author: Ioan Moldovan <ioan.moldovan1999@gmail.com>
Date:   Mon Aug 28 18:09:39 2017 +0300

    Bluetooth: Add a new 04ca:3015 QCA_ROME device
    
    
    [ Upstream commit 0a03f98b98c201191e3ba15a0e33f46d8660e1fd ]
    
    This patch adds the 04ca:3015 (from a QCA9377 board) Bluetooth device
    to the btusb blacklist and makes the kernel use the btqca module
    instead of btusb. The patch is necessary because, without it the
    04ca:3015 device defaults to using the btusb driver, which makes the
    WIFI side of the QCA9377 board unusable (obtains 0 MBps in speedtest,
    when the 04ca:3015 bluetooth is used with an audio headset).
    
    /sys/kernel/debug/usb/devices:
    
        T:  Bus=01 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
        D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
        P:  Vendor=04ca ProdID=3015 Rev= 0.01
        C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
        I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
        E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
        E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
        I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
        I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
        I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
        I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
        I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
        I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    
    Signed-off-by: Ioan Moldovan <ioan.moldovan1999@gmail.com>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ee903fb3a1bda058f12eed6df18e13d0f60e709
Author: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Date:   Thu Nov 16 13:15:26 2017 +0100

    ARM: dts: ls1021a: add "fsl,ls1021a-esdhc" compatible string to esdhc node
    
    
    [ Upstream commit d5c7b4d5ac2237a6da7ced3adfe6b8bf769f8cc6 ]
    
    Commit a22950c888e3 (mmc: sdhci-of-esdhc: add quirk
    SDHCI_QUIRK_BROKEN_TIMEOUT_VAL for ls1021a) added logic to the driver to
    enable the broken timeout val quirk for ls1021a, but did not add the
    corresponding compatible string to the device tree, so it didn't really
    have any effect. Fix that.
    
    Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f8a75a2299e3e2f97ea002e5a4f0b4e7c78c22c
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sat Dec 23 22:38:32 2017 +0100

    clk: meson: mpll: use 64-bit maths in params_from_rate
    
    
    [ Upstream commit 86aacdca66774051cbc0958110a48074b57a060b ]
    
    "rem * SDM_DEN" can easily overflow on the 32-bit Meson8 and Meson8b
    SoCs if the "remainder" (after the division operation) is greater than
    262143Hz. This is likely to happen since the input clock for the MPLLs
    on Meson8 and Meson8b is "fixed_pll", which is running at a rate of
    2550MHz.
    
    One example where this was observed to be problematic was the Ethernet
    clock calculation (which takes MPLL2 as input). When requesting a rate
    of 125MHz there is a remainder of 2500000Hz.
    The resulting MPLL2 rate before this patch was 127488329Hz.
    The resulting MPLL2 rate after this patch is 124999103Hz.
    
    Commit b609338b26f5 ("clk: meson: mpll: use 64bit math in
    rate_from_params") already fixed a similar issue in rate_from_params.
    
    Fixes: 007e6e5c5f01d3 ("clk: meson: mpll: add rw operation")
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be7835d54626f05a2f775e88815c48f6159926d3
Author: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
Date:   Fri Dec 22 09:47:01 2017 -0600

    i40iw: Validate correct IRD/ORD connection parameters
    
    
    [ Upstream commit ce9ce74145aa6814a370a9ff4f5a1d719baaced1 ]
    
    Casting to u16 before validating IRD/ORD connection
    parameters could cause recording wrong IRD/ORD values
    in the cm_node. Validate the IRD/ORD parameters as
    they are passed by the application before recording
    them.
    
    Fixes: f27b4746f378 ("i40iw: add connection management code")
    Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 551ace11e153c10445d707ae127bbf75b748d990
Author: Shiraz Saleem <shiraz.saleem@intel.com>
Date:   Fri Dec 22 09:46:56 2017 -0600

    i40iw: Correct Q1/XF object count equation
    
    
    [ Upstream commit fe99afd1febd74e0ef1fed7e3283f09effe1f4f0 ]
    
    Lower Inbound RDMA Read Queue (Q1) object count by a factor of 2
    as it is incorrectly doubled. Also, round up Q1 and Transmit FIFO (XF)
    object count to power of 2 to satisfy hardware requirement.
    
    Fixes: 86dbcd0f12e9 ("i40iw: add file to handle cqp calls")
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2f3d4bf8e4b1f061a0c05ff1586343b1101b0f4
Author: Shiraz Saleem <shiraz.saleem@intel.com>
Date:   Fri Dec 22 09:46:59 2017 -0600

    i40iw: Fix sequence number for the first partial FPDU
    
    
    [ Upstream commit df8b13a1b23356d01dfc4647a5629cdb0f4ce566 ]
    
    Partial FPDU processing is broken as the sequence number
    for the first partial FPDU is wrong due to incorrect
    Q2 buffer offset. The offset should be 64 rather than 16.
    
    Fixes: 786c6adb3a94 ("i40iw: add puda code")
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>