1. 07 Nov, 2018 12 commits
  2. 06 Nov, 2018 28 commits
    • David S. Miller's avatar
      Merge branch 'net-systemport-Unmap-queues-upon-DSA-unregister-event' · 7c588c74
      David S. Miller authored
      Florian Fainelli says:
      
      ====================
      net: systemport: Unmap queues upon DSA unregister event
      
      This patch series fixes the unbinding/binding of the bcm_sf2 switch
      driver along with bcmsysport which monitors the switch port queues.
      Because the driver was not processing the DSA_PORT_UNREGISTER event, we
      would not be unmapping switch port/queues, which could cause incorrect
      decisions to be made by the HW (e.g: queue always back-pressured).
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7c588c74
    • Florian Fainelli's avatar
      net: systemport: Unmap queues upon DSA unregister event · da106a14
      Florian Fainelli authored
      Binding and unbinding the switch driver which creates the DSA slave
      network devices for which we set-up inspection would lead to
      undesireable effects since we were not clearing the port/queue mapping
      to the SYSTEMPORT TX queue.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      da106a14
    • Florian Fainelli's avatar
      net: systemport: Simplify queue mapping logic · 25c44070
      Florian Fainelli authored
      The use of a bitmap speeds up the finding of the first available queue
      to which we could start establishing the mapping for, but we still have
      to loop over all slave network devices to set them up. Simplify the
      logic to have a single loop, and use the fact that a correctly
      configured ring has inspect set to true. This will make things simpler
      to unwind during device unregistration.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      25c44070
    • Florian Fainelli's avatar
      net: dsa: bcm_sf2: Turn on PHY to allow successful registration · c04a17d2
      Florian Fainelli authored
      We are binding to the PHY using the SF2 slave MDIO bus that we create,
      binding involves reading the PHY's MII_PHYSID1/2 which won't be possible
      if the PHY is turned off. Temporarily turn it on/off for the bus probing
      to succeeed. This fixes unbind/bind problems where the port connecting
      to that PHY would be in error since it could not connect to it.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c04a17d2
    • David S. Miller's avatar
      Merge branch 'net-dsa-bcm_sf2-Store-rules-in-lists' · 5882d526
      David S. Miller authored
      Florian Fainelli says:
      
      ====================
      net: dsa: bcm_sf2: Store rules in lists
      
      This patch series changes the bcm-sf2 driver to keep a copy of the
      inserted rules as opposed to using the HW as a storage area for a number
      of reasons:
      
      - this helps us with doing duplicate rule detection in a faster way, it
        would have required a full rule read before
      
      - this helps with Pablo's on-going work to convert ethtool_rx_flow_spec
        to a more generic flow rule structure by having fewer code paths to
        convert to the new structure/helpers
      
      - we need to cache copies to restore them during drive resumption,
        because depending on the low power mode the system has entered, the
        switch may have lost all of its context
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5882d526
    • Florian Fainelli's avatar
      net: systemport: Restore Broadcom tag match filters upon resume · 80f8dea8
      Florian Fainelli authored
      Some of the system suspend states that we support wipe out entirely the
      HW contents. If we had a Wake-on-LAN filter programmed prior to going
      into suspend, but we did not actually wake-up from Wake-on-LAN and
      instead used a deeper suspend state, make sure we restore the CID number
      that we need to match against.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      80f8dea8
    • Florian Fainelli's avatar
      net: dsa: bcm_sf2: Get rid of unmarshalling functions · 1c60c7f9
      Florian Fainelli authored
      Now that we have migrated the CFP rule handling to a list with a
      software copy, the delete/get operation just returns what is on the
      list, no need to read from the hardware which is both slow and more
      error prone.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1c60c7f9
    • Florian Fainelli's avatar
      net: dsa: bcm_sf2: Restore CFP rules during system resume · 1c0130f0
      Florian Fainelli authored
      The hardware can lose its context during system suspend, and depending
      on the switch generation (7445 vs. 7278), while the rules are still
      there, they will have their valid bit cleared (because that's the
      fastest way for the HW to reset things). Just make sure we re-apply them
      coming back from resume. The 7445 switch is an older version of the core
      that has some quirky RAM technology requiring a delete then re-inser to
      guarantee the RAM entries are properly latched.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1c0130f0
    • Florian Fainelli's avatar
      net: dsa: bcm_sf2: Split rule handling from HW operation · ce24b08a
      Florian Fainelli authored
      In preparation for restoring CFP rules during system wide system
      suspend/resume where the hardware loses its context, split the rule
      validation from its actual insertion as well as the rule removal from
      its actual hardware deletion operation.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ce24b08a
    • Florian Fainelli's avatar
      net: dsa: bcm_sf2: Keep copy of inserted rules · ae7a5aff
      Florian Fainelli authored
      We tried hard to use the hardware as a storage area, which made things
      needlessly complex in that we had to both marshall and unmarshall the
      ethtool_rx_flow_spec into what the CFP hardware understands but it did
      not require any driver level allocations, so that was nice.
      
      Keep a copy of the ethtool_rx_flow_spec rule we want to insert, and also
      make sure we don't have a duplicate rule already. This greatly speeds up
      the deletion time since we only need to clear the slice's valid bit and
      not perform a full read.
      
      This is a preparatory step for being able to restore rules upon system
      resumption where the hardware loses its context partially or entirely.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ae7a5aff
    • David S. Miller's avatar
      Merge branch 'net-More-extack-messages' · 95772ec9
      David S. Miller authored
      David Ahern says:
      
      ====================
      net: More extack messages
      
      Add more extack messages for several link create errors (e.g., invalid
      number of queues, unknown link kind) and invalid metrics argument.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      95772ec9
    • David Ahern's avatar
      rtnetlink: Add more extack messages to rtnl_newlink · 68d57f3b
      David Ahern authored
      Add extack arg to the nla_parse_nested calls in rtnl_newlink, and
      add messages for unknown device type and link network namespace id.
      In particular, it improves the failure message when the wrong link
      type is used. From
          $ ip li add bond1 type bonding
          RTNETLINK answers: Operation not supported
      to
          $ ip li add bond1 type bonding
          Error: Unknown device type.
      
      (The module name is bonding but the link type is bond.)
      Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      68d57f3b
    • David Ahern's avatar
      net: Add extack argument to ip_fib_metrics_init · d7e774f3
      David Ahern authored
      Add extack argument to ip_fib_metrics_init and add messages for invalid
      metrics.
      Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d7e774f3
    • David Ahern's avatar
      net: Add extack argument to rtnl_create_link · d0522f1c
      David Ahern authored
      Add extack arg to rtnl_create_link and add messages for invalid
      number of Tx or Rx queues.
      Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d0522f1c
    • Eric Dumazet's avatar
      ipv6: gro: do not use slow memcmp() in ipv6_gro_receive() · 0b215b97
      Eric Dumazet authored
      ipv6_gro_receive() compares 34 bytes using slow memcmp(),
      while handcoding with a couple of ipv6_addr_equal() is much faster.
      
      Before this patch, "perf top -e cycles:pp -C <cpu>" would
      see memcmp() using ~10% of cpu cycles on a 40Gbit NIC
      receiving IPv6 TCP traffic.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0b215b97
    • Yangtao Li's avatar
      net: skbuff.h: remove unnecessary unlikely() · 5e1abdc3
      Yangtao Li authored
      WARN_ON() already contains an unlikely(), so it's not necessary to use
      unlikely.
      Signed-off-by: default avatarYangtao Li <tiny.windzz@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5e1abdc3
    • Olof Johansson's avatar
      ISDN: eicon: Remove driver · a8d62195
      Olof Johansson authored
      I started looking at the history of this driver, and last time the
      maintainer was active on the mailing list was when discussing how to
      remove it. This was in 2012:
      
      https://lore.kernel.org/lkml/4F4DE175.30002@melware.de/
      
      It looks to me like this has in practice been an orphan for quite a while.
      It's throwing warnings about stack size in a function that is in dire
      need of refactoring, and it's probably a case of "it's time to call it".
      
      Cc: Armin Schindler <mac@melware.de>
      Cc: Karsten Keil <isdn@linux-pingi.de>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a8d62195
    • Linus Torvalds's avatar
      Merge tag 'trace-v4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 8053e5b9
      Linus Torvalds authored
      Pull tracing fix from Steven Rostedt:
       "Masami found a slight bug in his code where he transposed the
        arguments of a call to strpbrk.
      
        The reason this wasn't detected in our tests is that the only way this
        would transpire is when a kprobe event with a symbol offset is
        attached to a function that belongs to a module that isn't loaded yet.
        When the kprobe trace event is added, the offset would be truncated
        after it was parsed, and when the module is loaded, it would use the
        symbol without the offset (as the nul character added by the parsing
        would not be replaced with the original character)"
      
      * tag 'trace-v4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing/kprobes: Fix strpbrk() argument order
      8053e5b9
    • Linus Torvalds's avatar
      Merge branch 'spectre' of git://git.armlinux.org.uk/~rmk/linux-arm · 4581aa96
      Linus Torvalds authored
      Pull ARM fix from Russell King:
       "Ard spotted a typo in one of the assembly files which leads to a
        kernel oops when that code path is executed. Fix this"
      
      * 'spectre' of git://git.armlinux.org.uk/~rmk/linux-arm:
        ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm
      4581aa96
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · a13511df
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Handle errors mid-stream of an all dump, from Alexey Kodanev.
      
       2) Fix build of openvswitch with certain combinations of netfilter
          options, from Arnd Bergmann.
      
       3) Fix interactions between GSO and BQL, from Eric Dumazet.
      
       4) Don't put a '/' in RTL8201F's sysfs file name, from Holger
          Hoffstätte.
      
       5) S390 qeth driver fixes from Julian Wiedmann.
      
       6) Allow ipv6 link local addresses for netconsole when both source and
          destination are link local, from Matwey V. Kornilov.
      
       7) Fix the BPF program address seen in /proc/kallsyms, from Song Liu.
      
       8) Initialize mutex before use in dsa microchip driver, from Tristram
          Ha.
      
       9) Out-of-bounds access in hns3, from Yunsheng Lin.
      
      10) Various netfilter fixes from Stefano Brivio, Jozsef Kadlecsik, Jiri
          Slaby, Florian Westphal, Eric Westbrook, Andrey Ryabinin, and Pablo
          Neira Ayuso.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (50 commits)
        net: alx: make alx_drv_name static
        net: bpfilter: fix iptables failure if bpfilter_umh is disabled
        sock_diag: fix autoloading of the raw_diag module
        net: core: netpoll: Enable netconsole IPv6 link local address
        ipv6: properly check return value in inet6_dump_all()
        rtnetlink: restore handling of dumpit return value in rtnl_dump_all()
        net/ipv6: Move anycast init/cleanup functions out of CONFIG_PROC_FS
        bonding/802.3ad: fix link_failure_count tracking
        net: phy: realtek: fix RTL8201F sysfs name
        sctp: define SCTP_SS_DEFAULT for Stream schedulers
        sctp: fix strchange_flags name for Stream Change Event
        mlxsw: spectrum: Fix IP2ME CPU policer configuration
        openvswitch: fix linking without CONFIG_NF_CONNTRACK_LABELS
        qed: fix link config error handling
        net: hns3: Fix for out-of-bounds access when setting pfc back pressure
        net/mlx4_en: use __netdev_tx_sent_queue()
        net: do not abort bulk send on BQL status
        net: bql: add __netdev_tx_sent_queue()
        s390/qeth: report 25Gbit link speed
        s390/qeth: sanitize ARP requests
        ...
      a13511df
    • Ard Biesheuvel's avatar
      ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm · 6282e916
      Ard Biesheuvel authored
      Due to what appears to be a copy/paste error, the opening ENTRY()
      of cpu_v7_hvc_switch_mm() lacks a matching ENDPROC(), and instead,
      the one for cpu_v7_smc_switch_mm() is duplicated.
      
      Given that it is ENDPROC() that emits the Thumb annotation, the
      cpu_v7_hvc_switch_mm() routine will be called in ARM mode on a
      Thumb2 kernel, resulting in the following splat:
      
        Internal error: Oops - undefined instruction: 0 [#1] SMP THUMB2
        Modules linked in:
        CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0-rc1-00030-g4d28ad89189d-dirty #488
        Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
        PC is at cpu_v7_hvc_switch_mm+0x12/0x18
        LR is at flush_old_exec+0x31b/0x570
        pc : [<c0316efe>]    lr : [<c04117c7>]    psr: 00000013
        sp : ee899e50  ip : 00000000  fp : 00000001
        r10: eda28f34  r9 : eda31800  r8 : c12470e0
        r7 : eda1fc00  r6 : eda53000  r5 : 00000000  r4 : ee88c000
        r3 : c0316eec  r2 : 00000001  r1 : eda53000  r0 : 6da6c000
        Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
      
      Note the 'ISA ARM' in the last line.
      
      Fix this by using the correct name in ENDPROC().
      
      Cc: <stable@vger.kernel.org>
      Fixes: 10115105 ("ARM: spectre-v2: add firmware based hardening")
      Reviewed-by: default avatarDave Martin <Dave.Martin@arm.com>
      Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      6282e916
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf · a422757e
      David S. Miller authored
      Pablo Neira Ayuso says:
      
      ====================
      Netfilter fixes for net
      
      The following patchset contains the first batch of Netfilter fixes for
      your net tree:
      
      1) Fix splat with IPv6 defragmenting locally generated fragments,
         from Florian Westphal.
      
      2) Fix Incorrect check for missing attribute in nft_osf.
      
      3) Missing INT_MIN & INT_MAX definition for netfilter bridge uapi
         header, from Jiri Slaby.
      
      4) Revert map lookup in nft_numgen, this is already possible with
         the existing infrastructure without this extension.
      
      5) Fix wrong listing of set reference counter, make counter
         synchronous again, from Stefano Brivio.
      
      6) Fix CIDR 0 in hash:net,port,net, from Eric Westbrook.
      
      7) Fix allocation failure with large set, use kvcalloc().
         From Andrey Ryabinin.
      
      8) No need to disable BH when fetch ip set comment, patch from
         Jozsef Kadlecsik.
      
      9) Sanity check for valid sysfs entry in xt_IDLETIMER, from
         Taehee Yoo.
      
      10) Fix suspicious rcu usage via ip_set() macro at netlink dump,
          from Jozsef Kadlecsik.
      
      11) Fix setting default timeout via nfnetlink_cttimeout, this
          comes with preparation patch to add nf_{tcp,udp,...}_pernet()
          helper.
      
      12) Allow ebtables table nat to be of filter type via nft_compat.
          From Florian Westphal.
      
      13) Incorrect calculation of next bucket in early_drop, do no bump
          hash value, update bucket counter instead. From Vasily Khoruzhick.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a422757e
    • Rasmus Villemoes's avatar
      net: alx: make alx_drv_name static · 71311931
      Rasmus Villemoes authored
      alx_drv_name is not used outside main.c, so there's no reason for it to
      have external linkage.
      Signed-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      71311931
    • Taehee Yoo's avatar
      net: bpfilter: fix iptables failure if bpfilter_umh is disabled · 97adadda
      Taehee Yoo authored
      When iptables command is executed, ip_{set/get}sockopt() try to upload
      bpfilter.ko if bpfilter is enabled. if it couldn't find bpfilter.ko,
      command is failed.
      bpfilter.ko is generated if CONFIG_BPFILTER_UMH is enabled.
      ip_{set/get}sockopt() only checks CONFIG_BPFILTER.
      So that if CONFIG_BPFILTER is enabled and CONFIG_BPFILTER_UMH is disabled,
      iptables command is always failed.
      
      test config:
         CONFIG_BPFILTER=y
         # CONFIG_BPFILTER_UMH is not set
      
      test command:
         %iptables -L
         iptables: No chain/target/match by that name.
      
      Fixes: d2ba09c1 ("net: add skeleton of bpfilter kernel module")
      Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      97adadda
    • Andrei Vagin's avatar
      sock_diag: fix autoloading of the raw_diag module · c34c1287
      Andrei Vagin authored
      IPPROTO_RAW isn't registred as an inet protocol, so
      inet_protos[protocol] is always NULL for it.
      
      Cc: Cyrill Gorcunov <gorcunov@gmail.com>
      Cc: Xin Long <lucien.xin@gmail.com>
      Fixes: bf2ae2e4 ("sock_diag: request _diag module only when the family or proto has been registered")
      Signed-off-by: default avatarAndrei Vagin <avagin@gmail.com>
      Reviewed-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c34c1287
    • Matwey V. Kornilov's avatar
      net: core: netpoll: Enable netconsole IPv6 link local address · d016b4a3
      Matwey V. Kornilov authored
      There is no reason to discard using source link local address when
      remote netconsole IPv6 address is set to be link local one.
      
      The patch allows administrators to use IPv6 netconsole without
      explicitly configuring source address:
      
          netconsole=@/,@fe80::5054:ff:fe2f:6012/
      Signed-off-by: default avatarMatwey V. Kornilov <matwey@sai.msu.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d016b4a3
    • Alexey Kodanev's avatar
      ipv6: properly check return value in inet6_dump_all() · e22d0bfa
      Alexey Kodanev authored
      Make sure we call fib6_dump_end() if it happens that skb->len
      is zero. rtnl_dump_all() can reset cb->args on the next loop
      iteration there.
      
      Fixes: 08e814c9 ("net/ipv6: Bail early if user only wants cloned entries")
      Fixes: ae677bbb ("net: Don't return invalid table id error when dumping all families")
      Signed-off-by: default avatarAlexey Kodanev <alexey.kodanev@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e22d0bfa
    • Alexey Kodanev's avatar
      rtnetlink: restore handling of dumpit return value in rtnl_dump_all() · 5e1acb4a
      Alexey Kodanev authored
      For non-zero return from dumpit() we should break the loop
      in rtnl_dump_all() and return the result. Otherwise, e.g.,
      we could get the memory leak in inet6_dump_fib() [1]. The
      pointer to the allocated struct fib6_walker there (saved
      in cb->args) can be lost, reset on the next iteration.
      
      Fix it by partially restoring the previous behavior before
      commit c63586dc ("net: rtnl_dump_all needs to propagate
      error from dumpit function"). The returned error from
      dumpit() is still passed further.
      
      [1]:
      unreferenced object 0xffff88001322a200 (size 96):
        comm "sshd", pid 1484, jiffies 4296032768 (age 1432.542s)
        hex dump (first 32 bytes):
          00 01 00 00 00 00 ad de 00 02 00 00 00 00 ad de  ................
          18 09 41 36 00 88 ff ff 18 09 41 36 00 88 ff ff  ..A6......A6....
        backtrace:
          [<0000000095846b39>] kmem_cache_alloc_trace+0x151/0x220
          [<000000007d12709f>] inet6_dump_fib+0x68d/0x940
          [<000000002775a316>] rtnl_dump_all+0x1d9/0x2d0
          [<00000000d7cd302b>] netlink_dump+0x945/0x11a0
          [<000000002f43485f>] __netlink_dump_start+0x55d/0x800
          [<00000000f76bbeec>] rtnetlink_rcv_msg+0x4fa/0xa00
          [<000000009b5761f3>] netlink_rcv_skb+0x29c/0x420
          [<0000000087a1dae1>] rtnetlink_rcv+0x15/0x20
          [<00000000691b703b>] netlink_unicast+0x4e3/0x6c0
          [<00000000b5be0204>] netlink_sendmsg+0x7f2/0xba0
          [<0000000096d2aa60>] sock_sendmsg+0xba/0xf0
          [<000000008c1b786f>] __sys_sendto+0x1e4/0x330
          [<0000000019587b3f>] __x64_sys_sendto+0xe1/0x1a0
          [<00000000071f4d56>] do_syscall_64+0x9f/0x300
          [<000000002737577f>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
          [<0000000057587684>] 0xffffffffffffffff
      
      Fixes: c63586dc ("net: rtnl_dump_all needs to propagate error from dumpit function")
      Signed-off-by: default avatarAlexey Kodanev <alexey.kodanev@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5e1acb4a