1. 27 12月, 2019 40 次提交
    • A
      net: mvpp2: 10G modes aren't supported on all ports · 3832bfff
      Antoine Tenart 提交于
      [ Upstream commit 00679177 ]
      
      The mvpp2_phylink_validate() function sets all modes that are
      supported by a given PPv2 port. A recent change made all ports to
      advertise they support 10G modes in certain cases. This is not true,
      as only the port #0 can do so. This patch fixes it.
      
      Fixes: 01b3fd5a ("net: mvpp2: fix detection of 10G SFP modules")
      Cc: Baruch Siach <baruch@tkos.co.il>
      Signed-off-by: NAntoine Tenart <antoine.tenart@bootlin.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      3832bfff
    • C
      net: macb: restart tx after tx used bit read · fcf0d43d
      Claudiu Beznea 提交于
      [ Upstream commit 42983885 ]
      
      On some platforms (currently detected only on SAMA5D4) TX might stuck
      even the pachets are still present in DMA memories and TX start was
      issued for them. This happens due to race condition between MACB driver
      updating next TX buffer descriptor to be used and IP reading the same
      descriptor. In such a case, the "TX USED BIT READ" interrupt is asserted.
      GEM/MACB user guide specifies that if a "TX USED BIT READ" interrupt
      is asserted TX must be restarted. Restart TX if used bit is read and
      packets are present in software TX queue. Packets are removed from software
      TX queue if TX was successful for them (see macb_tx_interrupt()).
      Signed-off-by: NClaudiu Beznea <claudiu.beznea@microchip.com>
      Acked-by: NNicolas Ferre <nicolas.ferre@microchip.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      fcf0d43d
    • M
      net: ipv4: do not handle duplicate fragments as overlapping · 6f0998ab
      Michal Kubecek 提交于
      [ Upstream commit ade44640 ]
      
      Since commit 7969e5c4 ("ip: discard IPv4 datagrams with overlapping
      segments.") IPv4 reassembly code drops the whole queue whenever an
      overlapping fragment is received. However, the test is written in a way
      which detects duplicate fragments as overlapping so that in environments
      with many duplicate packets, fragmented packets may be undeliverable.
      
      Add an extra test and for (potentially) duplicate fragment, only drop the
      new fragment rather than the whole queue. Only starting offset and length
      are checked, not the contents of the fragments as that would be too
      expensive. For similar reason, linear list ("run") of a rbtree node is not
      iterated, we only check if the new fragment is a subset of the interval
      covered by existing consecutive fragments.
      
      v2: instead of an exact check iterating through linear list of an rbtree
      node, only check if the new fragment is subset of the "run" (suggested
      by Eric Dumazet)
      
      Fixes: 7969e5c4 ("ip: discard IPv4 datagrams with overlapping segments.")
      Signed-off-by: NMichal Kubecek <mkubecek@suse.cz>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      6f0998ab
    • E
      net/hamradio/6pack: use mod_timer() to rearm timers · 27ba4f6a
      Eric Dumazet 提交于
      [ Upstream commit 202700e3 ]
      
      Using del_timer() + add_timer() is generally unsafe on SMP,
      as noticed by syzbot. Use mod_timer() instead.
      
      kernel BUG at kernel/time/timer.c:1136!
      invalid opcode: 0000 [#1] PREEMPT SMP KASAN
      CPU: 1 PID: 1026 Comm: kworker/u4:4 Not tainted 4.20.0+ #2
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Workqueue: events_unbound flush_to_ldisc
      RIP: 0010:add_timer kernel/time/timer.c:1136 [inline]
      RIP: 0010:add_timer+0xa81/0x1470 kernel/time/timer.c:1134
      Code: 4d 89 7d 40 48 c7 85 70 fe ff ff 00 00 00 00 c7 85 7c fe ff ff ff ff ff ff 48 89 85 90 fe ff ff e9 e6 f7 ff ff e8 cf 42 12 00 <0f> 0b e8 c8 42 12 00 0f 0b e8 c1 42 12 00 4c 89 bd 60 fe ff ff e9
      RSP: 0018:ffff8880a7fdf5a8 EFLAGS: 00010293
      RAX: ffff8880a7846340 RBX: dffffc0000000000 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: ffffffff816f3ee1 RDI: ffff88808a514ff8
      RBP: ffff8880a7fdf760 R08: 0000000000000007 R09: ffff8880a7846c58
      R10: ffff8880a7846340 R11: 0000000000000000 R12: ffff88808a514ff8
      R13: ffff88808a514ff8 R14: ffff88808a514dc0 R15: 0000000000000030
      FS:  0000000000000000(0000) GS:ffff8880ae700000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000000000061c500 CR3: 00000000994d9000 CR4: 00000000001406e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       decode_prio_command drivers/net/hamradio/6pack.c:903 [inline]
       sixpack_decode drivers/net/hamradio/6pack.c:971 [inline]
       sixpack_receive_buf drivers/net/hamradio/6pack.c:457 [inline]
       sixpack_receive_buf+0xf9c/0x1470 drivers/net/hamradio/6pack.c:434
       tty_ldisc_receive_buf+0x164/0x1c0 drivers/tty/tty_buffer.c:465
       tty_port_default_receive_buf+0x114/0x190 drivers/tty/tty_port.c:38
       receive_buf drivers/tty/tty_buffer.c:481 [inline]
       flush_to_ldisc+0x3b2/0x590 drivers/tty/tty_buffer.c:533
       process_one_work+0xd0c/0x1ce0 kernel/workqueue.c:2153
       worker_thread+0x143/0x14a0 kernel/workqueue.c:2296
       kthread+0x357/0x430 kernel/kthread.c:246
       ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
      
      Fixes: 1da177e4 ("Linux-2.6.12-rc2")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: Nsyzbot <syzkaller@googlegroups.com>
      Cc: Andreas Koensgen <ajk@comnets.uni-bremen.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      27ba4f6a
    • E
      net: clear skb->tstamp in forwarding paths · 23627127
      Eric Dumazet 提交于
      [ Upstream commit 8203e2d8 ]
      
      Sergey reported that forwarding was no longer working
      if fq packet scheduler was used.
      
      This is caused by the recent switch to EDT model, since incoming
      packets might have been timestamped by __net_timestamp()
      
      __net_timestamp() uses ktime_get_real(), while fq expects packets
      using CLOCK_MONOTONIC base.
      
      The fix is to clear skb->tstamp in forwarding paths.
      
      Fixes: 80b14dee ("net: Add a new socket option for a future transmit time.")
      Fixes: fb420d5d ("tcp/fq: move back to CLOCK_MONOTONIC")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: NSergey Matyukevich <geomatsi@gmail.com>
      Tested-by: NSergey Matyukevich <geomatsi@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      23627127
    • E
      isdn: fix kernel-infoleak in capi_unlocked_ioctl · b2fb8103
      Eric Dumazet 提交于
      [ Upstream commit d63967e4 ]
      
      Since capi_ioctl() copies 64 bytes after calling
      capi20_get_manufacturer() we need to ensure to not leak
      information to user.
      
      BUG: KMSAN: kernel-infoleak in _copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
      CPU: 0 PID: 11245 Comm: syz-executor633 Not tainted 4.20.0-rc7+ #2
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x173/0x1d0 lib/dump_stack.c:113
       kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
       kmsan_internal_check_memory+0x9d4/0xb00 mm/kmsan/kmsan.c:704
       kmsan_copy_to_user+0xab/0xc0 mm/kmsan/kmsan_hooks.c:601
       _copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
       capi_ioctl include/linux/uaccess.h:177 [inline]
       capi_unlocked_ioctl+0x1a0b/0x1bf0 drivers/isdn/capi/capi.c:939
       do_vfs_ioctl+0xebd/0x2bf0 fs/ioctl.c:46
       ksys_ioctl fs/ioctl.c:713 [inline]
       __do_sys_ioctl fs/ioctl.c:720 [inline]
       __se_sys_ioctl+0x1da/0x270 fs/ioctl.c:718
       __x64_sys_ioctl+0x4a/0x70 fs/ioctl.c:718
       do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
       entry_SYSCALL_64_after_hwframe+0x63/0xe7
      RIP: 0033:0x440019
      Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 fb 13 fc ff c3 66 2e 0f 1f 84 00 00 00 00
      RSP: 002b:00007ffdd4659fb8 EFLAGS: 00000213 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 00000000004002c8 RCX: 0000000000440019
      RDX: 0000000020000080 RSI: 00000000c0044306 RDI: 0000000000000003
      RBP: 00000000006ca018 R08: 0000000000000000 R09: 00000000004002c8
      R10: 0000000000000000 R11: 0000000000000213 R12: 00000000004018a0
      R13: 0000000000401930 R14: 0000000000000000 R15: 0000000000000000
      
      Local variable description: ----data.i@capi_unlocked_ioctl
      Variable was created at:
       capi_ioctl drivers/isdn/capi/capi.c:747 [inline]
       capi_unlocked_ioctl+0x82/0x1bf0 drivers/isdn/capi/capi.c:939
       do_vfs_ioctl+0xebd/0x2bf0 fs/ioctl.c:46
      
      Bytes 12-63 of 64 are uninitialized
      Memory access of size 64 starts at ffff88807ac5fce8
      Data copied to user address 0000000020000080
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: Nsyzbot <syzkaller@googlegroups.com>
      Cc: Karsten Keil <isdn@linux-pingi.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      b2fb8103
    • W
      ip: validate header length on virtual device xmit · e9c04048
      Willem de Bruijn 提交于
      [ Upstream commit cb9f1b78 ]
      
      KMSAN detected read beyond end of buffer in vti and sit devices when
      passing truncated packets with PF_PACKET. The issue affects additional
      ip tunnel devices.
      
      Extend commit 76c0ddd8 ("ip6_tunnel: be careful when accessing the
      inner header") and commit ccfec9e5 ("ip_tunnel: be careful when
      accessing the inner header").
      
      Move the check to a separate helper and call at the start of each
      ndo_start_xmit function in net/ipv4 and net/ipv6.
      
      Minor changes:
      - convert dev_kfree_skb to kfree_skb on error path,
        as dev_kfree_skb calls consume_skb which is not for error paths.
      - use pskb_network_may_pull even though that is pedantic here,
        as the same as pskb_may_pull for devices without llheaders.
      - do not cache ipv6 hdrs if used only once
        (unsafe across pskb_may_pull, was more relevant to earlier patch)
      Reported-by: Nsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: NWillem de Bruijn <willemb@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      e9c04048
    • E
      ipv6: tunnels: fix two use-after-free · 2f6ceecf
      Eric Dumazet 提交于
      [ Upstream commit cbb49697 ]
      
      xfrm6_policy_check() might have re-allocated skb->head, we need
      to reload ipv6 header pointer.
      
      sysbot reported :
      
      BUG: KASAN: use-after-free in __ipv6_addr_type+0x302/0x32f net/ipv6/addrconf_core.c:40
      Read of size 4 at addr ffff888191b8cb70 by task syz-executor2/1304
      
      CPU: 0 PID: 1304 Comm: syz-executor2 Not tainted 4.20.0-rc7+ #356
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       <IRQ>
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x244/0x39d lib/dump_stack.c:113
       print_address_description.cold.7+0x9/0x1ff mm/kasan/report.c:256
       kasan_report_error mm/kasan/report.c:354 [inline]
       kasan_report.cold.8+0x242/0x309 mm/kasan/report.c:412
       __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:432
       __ipv6_addr_type+0x302/0x32f net/ipv6/addrconf_core.c:40
       ipv6_addr_type include/net/ipv6.h:403 [inline]
       ip6_tnl_get_cap+0x27/0x190 net/ipv6/ip6_tunnel.c:727
       ip6_tnl_rcv_ctl+0xdb/0x2a0 net/ipv6/ip6_tunnel.c:757
       vti6_rcv+0x336/0x8f3 net/ipv6/ip6_vti.c:321
       xfrm6_ipcomp_rcv+0x1a5/0x3a0 net/ipv6/xfrm6_protocol.c:132
       ip6_protocol_deliver_rcu+0x372/0x1940 net/ipv6/ip6_input.c:394
       ip6_input_finish+0x84/0x170 net/ipv6/ip6_input.c:434
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ip6_input+0xe9/0x600 net/ipv6/ip6_input.c:443
      IPVS: ftp: loaded support on port[0] = 21
       ip6_mc_input+0x514/0x11c0 net/ipv6/ip6_input.c:537
       dst_input include/net/dst.h:450 [inline]
       ip6_rcv_finish+0x17a/0x330 net/ipv6/ip6_input.c:76
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ipv6_rcv+0x115/0x640 net/ipv6/ip6_input.c:272
       __netif_receive_skb_one_core+0x14d/0x200 net/core/dev.c:4973
       __netif_receive_skb+0x2c/0x1e0 net/core/dev.c:5083
       process_backlog+0x24e/0x7a0 net/core/dev.c:5923
       napi_poll net/core/dev.c:6346 [inline]
       net_rx_action+0x7fa/0x19b0 net/core/dev.c:6412
       __do_softirq+0x308/0xb7e kernel/softirq.c:292
       do_softirq_own_stack+0x2a/0x40 arch/x86/entry/entry_64.S:1027
       </IRQ>
       do_softirq.part.14+0x126/0x160 kernel/softirq.c:337
       do_softirq+0x19/0x20 kernel/softirq.c:340
       netif_rx_ni+0x521/0x860 net/core/dev.c:4569
       dev_loopback_xmit+0x287/0x8c0 net/core/dev.c:3576
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ip6_finish_output2+0x193a/0x2930 net/ipv6/ip6_output.c:84
       ip6_fragment+0x2b06/0x3850 net/ipv6/ip6_output.c:727
       ip6_finish_output+0x6b7/0xc50 net/ipv6/ip6_output.c:152
       NF_HOOK_COND include/linux/netfilter.h:278 [inline]
       ip6_output+0x232/0x9d0 net/ipv6/ip6_output.c:171
       dst_output include/net/dst.h:444 [inline]
       ip6_local_out+0xc5/0x1b0 net/ipv6/output_core.c:176
       ip6_send_skb+0xbc/0x340 net/ipv6/ip6_output.c:1727
       ip6_push_pending_frames+0xc5/0xf0 net/ipv6/ip6_output.c:1747
       rawv6_push_pending_frames net/ipv6/raw.c:615 [inline]
       rawv6_sendmsg+0x3a3e/0x4b40 net/ipv6/raw.c:945
      kobject: 'queues' (0000000089e6eea2): kobject_add_internal: parent: 'tunl0', set: '<NULL>'
      kobject: 'queues' (0000000089e6eea2): kobject_uevent_env
       inet_sendmsg+0x1a1/0x690 net/ipv4/af_inet.c:798
      kobject: 'queues' (0000000089e6eea2): kobject_uevent_env: filter function caused the event to drop!
       sock_sendmsg_nosec net/socket.c:621 [inline]
       sock_sendmsg+0xd5/0x120 net/socket.c:631
       sock_write_iter+0x35e/0x5c0 net/socket.c:900
       call_write_iter include/linux/fs.h:1857 [inline]
       new_sync_write fs/read_write.c:474 [inline]
       __vfs_write+0x6b8/0x9f0 fs/read_write.c:487
      kobject: 'rx-0' (00000000e2d902d9): kobject_add_internal: parent: 'queues', set: 'queues'
      kobject: 'rx-0' (00000000e2d902d9): kobject_uevent_env
       vfs_write+0x1fc/0x560 fs/read_write.c:549
       ksys_write+0x101/0x260 fs/read_write.c:598
      kobject: 'rx-0' (00000000e2d902d9): fill_kobj_path: path = '/devices/virtual/net/tunl0/queues/rx-0'
       __do_sys_write fs/read_write.c:610 [inline]
       __se_sys_write fs/read_write.c:607 [inline]
       __x64_sys_write+0x73/0xb0 fs/read_write.c:607
       do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
      kobject: 'tx-0' (00000000443b70ac): kobject_add_internal: parent: 'queues', set: 'queues'
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x457669
      Code: fd b3 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 cb b3 fb ff c3 66 2e 0f 1f 84 00 00 00 00
      RSP: 002b:00007f9bd200bc78 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
      RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000457669
      RDX: 000000000000058f RSI: 00000000200033c0 RDI: 0000000000000003
      kobject: 'tx-0' (00000000443b70ac): kobject_uevent_env
      RBP: 000000000072bf00 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 00007f9bd200c6d4
      R13: 00000000004c2dcc R14: 00000000004da398 R15: 00000000ffffffff
      
      Allocated by task 1304:
       save_stack+0x43/0xd0 mm/kasan/kasan.c:448
       set_track mm/kasan/kasan.c:460 [inline]
       kasan_kmalloc+0xc7/0xe0 mm/kasan/kasan.c:553
       __do_kmalloc_node mm/slab.c:3684 [inline]
       __kmalloc_node_track_caller+0x50/0x70 mm/slab.c:3698
       __kmalloc_reserve.isra.41+0x41/0xe0 net/core/skbuff.c:140
       __alloc_skb+0x155/0x760 net/core/skbuff.c:208
      kobject: 'tx-0' (00000000443b70ac): fill_kobj_path: path = '/devices/virtual/net/tunl0/queues/tx-0'
       alloc_skb include/linux/skbuff.h:1011 [inline]
       __ip6_append_data.isra.49+0x2f1a/0x3f50 net/ipv6/ip6_output.c:1450
       ip6_append_data+0x1bc/0x2d0 net/ipv6/ip6_output.c:1619
       rawv6_sendmsg+0x15ab/0x4b40 net/ipv6/raw.c:938
       inet_sendmsg+0x1a1/0x690 net/ipv4/af_inet.c:798
       sock_sendmsg_nosec net/socket.c:621 [inline]
       sock_sendmsg+0xd5/0x120 net/socket.c:631
       ___sys_sendmsg+0x7fd/0x930 net/socket.c:2116
       __sys_sendmsg+0x11d/0x280 net/socket.c:2154
       __do_sys_sendmsg net/socket.c:2163 [inline]
       __se_sys_sendmsg net/socket.c:2161 [inline]
       __x64_sys_sendmsg+0x78/0xb0 net/socket.c:2161
       do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      kobject: 'gre0' (00000000cb1b2d7b): kobject_add_internal: parent: 'net', set: 'devices'
      
      Freed by task 1304:
       save_stack+0x43/0xd0 mm/kasan/kasan.c:448
       set_track mm/kasan/kasan.c:460 [inline]
       __kasan_slab_free+0x102/0x150 mm/kasan/kasan.c:521
       kasan_slab_free+0xe/0x10 mm/kasan/kasan.c:528
       __cache_free mm/slab.c:3498 [inline]
       kfree+0xcf/0x230 mm/slab.c:3817
       skb_free_head+0x93/0xb0 net/core/skbuff.c:553
       pskb_expand_head+0x3b2/0x10d0 net/core/skbuff.c:1498
       __pskb_pull_tail+0x156/0x18a0 net/core/skbuff.c:1896
       pskb_may_pull include/linux/skbuff.h:2188 [inline]
       _decode_session6+0xd11/0x14d0 net/ipv6/xfrm6_policy.c:150
       __xfrm_decode_session+0x71/0x140 net/xfrm/xfrm_policy.c:3272
      kobject: 'gre0' (00000000cb1b2d7b): kobject_uevent_env
       __xfrm_policy_check+0x380/0x2c40 net/xfrm/xfrm_policy.c:3322
       __xfrm_policy_check2 include/net/xfrm.h:1170 [inline]
       xfrm_policy_check include/net/xfrm.h:1175 [inline]
       xfrm6_policy_check include/net/xfrm.h:1185 [inline]
       vti6_rcv+0x4bd/0x8f3 net/ipv6/ip6_vti.c:316
       xfrm6_ipcomp_rcv+0x1a5/0x3a0 net/ipv6/xfrm6_protocol.c:132
       ip6_protocol_deliver_rcu+0x372/0x1940 net/ipv6/ip6_input.c:394
       ip6_input_finish+0x84/0x170 net/ipv6/ip6_input.c:434
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ip6_input+0xe9/0x600 net/ipv6/ip6_input.c:443
       ip6_mc_input+0x514/0x11c0 net/ipv6/ip6_input.c:537
       dst_input include/net/dst.h:450 [inline]
       ip6_rcv_finish+0x17a/0x330 net/ipv6/ip6_input.c:76
       NF_HOOK include/linux/netfilter.h:289 [inline]
       ipv6_rcv+0x115/0x640 net/ipv6/ip6_input.c:272
       __netif_receive_skb_one_core+0x14d/0x200 net/core/dev.c:4973
       __netif_receive_skb+0x2c/0x1e0 net/core/dev.c:5083
       process_backlog+0x24e/0x7a0 net/core/dev.c:5923
      kobject: 'gre0' (00000000cb1b2d7b): fill_kobj_path: path = '/devices/virtual/net/gre0'
       napi_poll net/core/dev.c:6346 [inline]
       net_rx_action+0x7fa/0x19b0 net/core/dev.c:6412
       __do_softirq+0x308/0xb7e kernel/softirq.c:292
      
      The buggy address belongs to the object at ffff888191b8cac0
       which belongs to the cache kmalloc-512 of size 512
      The buggy address is located 176 bytes inside of
       512-byte region [ffff888191b8cac0, ffff888191b8ccc0)
      The buggy address belongs to the page:
      page:ffffea000646e300 count:1 mapcount:0 mapping:ffff8881da800940 index:0x0
      flags: 0x2fffc0000000200(slab)
      raw: 02fffc0000000200 ffffea0006eaaa48 ffffea00065356c8 ffff8881da800940
      raw: 0000000000000000 ffff888191b8c0c0 0000000100000006 0000000000000000
      page dumped because: kasan: bad access detected
      kobject: 'queues' (000000005fd6226e): kobject_add_internal: parent: 'gre0', set: '<NULL>'
      
      Memory state around the buggy address:
       ffff888191b8ca00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       ffff888191b8ca80: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
      >ffff888191b8cb00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                   ^
       ffff888191b8cb80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff888191b8cc00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      
      Fixes: 0d3c703a ("ipv6: Cleanup IPv6 tunnel receive path")
      Fixes: ed1efb2a ("ipv6: Add support for IPsec virtual tunnel interfaces")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Steffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      2f6ceecf
    • C
      ipv6: explicitly initialize udp6_addr in udp_sock_create6() · 224d77d6
      Cong Wang 提交于
      [ Upstream commit fb242745 ]
      
      syzbot reported the use of uninitialized udp6_addr::sin6_scope_id.
      We can just set ::sin6_scope_id to zero, as tunnels are unlikely
      to use an IPv6 address that needs a scope id and there is no
      interface to bind in this context.
      
      For net-next, it looks different as we have cfg->bind_ifindex there
      so we can probably call ipv6_iface_scope_id().
      
      Same for ::sin6_flowinfo, tunnels don't use it.
      
      Fixes: 8024e028 ("udp: Add udp_sock_create for UDP tunnels to open listener socket")
      Reported-by: syzbot+c56449ed3652e6720f30@syzkaller.appspotmail.com
      Cc: Jon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: NCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      224d77d6
    • G
      ipv4: Fix potential Spectre v1 vulnerability · 8a6605e1
      Gustavo A. R. Silva 提交于
      [ Upstream commit 5648451e ]
      
      vr.vifi is indirectly controlled by user-space, hence leading to
      a potential exploitation of the Spectre variant 1 vulnerability.
      
      This issue was detected with the help of Smatch:
      
      net/ipv4/ipmr.c:1616 ipmr_ioctl() warn: potential spectre issue 'mrt->vif_table' [r] (local cap)
      net/ipv4/ipmr.c:1690 ipmr_compat_ioctl() warn: potential spectre issue 'mrt->vif_table' [r] (local cap)
      
      Fix this by sanitizing vr.vifi before using it to index mrt->vif_table'
      
      Notice that given that speculation windows are large, the policy is
      to kill the speculation on the first load and not worry if it can be
      completed with a dependent load/store [1].
      
      [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2Signed-off-by: NGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      8a6605e1
    • G
      ip6mr: Fix potential Spectre v1 vulnerability · 63b96c75
      Gustavo A. R. Silva 提交于
      [ Upstream commit 69d2c867 ]
      
      vr.mifi is indirectly controlled by user-space, hence leading to
      a potential exploitation of the Spectre variant 1 vulnerability.
      
      This issue was detected with the help of Smatch:
      
      net/ipv6/ip6mr.c:1845 ip6mr_ioctl() warn: potential spectre issue 'mrt->vif_table' [r] (local cap)
      net/ipv6/ip6mr.c:1919 ip6mr_compat_ioctl() warn: potential spectre issue 'mrt->vif_table' [r] (local cap)
      
      Fix this by sanitizing vr.mifi before using it to index mrt->vif_table'
      
      Notice that given that speculation windows are large, the policy is
      to kill the speculation on the first load and not worry if it can be
      completed with a dependent load/store [1].
      
      [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2Signed-off-by: NGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      63b96c75
    • W
      ieee802154: lowpan_header_create check must check daddr · 72949507
      Willem de Bruijn 提交于
      [ Upstream commit 40c3ff6d ]
      
      Packet sockets may call dev_header_parse with NULL daddr. Make
      lowpan_header_ops.create fail.
      
      Fixes: 87a93e4e ("ieee802154: change needed headroom/tailroom")
      Signed-off-by: NWillem de Bruijn <willemb@google.com>
      Acked-by: NAlexander Aring <aring@mojatatu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      72949507
    • T
      ibmveth: fix DMA unmap error in ibmveth_xmit_start error path · 4b20aed6
      Tyrel Datwyler 提交于
      [ Upstream commit 756af9c6 ]
      
      Commit 33a48ab1 ("ibmveth: Fix DMA unmap error") fixed an issue in the
      normal code path of ibmveth_xmit_start() that was originally introduced by
      Commit 6e8ab30e ("ibmveth: Add scatter-gather support"). This original
      fix missed the error path where dma_unmap_page is wrongly called on the
      header portion in descs[0] which was mapped with dma_map_single. As a
      result a failure to DMA map any of the frags results in a dmesg warning
      when CONFIG_DMA_API_DEBUG is enabled.
      
      ------------[ cut here ]------------
      DMA-API: ibmveth 30000002: device driver frees DMA memory with wrong function
        [device address=0x000000000a430000] [size=172 bytes] [mapped as page] [unmapped as single]
      WARNING: CPU: 1 PID: 8426 at kernel/dma/debug.c:1085 check_unmap+0x4fc/0xe10
      ...
      <snip>
      ...
      DMA-API: Mapped at:
      ibmveth_start_xmit+0x30c/0xb60
      dev_hard_start_xmit+0x100/0x450
      sch_direct_xmit+0x224/0x490
      __qdisc_run+0x20c/0x980
      __dev_queue_xmit+0x1bc/0xf20
      
      This fixes the API misuse by unampping descs[0] with dma_unmap_single.
      
      Fixes: 6e8ab30e ("ibmveth: Add scatter-gather support")
      Signed-off-by: NTyrel Datwyler <tyreld@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      4b20aed6
    • L
      gro_cell: add napi_disable in gro_cells_destroy · 0b522fee
      Lorenzo Bianconi 提交于
      [ Upstream commit 8e1da73a ]
      
      Add napi_disable routine in gro_cells_destroy since starting from
      commit c42858ea ("gro_cells: remove spinlock protecting receive
      queues") gro_cell_poll and gro_cells_destroy can run concurrently on
      napi_skbs list producing a kernel Oops if the tunnel interface is
      removed while gro_cell_poll is running. The following Oops has been
      triggered removing a vxlan device while the interface is receiving
      traffic
      
      [ 5628.948853] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
      [ 5628.949981] PGD 0 P4D 0
      [ 5628.950308] Oops: 0002 [#1] SMP PTI
      [ 5628.950748] CPU: 0 PID: 9 Comm: ksoftirqd/0 Not tainted 4.20.0-rc6+ #41
      [ 5628.952940] RIP: 0010:gro_cell_poll+0x49/0x80
      [ 5628.955615] RSP: 0018:ffffc9000004fdd8 EFLAGS: 00010202
      [ 5628.956250] RAX: 0000000000000000 RBX: ffffe8ffffc08150 RCX: 0000000000000000
      [ 5628.957102] RDX: 0000000000000000 RSI: ffff88802356bf00 RDI: ffffe8ffffc08150
      [ 5628.957940] RBP: 0000000000000026 R08: 0000000000000000 R09: 0000000000000000
      [ 5628.958803] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000040
      [ 5628.959661] R13: ffffe8ffffc08100 R14: 0000000000000000 R15: 0000000000000040
      [ 5628.960682] FS:  0000000000000000(0000) GS:ffff88803ea00000(0000) knlGS:0000000000000000
      [ 5628.961616] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 5628.962359] CR2: 0000000000000008 CR3: 000000000221c000 CR4: 00000000000006b0
      [ 5628.963188] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [ 5628.964034] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [ 5628.964871] Call Trace:
      [ 5628.965179]  net_rx_action+0xf0/0x380
      [ 5628.965637]  __do_softirq+0xc7/0x431
      [ 5628.966510]  run_ksoftirqd+0x24/0x30
      [ 5628.966957]  smpboot_thread_fn+0xc5/0x160
      [ 5628.967436]  kthread+0x113/0x130
      [ 5628.968283]  ret_from_fork+0x3a/0x50
      [ 5628.968721] Modules linked in:
      [ 5628.969099] CR2: 0000000000000008
      [ 5628.969510] ---[ end trace 9d9dedc7181661fe ]---
      [ 5628.970073] RIP: 0010:gro_cell_poll+0x49/0x80
      [ 5628.972965] RSP: 0018:ffffc9000004fdd8 EFLAGS: 00010202
      [ 5628.973611] RAX: 0000000000000000 RBX: ffffe8ffffc08150 RCX: 0000000000000000
      [ 5628.974504] RDX: 0000000000000000 RSI: ffff88802356bf00 RDI: ffffe8ffffc08150
      [ 5628.975462] RBP: 0000000000000026 R08: 0000000000000000 R09: 0000000000000000
      [ 5628.976413] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000040
      [ 5628.977375] R13: ffffe8ffffc08100 R14: 0000000000000000 R15: 0000000000000040
      [ 5628.978296] FS:  0000000000000000(0000) GS:ffff88803ea00000(0000) knlGS:0000000000000000
      [ 5628.979327] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 5628.980044] CR2: 0000000000000008 CR3: 000000000221c000 CR4: 00000000000006b0
      [ 5628.980929] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [ 5628.981736] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [ 5628.982409] Kernel panic - not syncing: Fatal exception in interrupt
      [ 5628.983307] Kernel Offset: disabled
      
      Fixes: c42858ea ("gro_cells: remove spinlock protecting receive queues")
      Signed-off-by: NLorenzo Bianconi <lorenzo.bianconi@redhat.com>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      0b522fee
    • C
      ax25: fix a use-after-free in ax25_fillin_cb() · 86d7b70c
      Cong Wang 提交于
      [ Upstream commit c4335704 ]
      
      There are multiple issues here:
      
      1. After freeing dev->ax25_ptr, we need to set it to NULL otherwise
         we may use a dangling pointer.
      
      2. There is a race between ax25_setsockopt() and device notifier as
         reported by syzbot. Close it by holding RTNL lock.
      
      3. We need to test if dev->ax25_ptr is NULL before using it.
      
      Reported-and-tested-by: syzbot+ae6bb869cbed29b29040@syzkaller.appspotmail.com
      Signed-off-by: NCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      86d7b70c
    • Y
      Revert "sched: fix infinity loop in update_blocked_averages" · f68bb0cb
      Yang Yingliang 提交于
      euler inclusion
      category: bugfix
      bugzilla: 5446
      CVE: NA
      
      Drop this patch, but use the patch in LTS kernel.
      -------------------
      
      This reverts commit a6a0d7f89b3ecd0fd96540222f3f2ff8397a5c9b.
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      f68bb0cb
    • Z
      iommu/arm-smmu-v3: Add support for non-strict mode · 5e11fd9a
      Zhen Lei 提交于
      mainline inclusion
      from mainline-v4.20-rc1
      commit: 9662b99a
      category: perf
      bugzilla: 5027
      CVE: NA
      ----------------------------
      
      Now that io-pgtable knows how to dodge strict TLB maintenance, all
      that's left to do is bridge the gap between the IOMMU core requesting
      DOMAIN_ATTR_DMA_USE_FLUSH_QUEUE for default domains, and showing the
      appropriate IO_PGTABLE_QUIRK_NON_STRICT flag to alloc_io_pgtable_ops().
      Signed-off-by: NZhen Lei <thunder.leizhen@huawei.com>
      [rm: convert to domain attribute, tweak commit message]
      Signed-off-by: NRobin Murphy <robin.murphy@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      5e11fd9a
    • Y
      Revert "platform-msi: Free descriptors in platform_msi_domain_free()" · 399fc34c
      Yang Yingliang 提交于
      euler inclusion
      category: bugfix
      bugzilla: 5359
      CVE: NA
      
      Drop this patch, but use the patch in LTS kernel.
      -------------------
      
      This reverts commit 698ac96606173d99c1b2f8fded0990c30047ee3c.
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      399fc34c
    • Y
      Revert "Revert "iommu/arm-smmu-v3: Abort all transactions if SMMU is enabled in kdump kernel"" · b9574483
      Yang Yingliang 提交于
      This reverts commit 1d9623d5b010387003f2a6c383f520d711fe4db9.
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      b9574483
    • Y
      Revert "device: add device_shutdown_one() helper" · a15d4cb3
      Yang Yingliang 提交于
      This reverts commit 565759fe2df8d553e8d8910e9d7f2032e9c9355c.
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      a15d4cb3
    • Y
      Revert "device: add device_shutdown_by_driver() helper" · a0daeec9
      Yang Yingliang 提交于
      This reverts commit 3cbd5bf6892f0c8c6a12d5848af1e1b46ec50eef.
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      a0daeec9
    • Y
      Revert "kexec: add kexec_device_shutdown()" · 4a34ed5c
      Yang Yingliang 提交于
      This reverts commit 3f5824d84929e058b82a0dcd28a6a8b13339cc00.
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      4a34ed5c
    • H
      nvme: fix out of bounds access in nvme_cqe_pending · c9bef76b
      Hongbo Yao 提交于
      euler inclusion
      category: bugfix
      bugzilla: 5347
      CVE: NA
      ------------------------------------------------
      
      There is an out of bounds array access in nvme_cqe_peding().
      
      When enable irq_thread for nvme interrupt, there is racing between the
      nvmeq->cq_head updating and reading.
      
      nvmeq->cq_head is updated in nvme_update_cq_head(), if nvmeq->cq_head
      equals nvmeq->q_depth and before its value set to zero, nvme_cqe_pending()
      uses its value as an array index, the index will be out of bounds.
      
      (When enabled nvme.using_thread_interrupts=1 in cmdline, i found this
      abnormal address access).
      
      [  100.299140] Unable to handle kernel paging request at virtual address
      ffff00002416500e
      [  100.307046] Mem abort info:
      [  100.309826]   ESR = 0x96000007
      [  100.312867]   Exception class = DABT (current EL), IL = 32 bits
      [  100.318771]   SET = 0, FnV = 0
      [  100.321811]   EA = 0, S1PTW = 0
      [  100.324938] Data abort info:
      [  100.327805]   ISV = 0, ISS = 0x00000007
      [  100.331626]   CM = 0, WnR = 0
      [  100.334581] swapper pgtable: 4k pages, 48-bit VAs, pgdp =
      00000000a9f05748
      [  100.341441] [ffff00002416500e] pgd=00000a5fffffe803,
      pud=00000a5fffffd803, pmd=0000003f780ac003, pte=0000000000000000
      [  100.352038] Internal error: Oops: 96000007 [#1] PREEMPT SMP
      [  100.357597] Modules linked in: hns_roce_hw_v2(O) hns_roce(O) hns3(O)
      hclge(O) hnae3(O)
      [  100.365505] CPU: 28 PID: 2888 Comm: irq/162-nvme0q7 Tainted: G
      O      4.19.0-g45910de #1
      [  100.374449] Hardware name: Huawei D06/D06, BIOS Hisilicon D06 UEFI
      RC0 - B080 (V8.01) 11/30/2018
      [  100.383218] pstate: 00400089 (nzcv daIf +PAN -UAO)
      [  100.387999] pc : nvme_irq_check+0x10/0x28
      [  100.391995] lr : __handle_irq_event_percpu+0x70/0x2c8
      [  100.397032] sp : ffff000009ac3e60
      [  100.400333] x29: ffff000009ac3e60 x28: ffff803f73690d80
      [  100.405631] x27: ffff805f78494400 x26: ffff0000097d1000
      [  100.410930] x25: ffff000009ac3f04 x24: ffff0000097a2018
      [  100.416228] x23: ffff0000097d1b40 x22: 00000000000000a2
      [  100.421526] x21: 0000000000000000 x20: ffff805f78494438
      [  100.426825] x19: ffff803f70384480 x18: 0000000000000400
      [  100.432123] x17: 0000000000000000 x16: 0000000000000000
      [  100.437421] x15: 0000000000000400 x14: 0000000000000400
      [  100.442719] x13: 0000000000000000 x12: 0000000000000000
      [  100.448018] x11: 0000000000000000 x10: 0000000000000040
      [  100.453317] x9 : ffff0000097effe0 x8 : ffff803f775db908
      [  100.458615] x7 : ffff803f775dba40 x6 : 0000000000000110
      [  100.463913] x5 : ffff803f775db908 x4 : 0000805f7626a000
      [  100.469212] x3 : 0000000000000000 x2 : ffff000024161000
      [  100.474510] x1 : 0000000000000001 x0 : ffff000024165000
      [  100.479809] Process irq/162-nvme0q7 (pid: 2888, stack limit =
      0x000000007f43f8e5)
      [  100.487276] Call trace:
      [  100.489710]  nvme_irq_check+0x10/0x28
      [  100.493358]  handle_irq_event_percpu+0x34/0x88
      [  100.497787]  handle_irq_event+0x48/0x78
      [  100.501610]  handle_fasteoi_irq+0xa8/0x180
      [  100.505692]  generic_handle_irq+0x24/0x38
      [  100.509688]  __handle_domain_irq+0x5c/0xb0
      [  100.513770]  gic_handle_irq+0x7c/0x180
      [  100.517504]  el1_irq+0xb0/0x128
      [  100.520631]  nvme_irq+0x108/0x150
      [  100.523933]  irq_thread_fn+0x28/0x68
      [  100.527494]  irq_thread+0x124/0x1d0
      [  100.530969]  kthread+0x12c/0x130
      [  100.534183]  ret_from_fork+0x10/0x18
      [  100.537745] Code: 7940ec20 f9402422 3941f021 8b001040 (79401c00)
      [  100.543895] ---[ end trace 119829d132a82da5 ]---
      [  100.548499] Kernel panic - not syncing: Fatal exception in interrupt
      [  100.554881] SMP: stopping secondary CPUs
      [  100.575347] Kernel Offset: disabled
      [  100.578822] CPU features: 0x0,22800a38
      [  100.582556] Memory Limit: none
      [  100.585633] ---[ end Kernel panic - not syncing: Fatal exception in
      interrupt ]---
      Signed-off-by: NHongbo Yao <yaohongbo@huawei.com>
      Reviewed-by: NXie XiuQi <xiexiuqi@huawei.com>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      c9bef76b
    • Y
      config: update hulk_defconfig · 3d319f4b
      Yang Yingliang 提交于
      euler inclusion
      category: feature
      bugzilla: 4979
      CVE: NA
      
      1) enable CONFIG_ARM64_ERR_RECOV
      2) change CONFIG_HNS_MDIO and CONFIG_HNS_DSAF to m
      3) change CONFIG_HNS3_HCLGEVF to m
      4) enable CONFIG_INFINIBAND_HNS* to m
      5) enable CONFIG_VFIO_MDEV, CONFIG_VFIO_MDEV_DEVICE and CONFIG_VFIO_SPIMDEV to m
      6) enable CONFIG_CRYPTO_DEV_HISI* to m
      3d319f4b
    • Y
      driver: roce: update roce driver from driver team · 8b3021f3
      Yang Yingliang 提交于
      Sync roce driver from driver team.
      Based on c63ba8b3f1dd8882a7cbe237cffc61c7fa1429f8
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      8b3021f3
    • Y
      driver: hns3: update hns3 driver from drivers · 09262653
      Yang Yingliang 提交于
      Sync hns3 driver from drivers team.
      Based on 5db38ff635972569325bbf95db88fa3558f27ea7
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      09262653
    • Y
      net: hns: modify promisc entry to avoid mismatch · 0961e03b
      Yonglong Liu 提交于
      driver inclusion
      category: bugfix
      bugzilla: NA
      CVE: NA
      
      ---------------------------------------
      
      1. change promisc tcam entry position to the END of 512 tcam entries.
      2. separate one promisc entry to: mc & uc, to avoid the mismatch.
      Signed-off-by: NYonglong Liu <liuyonglong@huawei.com>
      Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
      0961e03b
    • L
      scsi: hisi_sas: Add DFX Feature: Ensure snapshot to be called only one time · 1ac3f5d4
      Luo Jiaxing 提交于
      Ensure snapshot register action can only be executed for one time
      after enable
      Signed-off-by: NLuo Jiaxing <luojiaxing@huawei.com>
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      
      Feature or Bugfix: Bugfix
      Signed-off-by: Nluojiaxing <luojiaxing@huawei.com>
      Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
      1ac3f5d4
    • H
      zip/qm: bugfix: modify zip as parent module for wd spimdev device · 4748750b
      Hao Fang 提交于
      Fix the zip as the spimdev->owner, so if mdev created, zip module
      can't be remove. If want to remove zip module, first remove mdev
      once mdev have created.
      
      Feature or Bugfix:Bugfix
      Signed-off-by: NHao Fang <fanghao11@huawei.com>
      Reviewed-by: Nxuzaibo <xuzaibo@huawei.com>
      Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
      4748750b
    • Y
      net: hns: All ports can not work when insmod hns ko after rmmod · aa6b5c1c
      Yonglong Liu 提交于
      When system panic and kdump starts the second kernel, net port can not work.
      
      There are another two test cases have the similar reason:
      1. Remove the 4 modules:hns_enet_drv/hns_dsaf/hnae/hns_mdio,
      and install them again, must use "ifconfig down/ifconfig up"
      command pair to bring port to work.
      
      This patch calls phy_stop function when init phy to fix this bug.
      
      2. Remove the 2 modules:hns_enet_drv/hns_dsaf, and install them again,
      all ports can not use anymore, because of the phy devices register
      failed(phy devices already exists).
      
      Phy devices are registered when hns_dsaf installed, this patch
      removes them when hns_dsaf removed.
      
      The two cases are sometimes related, fixing the second case also requires
      fixing the first case, so fix them together.
      
      Feature or Bugfix:Bugfix
      Signed-off-by: NYonglong Liu <liuyonglong@huawei.com>
      Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
      aa6b5c1c
    • H
      test/zip_udrv:support zip stream mode · e25cfedd
      Hao Fang 提交于
      Support zlib/gzip deflate and inflate.
      
      Feature or Bugfix:Feature
      Signed-off-by: NHao Fang <fanghao11@huawei.com>
      Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
      e25cfedd
    • Y
      net: hns: Fix use after free identified by SLUB debug · 3c4d904c
      Yonglong Liu 提交于
      When enable SLUB debug, than remove hns_enet_drv module, SLUB debug will
      identified a use after free bug:
      
      [134.189505] Unable to handle kernel paging request at virtual address
      006b6b6b6b6b6b6b
      [134.197553] Mem abort info:
      [134.200381]   ESR = 0x96000004
      [134.203487]   Exception class = DABT (current EL), IL = 32 bits
      [134.209497]   SET = 0, FnV = 0
      [134.212596]   EA = 0, S1PTW = 0
      [134.215777] Data abort info:
      [134.218701]   ISV = 0, ISS = 0x00000004
      [134.222596]   CM = 0, WnR = 0
      [134.225606] [006b6b6b6b6b6b6b] address between user and kernel address ranges
      [134.232851] Internal error: Oops: 96000004 [#1] SMP
      [134.237798] CPU: 21 PID: 27834 Comm: rmmod Kdump: loaded Tainted: G
      OE     4.19.5-1.2.34.aarch64 #1
      [134.247856] Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.58 10/24/2018
      [134.255181] pstate: 20000005 (nzCv daif -PAN -UAO)
      [134.260044] pc : hns_ae_put_handle+0x38/0x60
      [134.264372] lr : hns_ae_put_handle+0x24/0x60
      [134.268700] sp : ffff00001be93c50
      [134.272054] x29: ffff00001be93c50 x28: ffff802faaec8040
      [134.277442] x27: 0000000000000000 x26: 0000000000000000
      [134.282830] x25: 0000000056000000 x24: 0000000000000015
      [134.288284] x23: ffff0000096fe098 x22: ffff000001050070
      [134.293671] x21: ffff801fb3c044a0 x20: ffff80afb75ec098
      [134.303287] x19: ffff80afb75ec098 x18: 0000000000000000
      [134.312945] x17: 0000000000000000 x16: 0000000000000000
      [134.322517] x15: 0000000000000002 x14: 0000000000000000
      [134.332030] x13: dead000000000100 x12: ffff7e02bea3c988
      [134.341487] x11: ffff80affbee9e68 x10: 0000000000000000
      [134.351033] x9 : 6fffff8000008101 x8 : 0000000000000000
      [134.360569] x7 : dead000000000100 x6 : ffff000009579748
      [134.370059] x5 : 0000000000210d00 x4 : 0000000000000000
      [134.379550] x3 : 0000000000000001 x2 : 0000000000000000
      [134.388813] x1 : 6b6b6b6b6b6b6b6b x0 : 0000000000000000
      [134.397993] Process rmmod (pid: 27834, stack limit = 0x00000000d474b7fd)
      [134.408498] Call trace:
      [134.414611]  hns_ae_put_handle+0x38/0x60
      [134.422208]  hnae_put_handle+0xd4/0x108
      [134.429563]  hns_nic_dev_remove+0x60/0xc0 [hns_enet_drv]
      [134.438342]  platform_drv_remove+0x2c/0x70
      [134.445958]  device_release_driver_internal+0x174/0x208
      [134.454810]  driver_detach+0x70/0xd8
      [134.461913]  bus_remove_driver+0x64/0xe8
      [134.469396]  driver_unregister+0x34/0x60
      [134.476822]  platform_driver_unregister+0x20/0x30
      [134.485130]  hns_nic_dev_driver_exit+0x14/0x6e4 [hns_enet_drv]
      [134.494634]  __arm64_sys_delete_module+0x238/0x290
      
      struct hnae_handle is a member of struct hnae_vf_cb, so when vf_cb is freed,
      than use hnae_handle will cause use after free panic.
      
      This patch free vf_cb after hnae_handle used.
      
      Feature or Bugfix:Bugfix
      PrivateCode:No
      Signed-off-by: NYonglong Liu <liuyonglong@huawei.com>
      Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
      3c4d904c
    • Z
      crypto: zip: set pf_q_num = 0 an invalid value · 7a0af59e
      Zhou Wang 提交于
      Feature or Bugfix:Bugfix
      Signed-off-by: NZhou Wang <wangzhou1@hisilicon.com>
      Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
      7a0af59e
    • Z
      update qm/zip with linux v1 code · fb5b0a78
      Zhou Wang 提交于
      At this point, qm/zip crypto driver is same with v1 in linux community.
      And also add queue resset to support wd.
      
      Also merge this commit:
      
      Description:fix qm/zip based on linux v1.
      
      IMPORTANT, this should be added into linux v1 version!!!
      
      Description: linux v1 fix 2.
      
      Feature or Bugfix:Bugfix
      Signed-off-by: NZhou Wang <wangzhou1@hisilicon.com>
      Signed-off-by: NHao Fang <fanghao11@huawei.com>
      Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
      fb5b0a78
    • L
      scsi: hisi_sas: Add DFX Feature: add snapshot prepare action and restore action · b1e19e3f
      Luo Jiaxing 提交于
      This patch add some action as below to prevent new require
      from generating before snapshot
      1. Reject the IO request
      2. Disable DQ
      3. Wait for current CMD to be completed
      4. Kill All Tasklet
      
      In order to avoid conflict with other function after
      execute the dfx prepare function,we use workqueue to
      call snapshot_regs function.
      
      After snapshot, we restore the DQ and Reject Cmd Flag
      Signed-off-by: NLuo Jiaxing <luojiaxing@huawei.com>
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      
      Feature or Bugfix:Feature
      Signed-off-by: Nluojiaxing <luojiaxing@huawei.com>
      Reviewed-by: Nchenxiang <chenxiang66@hisilicon.com>
      b1e19e3f
    • C
      scsi: hisi_sas: send primitive NOTIFY to SSP situation only · 00cbb2a8
      chenxiang 提交于
      Send primitive NOTIFY to SSP situation only, or it causes underflow issue
      when sending IO. And also rename hisi_sas_hw.sl_notify() to hisi_sas_hw.
      sl_notify_ssp().
      Signed-off-by: NXiang Chen <chenxiang66@hisilicon.com>
      Signed-off-by: NJohn Garry <john.garry@huawei.com>
      
      Feature or Bugfix:Bugfix
      Signed-off-by: Nchenxiang (M) <chenxiang66@hisilicon.com>
      Reviewed-by: Nhuangdaode <huangdaode@hisilicon.com>
      00cbb2a8
    • X
      HPRE kfree and pci data bug fixed · 4f33e04a
      xuzaibo 提交于
      Feature or Bugfix:Bugfix
      Signed-off-by: Nxuzaibo <xuzaibo@huawei.com>
      Reviewed-by: Nwangzhou <wangzhou1@hisilicon.com>
      4f33e04a
    • H
      wd_test/zip: add input/output file size upper check · 1bf157b0
      Hao Fang 提交于
      Feature or Bugfix:Bugfix
      Signed-off-by: NHao Fang <fanghao11@huawei.com>
      Reviewed-by: Nxuzibo <xuzaibo@huawei.com>
      1bf157b0
    • H
      wd_test/zip:add the judgement of the empty file input · 60b95db7
      Hao Fang 提交于
      Feature or Bugfix:Bugfix
      Signed-off-by: NHao Fang <fanghao11@huawei.com>
      Reviewed-by: Nxuzaibo <xuzaibo@huawei.com>
      60b95db7
    • X
      Add HPRE enabling on Hi1620 CS FPGA · 376cb10d
      xuzaibo 提交于
      Feature or Bugfix:Feature
      Signed-off-by: Nxuzaibo <xuzaibo@huawei.com>
      Reviewed-by: Nwangzhou <wangzhou1@hisilicon.com>
      Reviewed-by: Nfanghao <fanghao11@huawei.com>
      376cb10d