1. 09 5月, 2018 2 次提交
  2. 08 5月, 2018 8 次提交
    • F
      netfilter: nf_tables: don't assume chain stats are set when jumplabel is set · 00924094
      Florian Westphal 提交于
      nft_chain_stats_replace() and all other spots assume ->stats can be
      NULL, but nft_update_chain_stats does not.  It must do this check,
      just because the jump label is set doesn't mean all basechains have stats
      assigned.
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      00924094
    • F
      netfilter: x_tables: add module alias for icmp matches · a44f6d82
      Florian Westphal 提交于
      The icmp matches are implemented in ip_tables and ip6_tables,
      respectively, so for normal iptables they are always available:
      those modules are loaded once iptables calls getsockopt() to fetch
      available module revisions.
      
      In iptables-over-nftables case probing occurs via nfnetlink, so
      these modules might not be loaded.  Add aliases so modprobe can load
      these when icmp/icmp6 is requested.
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      a44f6d82
    • F
      netfilter: prefer nla_strlcpy for dealing with NLA_STRING attributes · 4e09fc87
      Florian Westphal 提交于
      fixes these warnings:
      'nfnl_cthelper_create' at net/netfilter/nfnetlink_cthelper.c:237:2,
      'nfnl_cthelper_new' at net/netfilter/nfnetlink_cthelper.c:450:9:
      ./include/linux/string.h:246:9: warning: '__builtin_strncpy' specified bound 16 equals destination size [-Wstringop-truncation]
        return __builtin_strncpy(p, q, size);
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      Moreover, strncpy assumes null-terminated source buffers, but thats
      not the case here.
      Unlike strlcpy, nla_strlcpy *does* pad the destination buffer
      while also considering nla attribute size.
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      4e09fc87
    • F
      netfilter: core: add missing __rcu annotation · 25fd386e
      Florian Westphal 提交于
      removes following sparse error:
      net/netfilter/core.c:598:30: warning: incorrect type in argument 1 (different address spaces)
      net/netfilter/core.c:598:30:    expected struct nf_hook_entries **e
      net/netfilter/core.c:598:30:    got struct nf_hook_entries [noderef] <asn:4>**<noident>
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      25fd386e
    • J
      ipvs: fix stats update from local clients · d5e032fc
      Julian Anastasov 提交于
      Local clients are not properly synchronized on 32-bit CPUs when
      updating stats (3.10+). Now it is possible estimation_timer (timer),
      a stats reader, to interrupt the local client in the middle of
      write_seqcount_{begin,end} sequence leading to loop (DEADLOCK).
      The same interrupt can happen from received packet (SoftIRQ)
      which updates the same per-CPU stats.
      
      Fix it by disabling BH while updating stats.
      
      Found with debug:
      
      WARNING: inconsistent lock state
      4.17.0-rc2-00105-g35cb6d7-dirty #2 Not tainted
      --------------------------------
      inconsistent {IN-SOFTIRQ-R} -> {SOFTIRQ-ON-W} usage.
      ftp/2545 [HC0[0]:SC0[0]:HE1:SE1] takes:
      86845479 (&syncp->seq#6){+.+-}, at: ip_vs_schedule+0x1c5/0x59e [ip_vs]
      {IN-SOFTIRQ-R} state was registered at:
       lock_acquire+0x44/0x5b
       estimation_timer+0x1b3/0x341 [ip_vs]
       call_timer_fn+0x54/0xcd
       run_timer_softirq+0x10c/0x12b
       __do_softirq+0xc1/0x1a9
       do_softirq_own_stack+0x1d/0x23
       irq_exit+0x4a/0x64
       smp_apic_timer_interrupt+0x63/0x71
       apic_timer_interrupt+0x3a/0x40
       default_idle+0xa/0xc
       arch_cpu_idle+0x9/0xb
       default_idle_call+0x21/0x23
       do_idle+0xa0/0x167
       cpu_startup_entry+0x19/0x1b
       start_secondary+0x133/0x182
       startup_32_smp+0x164/0x168
      irq event stamp: 42213
      
      other info that might help us debug this:
      Possible unsafe locking scenario:
      
            CPU0
            ----
       lock(&syncp->seq#6);
       <Interrupt>
         lock(&syncp->seq#6);
      
      *** DEADLOCK ***
      
      Fixes: ac69269a ("ipvs: do not disable bh for long time")
      Signed-off-by: NJulian Anastasov <ja@ssi.bg>
      Acked-by: NSimon Horman <horms@verge.net.au>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      d5e032fc
    • J
      ipvs: fix refcount usage for conns in ops mode · a050d345
      Julian Anastasov 提交于
      Connections in One-packet scheduling mode (-o, --ops) are
      removed with refcnt=0 because they are not hashed in conn table.
      To avoid refcount_dec reporting this as error, change them to be
      removed with refcount_dec_if_one as all other connections.
      
      refcount_t hit zero at ip_vs_conn_put+0x31/0x40 [ip_vs]
      in sh[15519], uid/euid: 497/497
      WARNING: CPU: 0 PID: 15519 at ../kernel/panic.c:657
      refcount_error_report+0x94/0x9e
      Modules linked in: ip_vs_rr cirrus ttm sb_edac
      edac_core drm_kms_helper crct10dif_pclmul crc32_pclmul
      ghash_clmulni_intel pcbc mousedev drm aesni_intel aes_x86_64
      crypto_simd glue_helper cryptd psmouse evdev input_leds led_class
      intel_agp fb_sys_fops syscopyarea sysfillrect intel_rapl_perf mac_hid
      intel_gtt serio_raw sysimgblt agpgart i2c_piix4 i2c_core ata_generic
      pata_acpi floppy cfg80211 rfkill button loop macvlan ip_vs
      nf_conntrack libcrc32c crc32c_generic ip_tables x_tables ipv6
      crc_ccitt autofs4 ext4 crc16 mbcache jbd2 fscrypto ata_piix libata
      atkbd libps2 scsi_mod crc32c_intel i8042 rtc_cmos serio af_packet
      dm_mod dax fuse xen_netfront xen_blkfront
      CPU: 0 PID: 15519 Comm: sh Tainted: G        W
      4.15.17 #1-NixOS
      Hardware name: Xen HVM domU, BIOS 4.2.amazon 08/24/2006
      RIP: 0010:refcount_error_report+0x94/0x9e
      RSP: 0000:ffffa344dde039c8 EFLAGS: 00010296
      RAX: 0000000000000057 RBX: ffffffff92f20e06 RCX: 0000000000000006
      RDX: 0000000000000007 RSI: 0000000000000086 RDI: ffffa344dde165c0
      RBP: ffffa344dde03b08 R08: 0000000000000218 R09: 0000000000000004
      R10: ffffffff93006a80 R11: 0000000000000001 R12: ffffa344d68cd100
      R13: 00000000000001f1 R14: ffffffff92f12fb0 R15: 0000000000000004
      FS:  00007fc9d2040fc0(0000) GS:ffffa344dde00000(0000)
      knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000000000262a000 CR3: 0000000016a0c004 CR4: 00000000001606f0
      Call Trace:
       <IRQ>
       ex_handler_refcount+0x4e/0x80
       fixup_exception+0x33/0x40
       do_trap+0x83/0x140
       do_error_trap+0x83/0xf0
       ? ip_vs_conn_drop_conntrack+0x120/0x1a5 [ip_vs]
       ? ip_finish_output2+0x29c/0x390
       ? ip_finish_output2+0x1a2/0x390
       invalid_op+0x1b/0x40
      RIP: 0010:ip_vs_conn_put+0x31/0x40 [ip_vs]
      RSP: 0000:ffffa344dde03bb8 EFLAGS: 00010246
      RAX: 0000000000000001 RBX: ffffa344df31cf00 RCX: ffffa344d7450198
      RDX: 0000000000000003 RSI: 00000000fffffe01 RDI: ffffa344d7450140
      RBP: 0000000000000002 R08: 0000000000000476 R09: 0000000000000000
      R10: ffffa344dde03b28 R11: ffffa344df200000 R12: ffffa344d7d09000
      R13: ffffa344def3a980 R14: ffffffffc04f6e20 R15: 0000000000000008
       ip_vs_in.part.29.constprop.36+0x34f/0x640 [ip_vs]
       ? ip_vs_conn_out_get+0xe0/0xe0 [ip_vs]
       ip_vs_remote_request4+0x47/0xa0 [ip_vs]
       ? ip_vs_in.part.29.constprop.36+0x640/0x640 [ip_vs]
       nf_hook_slow+0x43/0xc0
       ip_local_deliver+0xac/0xc0
       ? ip_rcv_finish+0x400/0x400
       ip_rcv+0x26c/0x380
       __netif_receive_skb_core+0x3a0/0xb10
       ? inet_gro_receive+0x23c/0x2b0
       ? netif_receive_skb_internal+0x24/0xb0
       netif_receive_skb_internal+0x24/0xb0
       napi_gro_receive+0xb8/0xe0
       xennet_poll+0x676/0xb40 [xen_netfront]
       net_rx_action+0x139/0x3a0
       __do_softirq+0xde/0x2b4
       irq_exit+0xae/0xb0
       xen_evtchn_do_upcall+0x2c/0x40
       xen_hvm_callback_vector+0x7d/0x90
       </IRQ>
      RIP: 0033:0x7fc9d11c91f9
      RSP: 002b:00007ffebe8a2ea0 EFLAGS: 00000202 ORIG_RAX:
      ffffffffffffff0c
      RAX: 00000000ffffffff RBX: 0000000002609808 RCX: 0000000000000054
      RDX: 0000000000000001 RSI: 0000000002605440 RDI: 00000000025f940e
      RBP: 00000000025f940e R08: 000000000260213d R09: 1999999999999999
      R10: 000000000262a808 R11: 00000000025f942d R12: 00000000025f940e
      R13: 00007fc9d1301e20 R14: 00000000025f9408 R15: 00007fc9d1302720
      Code: 48 8b 95 80 00 00 00 41 55 49 8d 8c 24 e0 05 00
      00 45 8b 84 24 38 04 00 00 41 89 c1 48 89 de 48 c7 c7 a8 2f f2 92 e8
      7c fa ff ff <0f> 0b 58 5b 5d 41 5c 41 5d c3 0f 1f 44 00 00 55 48 89 e5
      41 56
      Reported-by: NNet Filter <netfilternetfilter@gmail.com>
      Fixes: b54ab92b ("netfilter: refcounter conversions")
      Signed-off-by: NJulian Anastasov <ja@ssi.bg>
      Acked-by: NSimon Horman <horms@verge.net.au>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      a050d345
    • F
      netfilter: nf_tables: nft_compat: fix refcount leak on xt module · b8e9dc1c
      Florian Westphal 提交于
      Taehee Yoo reported following bug:
          iptables-compat -I OUTPUT -m cpu --cpu 0
          iptables-compat -F
          lsmod |grep xt_cpu
          xt_cpu                 16384  1
      
      Quote:
      "When above command is given, a netlink message has two expressions that
      are the cpu compat and the nft_counter.
      The nft_expr_type_get() in the nf_tables_expr_parse() successes
      first expression then, calls select_ops callback.
      (allocates memory and holds module)
      But, second nft_expr_type_get() in the nf_tables_expr_parse()
      returns -EAGAIN because of request_module().
      In that point, by the 'goto err1',
      the 'module_put(info[i].ops->type->owner)' is called.
      There is no release routine."
      
      The core problem is that unlike all other expression,
      nft_compat select_ops has side effects.
      
      1. it allocates dynamic memory which holds an nft ops struct.
         In all other expressions, ops has static storage duration.
      2. It grabs references to the xt module that it is supposed to
         invoke.
      
      Depending on where things go wrong, error unwinding doesn't
      always do the right thing.
      
      In the above scenario, a new nft_compat_expr is created and
      xt_cpu module gets loaded with a refcount of 1.
      
      Due to to -EAGAIN, the netlink messages get re-parsed.
      When that happens, nft_compat finds that xt_cpu is already present
      and increments module refcount again.
      
      This fixes the problem by making select_ops to have no visible
      side effects and removes all extra module_get/put.
      
      When select_ops creates a new nft_compat expression, the new
      expression has a refcount of 0, and the xt module gets its refcount
      incremented.
      
      When error happens, the next call finds existing entry, but will no
      longer increase the reference count -- the presence of existing
      nft_xt means we already hold a module reference.
      
      Because nft_xt_put is only called from nft_compat destroy hook,
      it will never see the initial zero reference count.
      ->destroy can only be called after ->init(), and that will increase the
      refcount.
      
      Lastly, we now free nft_xt struct with kfree_rcu.
      Else, we get use-after free in nf_tables_rule_destroy:
      
        while (expr != nft_expr_last(rule) && expr->ops) {
          nf_tables_expr_destroy(ctx, expr);
          expr = nft_expr_next(expr); // here
      
      nft_expr_next() dereferences expr->ops. This is safe
      for all users, as ops have static storage duration.
      In nft_compat case however, its ->destroy callback can
      free the memory that hold the ops structure.
      Tested-by: NTaehee Yoo <ap420073@gmail.com>
      Reported-by: NTaehee Yoo <ap420073@gmail.com>
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      b8e9dc1c
    • S
      netfilter: bridge: stp fix reference to uninitialized data · a4995684
      Stephen Hemminger 提交于
      The destination mac (destmac) is only valid if EBT_DESTMAC flag
      is set. Fix by changing the order of the comparison to look for
      the flag first.
      
      Reported-by: syzbot+5c06e318fc558cc27823@syzkaller.appspotmail.com
      Signed-off-by: NStephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      a4995684
  3. 27 4月, 2018 3 次提交
  4. 26 4月, 2018 5 次提交
    • D
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf · 25eb0ea7
      David S. Miller 提交于
      Daniel Borkmann says:
      
      ====================
      pull-request: bpf 2018-04-25
      
      The following pull-request contains BPF updates for your *net* tree.
      
      The main changes are:
      
      1) Fix to clear the percpu metadata_dst that could otherwise carry
         stale ip_tunnel_info, from William.
      
      2) Fix that reduces the number of passes in x64 JIT with regards to
         dead code sanitation to avoid risk of prog rejection, from Gianluca.
      
      3) Several fixes of sockmap programs, besides others, fixing a double
         page_put() in error path, missing refcount hold for pinned sockmap,
         adding required -target bpf for clang in sample Makefile, from John.
      
      4) Fix to disable preemption in __BPF_PROG_RUN_ARRAY() paths, from Roman.
      
      5) Fix tools/bpf/ Makefile with regards to a lex/yacc build error
         seen on older gcc-5, from John.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      25eb0ea7
    • J
      bpf: fix for lex/yacc build error with gcc-5 · 9c299a32
      John Fastabend 提交于
      Fix build error found with Ubuntu shipped gcc-5
      
      ~/git/bpf/tools/bpf$ make all
      
      Auto-detecting system features:
      ...                        libbfd: [ OFF ]
      ...        disassembler-four-args: [ OFF ]
      
        CC       bpf_jit_disasm.o
        LINK     bpf_jit_disasm
        CC       bpf_dbg.o
      /home/john/git/bpf/tools/bpf/bpf_dbg.c: In function ‘cmd_load’:
      /home/john/git/bpf/tools/bpf/bpf_dbg.c:1077:13: warning: ‘cont’ may be used uninitialized in this function [-Wmaybe-uninitialized]
        } else if (matches(subcmd, "pcap") == 0) {
                   ^
        LINK     bpf_dbg
        CC       bpf_asm.o
      make: *** No rule to make target `bpf_exp.yacc.o', needed by `bpf_asm'.  Stop.
      
      Fixes: 5a8997f2 ("tools: bpf: respect output directory during build")
      Signed-off-by: NJohn Fastabend <john.fastabend@gmail.com>
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      9c299a32
    • D
      rds: ib: Fix missing call to rds_ib_dev_put in rds_ib_setup_qp · 91a82529
      Dag Moxnes 提交于
      The function rds_ib_setup_qp is calling rds_ib_get_client_data and
      should correspondingly call rds_ib_dev_put. This call was lost in
      the non-error path with the introduction of error handling done in
      commit 3b12f73a ("rds: ib: add error handle")
      Signed-off-by: NDag Moxnes <dag.moxnes@oracle.com>
      Reviewed-by: NHåkon Bugge <haakon.bugge@oracle.com>
      Acked-by: NSantosh Shilimkar <santosh.shilimkar@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      91a82529
    • U
      net/smc: keep clcsock reference in smc_tcp_listen_work() · 070204a3
      Ursula Braun 提交于
      The internal CLC socket should exist till the SMC-socket is released.
      Function tcp_listen_worker() releases the internal CLC socket of a
      listen socket, if an smc_close_active() is called. This function
      is called for the final release(), but it is called for shutdown
      SHUT_RDWR as well. This opens a door for protection faults, if
      socket calls using the internal CLC socket are called for a
      shutdown listen socket.
      
      With the changes of
      commit 3d502067 ("net/smc: simplify wait when closing listen socket")
      there is no need anymore to release the internal CLC socket in
      function tcp_listen_worker((). It is sufficient to release it in
      smc_release().
      
      Fixes: 127f4970 ("net/smc: release clcsock from tcp_listen_worker")
      Signed-off-by: NUrsula Braun <ubraun@linux.ibm.com>
      Reported-by: syzbot+9045fc589fcd196ef522@syzkaller.appspotmail.com
      Reported-by: syzbot+28a2c86cf19c81d871fa@syzkaller.appspotmail.com
      Reported-by: syzbot+9605e6cace1b5efd4a0a@syzkaller.appspotmail.com
      Reported-by: syzbot+cf9012c597c8379d535c@syzkaller.appspotmail.com
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      070204a3
    • A
      net: phy: allow scanning busses with missing phys · 02a6efca
      Alexandre Belloni 提交于
      Some MDIO busses will error out when trying to read a phy address with no
      phy present at that address. In that case, probing the bus will fail
      because __mdiobus_register() is scanning the bus for all possible phys
      addresses.
      
      In case MII_PHYSID1 returns -EIO or -ENODEV, consider there is no phy at
      this address and set the phy ID to 0xffffffff which is then properly
      handled in get_phy_device().
      Suggested-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NAlexandre Belloni <alexandre.belloni@bootlin.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      02a6efca
  5. 25 4月, 2018 10 次提交
    • G
      bpf, x64: fix JIT emission for dead code · 1612a981
      Gianluca Borello 提交于
      Commit 2a5418a1 ("bpf: improve dead code sanitizing") replaced dead
      code with a series of ja-1 instructions, for safety. That made JIT
      compilation much more complex for some BPF programs. One instance of such
      programs is, for example:
      
      bool flag = false
      ...
      /* A bunch of other code */
      ...
      if (flag)
              do_something()
      
      In some cases llvm is not able to remove at compile time the code for
      do_something(), so the generated BPF program ends up with a large amount
      of dead instructions. In one specific real life example, there are two
      series of ~500 and ~1000 dead instructions in the program. When the
      verifier replaces them with a series of ja-1 instructions, it causes an
      interesting behavior at JIT time.
      
      During the first pass, since all the instructions are estimated at 64
      bytes, the ja-1 instructions end up being translated as 5 bytes JMP
      instructions (0xE9), since the jump offsets become increasingly large (>
      127) as each instruction gets discovered to be 5 bytes instead of the
      estimated 64.
      
      Starting from the second pass, the first N instructions of the ja-1
      sequence get translated into 2 bytes JMPs (0xEB) because the jump offsets
      become <= 127 this time. In particular, N is defined as roughly 127 / (5
      - 2) ~= 42. So, each further pass will make the subsequent N JMP
      instructions shrink from 5 to 2 bytes, making the image shrink every time.
      This means that in order to have the entire program converge, there need
      to be, in the real example above, at least ~1000 / 42 ~= 24 passes just
      for translating the dead code. If we add this number to the passes needed
      to translate the other non dead code, it brings such program to 40+
      passes, and JIT doesn't complete. Ultimately the userspace loader fails
      because such BPF program was supposed to be part of a prog array owner
      being JITed.
      
      While it is certainly possible to try to refactor such programs to help
      the compiler remove dead code, the behavior is not really intuitive and it
      puts further burden on the BPF developer who is not expecting such
      behavior. To make things worse, such programs are working just fine in all
      the kernel releases prior to the ja-1 fix.
      
      A possible approach to mitigate this behavior consists into noticing that
      for ja-1 instructions we don't really need to rely on the estimated size
      of the previous and current instructions, we know that a -1 BPF jump
      offset can be safely translated into a 0xEB instruction with a jump offset
      of -2.
      
      Such fix brings the BPF program in the previous example to complete again
      in ~9 passes.
      
      Fixes: 2a5418a1 ("bpf: improve dead code sanitizing")
      Signed-off-by: NGianluca Borello <g.borello@gmail.com>
      Acked-by: NAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      1612a981
    • W
      bpf: clear the ip_tunnel_info. · 5540fbf4
      William Tu 提交于
      The percpu metadata_dst might carry the stale ip_tunnel_info
      and cause incorrect behavior.  When mixing tests using ipv4/ipv6
      bpf vxlan and geneve tunnel, the ipv6 tunnel info incorrectly uses
      ipv4's src ip addr as its ipv6 src address, because the previous
      tunnel info does not clean up.  The patch zeros the fields in
      ip_tunnel_info.
      Signed-off-by: NWilliam Tu <u9012063@gmail.com>
      Reported-by: NYifeng Sun <pkusunyifeng@gmail.com>
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      5540fbf4
    • L
      Merge branch 'userns-linus' of... · 3be4aaf4
      Linus Torvalds 提交于
      Merge branch 'userns-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
      
      Pull userns bug fix from Eric Biederman:
       "Just a small fix to properly set the return code on error"
      
      * 'userns-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
        commoncap: Handle memory allocation failure.
      3be4aaf4
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 24cac700
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
      
       1) Fix rtnl deadlock in ipvs, from Julian Anastasov.
      
       2) s390 qeth fixes from Julian Wiedmann (control IO completion stalls,
          bad MAC address update sequence, request side races on command IO
          timeouts).
      
       3) Handle seq_file overflow properly in l2tp, from Guillaume Nault.
      
       4) Fix VLAN priority mappings in cpsw driver, from Ivan Khoronzhuk.
      
       5) Packet scheduler ife action fixes (malformed TLV lengths, etc.) from
          Alexander Aring.
      
       6) Fix out of bounds access in tcp md5 option parser, from Jann Horn.
      
       7) Missing netlink attribute policies in rtm_ipv6_policy table, from
          Eric Dumazet.
      
       8) Missing socket address length checks in l2tp and pppoe connect, from
          Guillaume Nault.
      
       9) Fix netconsole over team and bonding, from Xin Long.
      
      10) Fix race with AF_PACKET socket state bitfields, from Willem de
          Bruijn.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (51 commits)
        ice: Fix insufficient memory issue in ice_aq_manage_mac_read
        sfc: ARFS filter IDs
        net: ethtool: Add missing kernel doc for FEC parameters
        packet: fix bitfield update race
        ice: Do not check INTEVENT bit for OICR interrupts
        ice: Fix incorrect comment for action type
        ice: Fix initialization for num_nodes_added
        igb: Fix the transmission mode of queue 0 for Qav mode
        ixgbevf: ensure xdp_ring resources are free'd on error exit
        team: fix netconsole setup over team
        amd-xgbe: Only use the SFP supported transceiver signals
        amd-xgbe: Improve KR auto-negotiation and training
        amd-xgbe: Add pre/post auto-negotiation phy hooks
        pppoe: check sockaddr length in pppoe_connect()
        l2tp: check sockaddr length in pppol2tp_connect()
        net: phy: marvell: clear wol event before setting it
        ipv6: add RTA_TABLE and RTA_PREFSRC to rtm_ipv6_policy
        bonding: do not set slave_dev npinfo before slave_enable_netpoll in bond_enslave
        tcp: don't read out-of-bounds opsize
        ibmvnic: Clean actual number of RX or TX pools
        ...
      24cac700
    • D
      Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue · d19efb72
      David S. Miller 提交于
      Jeff Kirsher says:
      
      ====================
      Intel Wired LAN Driver Updates 2018-04-24
      
      This series contains fixes to ixgbevf, igb and ice drivers.
      
      Colin Ian King fixes the return value on error for the new XDP support
      that went into ixgbevf for 4.17.
      
      Vinicius provides a fix for queue 0 for igb, which was not receiving all
      the credits it needed when QAV mode was enabled.
      
      Anirudh provides several fixes for the new ice driver, starting with
      properly initializing num_nodes_added to zero.  Fixed up a code comment
      to better reflect what is really going on in the code.  Fixed how to
      detect if an OICR interrupt has occurred to a more reliable method.
      
      Md Fahad fixes the ice driver to allocate the right amount of memory
      when reading and storing the devices MAC addresses.  The device can have
      up to 2 MAC addresses (LAN and WoL), while WoL is currently not
      supported, we need to ensure it can be properly handled when support is
      added.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d19efb72
    • M
      ice: Fix insufficient memory issue in ice_aq_manage_mac_read · d6fef10c
      Md Fahad Iqbal Polash 提交于
      For the MAC read operation, the device can return up to two (LAN and WoL)
      MAC addresses. Without access to adequate memory, the device will return
      an error. Fixed this by allocating the right amount of memory. Also, logic
      to detect and copy the LAN MAC address into the port_info structure has
      been added. Note that the WoL MAC address is ignored currently as the WoL
      feature isn't supported yet.
      
      Fixes: dc49c772 ("ice: Get MAC/PHY/link info and scheduler topology")
      Signed-off-by: NMd Fahad Iqbal Polash <md.fahad.iqbal.polash@intel.com>
      Signed-off-by: NAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
      Tested-by: NTony Brelinski <tonyx.brelinski@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      d6fef10c
    • E
      sfc: ARFS filter IDs · f8d62037
      Edward Cree 提交于
      Associate an arbitrary ID with each ARFS filter, allowing to properly query
       for expiry.  The association is maintained in a hash table, which is
       protected by a spinlock.
      
      v3: fix build warnings when CONFIG_RFS_ACCEL is disabled (thanks lkp-robot).
      v2: fixed uninitialised variable (thanks davem and lkp-robot).
      
      Fixes: 3af0f342 ("sfc: replace asynchronous filter operations")
      Signed-off-by: NEdward Cree <ecree@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f8d62037
    • F
      net: ethtool: Add missing kernel doc for FEC parameters · d805c520
      Florian Fainelli 提交于
      While adding support for ethtool::get_fecparam and set_fecparam, kernel
      doc for these functions was missed, add those.
      
      Fixes: 1a5f3da2 ("net: ethtool: add support for forward error correction modes")
      Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Acked-by: NRoopa Prabhu <roopa@cumulusnetworks.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d805c520
    • W
      packet: fix bitfield update race · a6361f0c
      Willem de Bruijn 提交于
      Updates to the bitfields in struct packet_sock are not atomic.
      Serialize these read-modify-write cycles.
      
      Move po->running into a separate variable. Its writes are protected by
      po->bind_lock (except for one startup case at packet_create). Also
      replace a textual precondition warning with lockdep annotation.
      
      All others are set only in packet_setsockopt. Serialize these
      updates by holding the socket lock. Analogous to other field updates,
      also hold the lock when testing whether a ring is active (pg_vec).
      
      Fixes: 8dc41944 ("[PACKET]: Add optional checksum computation for recvmsg")
      Reported-by: NDaeRyong Jeong <threeearcat@gmail.com>
      Reported-by: NByoungyoung Lee <byoungyoung@purdue.edu>
      Signed-off-by: NWillem de Bruijn <willemb@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6361f0c
    • B
      ice: Do not check INTEVENT bit for OICR interrupts · 30d84397
      Ben Shelton 提交于
      According to the hardware spec, checking the INTEVENT bit isn't a
      reliable way to detect if an OICR interrupt has occurred. This is
      because this bit can be cleared by the hardware/firmware before the
      interrupt service routine has run. So instead, just check for OICR
      events every time.
      
      Fixes: 940b61af ("ice: Initialize PF and setup miscellaneous interrupt")
      Signed-off-by: NBen Shelton <benjamin.h.shelton@intel.com>
      Signed-off-by: NAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
      Tested-by: NTony Brelinski <tonyx.brelinski@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      30d84397
  6. 24 4月, 2018 12 次提交