1. 22 May, 2018 7 commits
    • Jacob Keller's avatar
      i40e: update data pointer directly when copying to the buffer · e08696dc
      Jacob Keller authored
      A future patch is going to add a helper function i40e_add_ethtool_stats
      that will help lower the amount of boiler plate code in the
      i40e_get_ethtool_stats function.
      
      This conversion will take place over many patches, and the helper
      function will work by directly updating a reference to the data pointer.
      
      Since this would not work combined with the current method of accessing
      data like an array, update all the code that copies stats into the data
      buffer to use direct updates to the pointer instead of array accesses.
      
      This will prevent incorrect stat updates for patches in between the
      conversion.
      
      Similarly, when copying strings, we used a separate char *p pointer.
      Instead, use the data pointer directly as it's already a (u8 *) type
      which is the same size.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e08696dc
    • Jacob Keller's avatar
      i40e: fold prefix strings directly into stat names · bf1c39e6
      Jacob Keller authored
      We always prefix these stats with a fixed string, so just fold this
      prefix into the stat string definition. This preparatory work will make
      it easier to implement a helper function to copy stats and strings into
      the supplied buffers in a future patch.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      bf1c39e6
    • Jacob Keller's avatar
      i40e: use WARN_ONCE to replace the commented BUG_ON size check · 9b10df59
      Jacob Keller authored
      We don't really want to use BUG_ON here since that would completely
      crash the kernel, thus the reason we commented it out. We *can't* use
      BUILD_BUG_ON because at least now (a) the sizes aren't constant (we are
      fixing this) and (b) not all compilers are smart enough to understand
      that "p - data" is a constant.
      
      Instead, just use a WARN_ONCE so that the first time we end up with an
      incorrect size we will dump a stack trace and a message, hopefully
      highlighting the issues early in testing.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      9b10df59
    • Jacob Keller's avatar
      i40e: split i40e_get_strings() into smaller functions · 019b9cd4
      Jacob Keller authored
      Split the statistic strings and private flags strings into their own
      separate functions to aid code readability.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      019b9cd4
    • Jacob Keller's avatar
      i40e: always return all queue stat strings · b8312365
      Jacob Keller authored
      The ethtool API for obtaining device statistics is not intended to allow
      runtime changes in the number of statistics reported. It may *appear*
      this way, as there is an ability to request the number of stats using
      ethtool_get_set_count(). However, it is expected that this must always
      return the same value for invocations of the same device.
      
      If we don't satisfy this contract, and allow the number of stats to
      change during run time, we could cause invalid memory accesses or report
      the stat strings incorrectly. This is because the API for obtaining
      stats is to (1) get the size, (2) get the strings and finally (3) get
      the stats. Since these are each separate ethtool op commands, it is not
      possible to maintain consistency by holding the RTNL lock over the whole
      operation. This results in the potential for a race condition to occur
      where the size changed between any of the 3 calls.
      
      Avoid this issue by requiring that we always return the same value for
      a given device. We can check any values which remain constant for the
      life of the device, but must not report different sizes depending on
      runtime attributes.
      
      This patch specifically fixes the queue statistics to always return
      every queue even if it's not currently in use.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      b8312365
    • Jacob Keller's avatar
      i40e: always return VEB stat strings · 9955d494
      Jacob Keller authored
      The ethtool API for obtaining device statistics is not intended to allow
      runtime changes in the number of statistics reported. It may *appear*
      this way, as there is an ability to request the number of stats using
      ethtool_get_set_count(). However, it is expected that this must always
      return the same value for invocations of the same device.
      
      If we don't satisfy this contract, and allow the number of stats to
      change during run time, we could cause invalid memory accesses or report
      the stat strings incorrectly. This is because the API for obtaining
      stats is to (1) get the size, (2) get the strings and finally (3) get
      the stats. Since these are each separate ethtool op commands, it is not
      possible to maintain consistency by holding the RTNL lock over the whole
      operation. This results in the potential for a race condition to occur
      where the size changed between any of the 3 calls.
      
      Avoid this issue by requiring that we always return the same value for
      a given device. We can check any values which remain constant for the
      life of the device, but must not report different sizes depending on
      runtime attributes.
      
      This patch specifically fixes the VEB statistics strings to always be
      reported. Other issues will be fixed in future patches.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      9955d494
    • Jacob Keller's avatar
      i40e: free skb after clearing lock in ptp_stop · bdf27523
      Jacob Keller authored
      Use the same logic to free the skb after clearing the Tx timestamp bit
      lock in i40e_ptp_stop as we use in the other locations. It is not as
      important here since we are not racing against a future Tx timestamp
      request (as we are disabling PTP at this point). However it is good to
      be consistent in how we approach the bit lock so that future callers
      don't copy the old anti-pattern.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      bdf27523
  2. 21 May, 2018 13 commits
    • David S. Miller's avatar
      Merge branch 'TI-Ethernet-driver-warnings-fixes' · e3bb946c
      David S. Miller authored
      Florian Fainelli says:
      
      ====================
      TI Ethernet driver warnings fixes
      
      This patch series attempts to fix properly the warnings observed with turning
      on COMPILE_TEST and TI Ethernet drivers on 64-bit hosts.
      
      Since I don't have any of this hardware, please review carefully for possible
      breakage!
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e3bb946c
    • Florian Fainelli's avatar
      ti: ethernet: davinci: Fix cast to int warnings · c79c3850
      Florian Fainelli authored
      Now that we can compile test this driver on 64-bit hosts, we get some
      warnings about how a pointer/address is written/read to/from a register
      (sw_token). Fix this by doing the appropriate conversions, we cannot
      possibly have the driver work on 64-bit hosts the way the tokens are
      managed though, since the registers being written to a 32-bit only.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c79c3850
    • Florian Fainelli's avatar
      net: ethernet: davinci_emac: Fix printing of base address · 5a04e8f8
      Florian Fainelli authored
      Use %pa which is the correct formatter to print a physical address,
      instead of %p which is just a pointer.
      
      Fixes: a6286ee6 ("net: Add TI DaVinci EMAC driver")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a04e8f8
    • Florian Fainelli's avatar
      net: ethernet: ti: cpsw: Fix cpsw_add_ch_strings() printk format · bf2ce3fd
      Florian Fainelli authored
      When building on a 64-bit host we will get the following warning:
      
      drivers/net/ethernet/ti/cpsw.c: In function 'cpsw_add_ch_strings':
      drivers/net/ethernet/ti/cpsw.c:1284:19: warning: format '%d' expects
      argument of type 'int', but argument 5 has type 'long unsigned int'
      [-Wformat=]
           "%s DMA chan %d: %s", rx_dir ? "Rx" : "Tx",
                        ~^
                        %ld
      
      Fix this by using an %ld format and casting to long.
      
      Fixes: e05107e6 ("net: ethernet: ti: cpsw: add multi queue support")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bf2ce3fd
    • Florian Fainelli's avatar
      net: ethernet: ti: cpts: Fix timestamp print · ea5ec9fc
      Florian Fainelli authored
      On 64-bit hosts we will get the following warning:
      
      drivers/net/ethernet/ti/cpts.c: In function 'cpts_overflow_check':
      drivers/net/ethernet/ti/cpts.c:297:11: warning: format '%lld' expects
      argument of type 'long long int', but argument 3 has type
      '__kernel_time_t {aka long int}' [-Wformat=]
        pr_debug("cpts overflow check at %lld.%09lu\n", ts.tv_sec,
      ts.tv_nsec);
      
      Fix this by using an appropriate casting that works on all bit sizes.
      
      Fixes: a5c79c26 ("ptp: cpts: convert to the 64 bit get/set time methods.")
      Fixes: 87c0e764 ("cpts: introduce time stamping code and a PTP hardware clock.")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ea5ec9fc
    • Florian Fainelli's avatar
      ti: ethernet: cpdma: Use correct format for genpool_* · b4eb7393
      Florian Fainelli authored
      Now that we can compile davinci_cpdma.c on 64-bit hosts, we can see that
      the format used for printing a size_t type is incorrect, use %zd
      accordingly.
      
      Fixes: aeec3021 ("net: ethernet: ti: cpdma: remove used_desc counter")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b4eb7393
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 6f6e434a
      David S. Miller authored
      S390 bpf_jit.S is removed in net-next and had changes in 'net',
      since that code isn't used any more take the removal.
      
      TLS data structures split the TX and RX components in 'net-next',
      put the new struct members from the bug fix in 'net' into the RX
      part.
      
      The 'net-next' tree had some reworking of how the ERSPAN code works in
      the GRE tunneling code, overlapping with a one-line headroom
      calculation fix in 'net'.
      
      Overlapping changes in __sock_map_ctx_update_elem(), keep the bits
      that read the prog members via READ_ONCE() into local variables
      before using them.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f6e434a
    • Rahul Lakkireddy's avatar
      vmcore: move get_vmcore_size out of __init · 44c752fe
      Rahul Lakkireddy authored
      Fix below build warning:
      
      WARNING: vmlinux.o(.text+0x422bb8): Section mismatch in reference from
      the function vmcore_add_device_dump() to the function
      .init.text:get_vmcore_size.constprop.5()
      
      The function vmcore_add_device_dump() references
      the function __init get_vmcore_size.constprop.5().
      This is often because vmcore_add_device_dump lacks a __init
      annotation or the annotation of get_vmcore_size.constprop.5 is wrong.
      
      Fixes: 7efe48df ("vmcore: append device dumps to vmcore as elf notes")
      Signed-off-by: default avatarRahul Lakkireddy <rahul.lakkireddy@chelsio.com>
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      44c752fe
    • Ganesh Goudar's avatar
      cxgb4: copy the length of cpl_tx_pkt_core to fw_wr · a6076fcd
      Ganesh Goudar authored
      immdlen field of FW_ETH_TX_PKT_WR is filled in a wrong way,
      we must copy the length of all the cpls encapsulated in fw
      work request. In the xmit path we missed adding the length
      of CPL_TX_PKT_CORE but we added the length of WR_HDR and it
      worked because WR_HDR and CPL_TX_PKT_CORE are of same length.
      Add the length of cpl_tx_pkt_core not WR_HDR's. This also
      fixes the lso cpl errors for udp tunnels
      
      Fixes: d0a1299c ("cxgb4: add support for vxlan segmentation offload")
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a6076fcd
    • Florian Fainelli's avatar
      net: ethernet: Sort Kconfig sourcing alphabetically · 6c541b45
      Florian Fainelli authored
      A number of entries were not alphabetically sorted, remedy that.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6c541b45
    • Florian Fainelli's avatar
      net: phy: phylink: Don't release NULL GPIO · 3bcd4772
      Florian Fainelli authored
      If CONFIG_GPIOLIB is disabled, gpiod_put() becomes a stub that produces a
      warning, this helped identify that we could be attempting to release a NULL
      pl->link_gpio GPIO descriptor, so guard against that.
      
      Fixes: daab3349 ("net: phy: phylink: Release link GPIO")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3bcd4772
    • Linus Torvalds's avatar
      Merge tag 'mips_fixes_4.17_2' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/mips · 6741c4bb
      Linus Torvalds authored
      Pull MIPS fixes from James Hogan:
      
       - fix build with DEBUG_ZBOOT and MACH_JZ4770 (4.16)
      
       - include xilfpga FDT in fitImage and stop generating dtb.o (4.15)
      
       - fix software IO coherence on CM SMP systems (4.8)
      
       - ptrace: Fix PEEKUSR/POKEUSR to o32 FGRs (3.14)
      
       - ptrace: Expose FIR register through FP regset (3.13)
      
       - fix typo in KVM debugfs file name (3.10)
      
      * tag 'mips_fixes_4.17_2' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/mips:
        MIPS: Fix ptrace(2) PTRACE_PEEKUSR and PTRACE_POKEUSR accesses to o32 FGRs
        MIPS: xilfpga: Actually include FDT in fitImage
        MIPS: xilfpga: Stop generating useless dtb.o
        KVM: Fix spelling mistake: "cop_unsuable" -> "cop_unusable"
        MIPS: ptrace: Expose FIR register through FP regset
        MIPS: Fix build with DEBUG_ZBOOT and MACH_JZ4770
        MIPS: c-r4k: Fix data corruption related to cache coherence
      6741c4bb
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 5aef268a
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Fix refcounting bug for connections in on-packet scheduling mode of
          IPVS, from Julian Anastasov.
      
       2) Set network header properly in AF_PACKET's packet_snd, from Willem
          de Bruijn.
      
       3) Fix regressions in 3c59x by converting to generic DMA API. It was
          relying upon the hack that the PCI DMA interfaces would accept NULL
          for EISA devices. From Christoph Hellwig.
      
       4) Remove RDMA devices before unregistering netdev in QEDE driver, from
          Michal Kalderon.
      
       5) Use after free in TUN driver ptr_ring usage, from Jason Wang.
      
       6) Properly check for missing netlink attributes in SMC_PNETID
          requests, from Eric Biggers.
      
       7) Set DMA mask before performaing any DMA operations in vmxnet3
          driver, from Regis Duchesne.
      
       8) Fix mlx5 build with SMP=n, from Saeed Mahameed.
      
       9) Classifier fixes in bcm_sf2 driver from Florian Fainelli.
      
      10) Tuntap use after free during release, from Jason Wang.
      
      11) Don't use stack memory in scatterlists in tls code, from Matt
          Mullins.
      
      12) Not fully initialized flow key object in ipv4 routing code, from
          David Ahern.
      
      13) Various packet headroom bug fixes in ip6_gre driver, from Petr
          Machata.
      
      14) Remove queues from XPS maps using correct index, from Amritha
          Nambiar.
      
      15) Fix use after free in sock_diag, from Eric Dumazet.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (64 commits)
        net: ip6_gre: fix tunnel metadata device sharing.
        cxgb4: fix offset in collecting TX rate limit info
        net: sched: red: avoid hashing NULL child
        sock_diag: fix use-after-free read in __sk_free
        sh_eth: Change platform check to CONFIG_ARCH_RENESAS
        net: dsa: Do not register devlink for unused ports
        net: Fix a bug in removing queues from XPS map
        bpf: fix truncated jump targets on heavy expansions
        bpf: parse and verdict prog attach may race with bpf map update
        bpf: sockmap update rollback on error can incorrectly dec prog refcnt
        net: test tailroom before appending to linear skb
        net: ip6_gre: Fix ip6erspan hlen calculation
        net: ip6_gre: Split up ip6gre_changelink()
        net: ip6_gre: Split up ip6gre_newlink()
        net: ip6_gre: Split up ip6gre_tnl_change()
        net: ip6_gre: Split up ip6gre_tnl_link_config()
        net: ip6_gre: Fix headroom request in ip6erspan_tunnel_xmit()
        net: ip6_gre: Request headroom in __gre6_xmit()
        selftests/bpf: check return value of fopen in test_verifier.c
        erspan: fix invalid erspan version.
        ...
      5aef268a
  3. 20 May, 2018 20 commits