16 Dec, 2016

2 commits

  • That's the default now, no need for makefiles to set it.

    Signed-off-by: Michael S. Tsirkin
    Acked-by: Kalle Valo
    Acked-by: Marcel Holtmann
    Acked-by: Marc Kleine-Budde
    Acked-by: Greg Kroah-Hartman
    Acked-by: Arend van Spriel

    Michael S. Tsirkin
     
  • __bitwise__ used to mean "yes, please enable sparse checks
    unconditionally", but now that we dropped __CHECK_ENDIAN__
    __bitwise is exactly the same.
    There aren't many users, replace it by __bitwise everywhere.

    Signed-off-by: Michael S. Tsirkin
    Acked-by: Greg Kroah-Hartman
    Acked-by: Stefan Schmidt
    Acked-by: Krzysztof Kozlowski
    Akced-by: Lee Duncan

    Michael S. Tsirkin
     

15 Dec, 2016

7 commits

  • These fields are 64 bit, using le32_to_cpu and friends
    on these will not do the right thing.
    Fix this up.

    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin

    Michael S. Tsirkin
     
  • virtio_transport_alloc_pkt is only used locally, make it static.

    Signed-off-by: Michael S. Tsirkin

    Michael S. Tsirkin
     
  • guest cid is read from config space, therefore it's in little endian
    format and is treated as such, annotate it accordingly.

    Signed-off-by: Michael S. Tsirkin

    Michael S. Tsirkin
     
  • Merge more updates from Andrew Morton:

    - a few misc things

    - kexec updates

    - DMA-mapping updates to better support networking DMA operations

    - IPC updates

    - various MM changes to improve DAX fault handling

    - lots of radix-tree changes, mainly to the test suite. All leading up
    to reimplementing the IDA/IDR code to be a wrapper layer over the
    radix-tree. However the final trigger-pulling patch is held off for
    4.11.

    * emailed patches from Andrew Morton : (114 commits)
    radix tree test suite: delete unused rcupdate.c
    radix tree test suite: add new tag check
    radix-tree: ensure counts are initialised
    radix tree test suite: cache recently freed objects
    radix tree test suite: add some more functionality
    idr: reduce the number of bits per level from 8 to 6
    rxrpc: abstract away knowledge of IDR internals
    tpm: use idr_find(), not idr_find_slowpath()
    idr: add ida_is_empty
    radix tree test suite: check multiorder iteration
    radix-tree: fix replacement for multiorder entries
    radix-tree: add radix_tree_split_preload()
    radix-tree: add radix_tree_split
    radix-tree: add radix_tree_join
    radix-tree: delete radix_tree_range_tag_if_tagged()
    radix-tree: delete radix_tree_locate_item()
    radix-tree: improve multiorder iterators
    btrfs: fix race in btrfs_free_dummy_fs_info()
    radix-tree: improve dump output
    radix-tree: make radix_tree_find_next_bit more useful
    ...

    Linus Torvalds
     
  • Add idr_get_cursor() / idr_set_cursor() APIs, and remove the reference
    to IDR_SIZE.

    Link: http://lkml.kernel.org/r/1480369871-5271-65-git-send-email-mawilcox@linuxonhyperv.com
    Signed-off-by: Matthew Wilcox
    Reviewed-by: David Howells
    Tested-by: Kirill A. Shutemov
    Cc: Konstantin Khlebnikov
    Cc: Ross Zwisler
    Cc: Matthew Wilcox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Wilcox
     
  • Pull audit updates from Paul Moore:
    "After the small number of patches for v4.9, we've got a much bigger
    pile for v4.10.

    The bulk of these patches involve a rework of the audit backlog queue
    to enable us to move the netlink multicasting out of the task/thread
    that generates the audit record and into the kernel thread that emits
    the record (just like we do for the audit unicast to auditd).

    While we were playing with the backlog queue(s) we fixed a number of
    other little problems with the code, and from all the testing so far
    things look to be in much better shape now. Doing this also allowed us
    to re-enable disabling IRQs for some netns operations ("netns: avoid
    disabling irq for netns id").

    The remaining patches fix some small problems that are well documented
    in the commit descriptions, as well as adding session ID filtering
    support"

    * 'stable-4.10' of git://git.infradead.org/users/pcmoore/audit:
    audit: use proper refcount locking on audit_sock
    netns: avoid disabling irq for netns id
    audit: don't ever sleep on a command record/message
    audit: handle a clean auditd shutdown with grace
    audit: wake up kauditd_thread after auditd registers
    audit: rework audit_log_start()
    audit: rework the audit queue handling
    audit: rename the queues and kauditd related functions
    audit: queue netlink multicast sends just like we do for unicast sends
    audit: fixup audit_init()
    audit: move kaudit thread start from auditd registration to kaudit init (#2)
    audit: add support for session ID user filter
    audit: fix formatting of AUDIT_CONFIG_CHANGE events
    audit: skip sessionid sentinel value when auto-incrementing
    audit: tame initialization warning len_abuf in audit_log_execve_info
    audit: less stack usage for /proc/*/loginuid

    Linus Torvalds
     
  • Bring back commit bc51dddf98c9 ("netns: avoid disabling irq for netns
    id") now that we've fixed some audit multicast issues that caused
    problems with original attempt. Additional information, and history,
    can be found in the links below:

    * https://github.com/linux-audit/audit-kernel/issues/22
    * https://github.com/linux-audit/audit-kernel/issues/23

    Signed-off-by: Cong Wang
    Signed-off-by: Paul Moore

    Paul Moore
     

13 Dec, 2016

2 commits

  • Pull smp hotplug updates from Thomas Gleixner:
    "This is the final round of converting the notifier mess to the state
    machine. The removal of the notifiers and the related infrastructure
    will happen around rc1, as there are conversions outstanding in other
    trees.

    The whole exercise removed about 2000 lines of code in total and in
    course of the conversion several dozen bugs got fixed. The new
    mechanism allows to test almost every hotplug step standalone, so
    usage sites can exercise all transitions extensively.

    There is more room for improvement, like integrating all the
    pointlessly different architecture mechanisms of synchronizing,
    setting cpus online etc into the core code"

    * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (60 commits)
    tracing/rb: Init the CPU mask on allocation
    soc/fsl/qbman: Convert to hotplug state machine
    soc/fsl/qbman: Convert to hotplug state machine
    zram: Convert to hotplug state machine
    KVM/PPC/Book3S HV: Convert to hotplug state machine
    arm64/cpuinfo: Convert to hotplug state machine
    arm64/cpuinfo: Make hotplug notifier symmetric
    mm/compaction: Convert to hotplug state machine
    iommu/vt-d: Convert to hotplug state machine
    mm/zswap: Convert pool to hotplug state machine
    mm/zswap: Convert dst-mem to hotplug state machine
    mm/zsmalloc: Convert to hotplug state machine
    mm/vmstat: Convert to hotplug state machine
    mm/vmstat: Avoid on each online CPU loops
    mm/vmstat: Drop get_online_cpus() from init_cpu_node_state/vmstat_cpu_dead()
    tracing/rb: Convert to hotplug state machine
    oprofile/nmi timer: Convert to hotplug state machine
    net/iucv: Use explicit clean up labels in iucv_init()
    x86/pci/amd-bus: Convert to hotplug state machine
    x86/oprofile/nmi: Convert to hotplug state machine
    ...

    Linus Torvalds
     
  • Pull locking updates from Ingo Molnar:
    "The tree got pretty big in this development cycle, but the net effect
    is pretty good:

    115 files changed, 673 insertions(+), 1522 deletions(-)

    The main changes were:

    - Rework and generalize the mutex code to remove per arch mutex
    primitives. (Peter Zijlstra)

    - Add vCPU preemption support: add an interface to query the
    preemption status of vCPUs and use it in locking primitives - this
    optimizes paravirt performance. (Pan Xinhui, Juergen Gross,
    Christian Borntraeger)

    - Introduce cpu_relax_yield() and remov cpu_relax_lowlatency() to
    clean up and improve the s390 lock yielding machinery and its core
    kernel impact. (Christian Borntraeger)

    - Micro-optimize mutexes some more. (Waiman Long)

    - Reluctantly add the to-be-deprecated mutex_trylock_recursive()
    interface on a temporary basis, to give the DRM code more time to
    get rid of its locking hacks. Any other users will be NAK-ed on
    sight. (We turned off the deprecation warning for the time being to
    not pollute the build log.) (Peter Zijlstra)

    - Improve the rtmutex code a bit, in light of recent long lived
    bugs/races. (Thomas Gleixner)

    - Misc fixes, cleanups"

    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
    x86/paravirt: Fix bool return type for PVOP_CALL()
    x86/paravirt: Fix native_patch()
    locking/ww_mutex: Use relaxed atomics
    locking/rtmutex: Explain locking rules for rt_mutex_proxy_unlock()/init_proxy_locked()
    locking/rtmutex: Get rid of RT_MUTEX_OWNER_MASKALL
    x86/paravirt: Optimize native pv_lock_ops.vcpu_is_preempted()
    locking/mutex: Break out of expensive busy-loop on {mutex,rwsem}_spin_on_owner() when owner vCPU is preempted
    locking/osq: Break out of spin-wait busy waiting loop for a preempted vCPU in osq_lock()
    Documentation/virtual/kvm: Support the vCPU preemption check
    x86/xen: Support the vCPU preemption check
    x86/kvm: Support the vCPU preemption check
    x86/kvm: Support the vCPU preemption check
    kvm: Introduce kvm_write_guest_offset_cached()
    locking/core, x86/paravirt: Implement vcpu_is_preempted(cpu) for KVM and Xen guests
    locking/spinlocks, s390: Implement vcpu_is_preempted(cpu)
    locking/core, powerpc: Implement vcpu_is_preempted(cpu)
    sched/core: Introduce the vcpu_is_preempted(cpu) interface
    sched/wake_q: Rename WAKE_Q to DEFINE_WAKE_Q
    locking/core: Provide common cpu_relax_yield() definition
    locking/mutex: Don't mark mutex_trylock_recursive() as deprecated, temporarily
    ...

    Linus Torvalds
     

11 Dec, 2016

9 commits

  • Dump and reset doesn't work unless cmpxchg64() is used both from packet
    and control plane paths. This approach is going to be slow though.
    Instead, use a percpu seqcount to fetch counters consistently, then
    subtract bytes and packets in case a reset was requested.

    The cpu that running over the reset code is guaranteed to own this stats
    exclusively, we have to turn counters into signed 64bit though so stats
    update on reset don't get wrong on underflow.

    This patch is based on original sketch from Eric Dumazet.

    Fixes: 43da04a593d8 ("netfilter: nf_tables: atomic dump and reset for stateful objects")
    Suggested-by: Eric Dumazet
    Signed-off-by: Pablo Neira Ayuso
    Signed-off-by: David S. Miller

    Pablo Neira
     
  • Signed-off-by: Asbjoern Sloth Toennesen
    Signed-off-by: David S. Miller

    Asbjørn Sloth Tønnesen
     
  • Move the L2TP_MSG_* definitions to UAPI, as it is part of
    the netlink API.

    Signed-off-by: Asbjoern Sloth Toennesen
    Signed-off-by: David S. Miller

    Asbjørn Sloth Tønnesen
     
  • 802.1D [1] specifies that the bridges must use a short value to age out
    dynamic entries in the Filtering Database for a period, once a topology
    change has been communicated by the root bridge.

    Add a bridge_ageing_time member in the net_bridge structure to store the
    bridge ageing time value configured by the user (ioctl/netlink/sysfs).

    If we are using in-kernel STP, shorten the ageing time value to twice
    the forward delay used by the topology when the topology change flag is
    set. When the flag is cleared, restore the configured ageing time.

    [1] "8.3.5 Notifying topology changes ",
    http://profesores.elo.utfsm.cl/~agv/elo309/doc/802.1D-1998.pdf

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • Add a __br_set_topology_change helper to set the topology change value.

    This can be later extended to add actions when the topology change flag
    is set or cleared.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • The SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME switchdev attr is actually set
    when initializing a bridge port, and when configuring the bridge ageing
    time from ioctl/netlink/sysfs.

    Add a __set_ageing_time helper to offload the ageing time to physical
    switches, and add the SWITCHDEV_F_DEFER flag since it can be called
    under bridge lock.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • This patch removes a newline which was added
    in socket.c file in net-next

    Signed-off-by: Amit Kushwaha
    Signed-off-by: David S. Miller

    Amit Kushwaha
     
  • netlink_chain is called in ->release(), which is apparently
    a process context, so we don't have to use an atomic notifier
    here.

    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller

    WANG Cong
     
  • David S. Miller
     

10 Dec, 2016

6 commits

  • It seems attackers can also send UDP packets with no payload at all.

    skb_condense() can still be a win in this case.

    It will be possible to replace the custom code in tcp_add_backlog()
    to get full benefit from skb_condense()

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • …inux/kernel/git/jberg/mac80211-next

    Johannes Berg says:

    ====================
    Three fixes:
    * fix a logic bug introduced by a previous cleanup
    * fix nl80211 attribute confusing (trying to use
    a single attribute for two purposes)
    * fix a long-standing BSS leak that happens when an
    association attempt is abandoned
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • In flood situations, keeping sk_rmem_alloc at a high value
    prevents producers from touching the socket.

    It makes sense to lower sk_rmem_alloc only at the end
    of udp_rmem_release() after the thread draining receive
    queue in udp_recvmsg() finished the writes to sk_forward_alloc.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • If udp_recvmsg() constantly releases sk_rmem_alloc
    for every read packet, it gives opportunity for
    producers to immediately grab spinlocks and desperatly
    try adding another packet, causing false sharing.

    We can add a simple heuristic to give the signal
    by batches of ~25 % of the queue capacity.

    This patch considerably increases performance under
    flood by about 50 %, since the thread draining the queue
    is no longer slowed by false sharing.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • In UDP RX handler, we currently clear skb->dev before skb
    is added to receive queue, because device pointer is no longer
    available once we exit from RCU section.

    Since this first cache line is always hot, lets reuse this space
    to store skb->truesize and thus avoid a cache line miss at
    udp_recvmsg()/udp_skb_destructor time while receive queue
    spinlock is held.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Idea of busylocks is to let producers grab an extra spinlock
    to relieve pressure on the receive_queue spinlock shared by consumer.

    This behavior is requested only once socket receive queue is above
    half occupancy.

    Under flood, this means that only one producer can be in line
    trying to acquire the receive_queue spinlock.

    These busylock can be allocated on a per cpu manner, instead of a
    per socket one (that would consume a cache line per socket)

    This patch considerably improves UDP behavior under stress,
    depending on number of NIC RX queues and/or RPS spread.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

09 Dec, 2016

12 commits

  • When mac80211 abandons an association attempt, it may free
    all the data structures, but inform cfg80211 and userspace
    about it only by sending the deauth frame it received, in
    which case cfg80211 has no link to the BSS struct that was
    used and will not cfg80211_unhold_bss() it.

    Fix this by providing a way to inform cfg80211 of this with
    the BSS entry passed, so that it can clean up properly, and
    use this ability in the appropriate places in mac80211.

    This isn't ideal: some code is more or less duplicated and
    tracing is missing. However, it's a fairly small change and
    it's thus easier to backport - cleanups can come later.

    Cc: stable@vger.kernel.org
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • NL80211_ATTR_MAC was used to set both the specific BSSID to be scanned
    and the random MAC address to be used when privacy is enabled. When both
    the features are enabled, both the BSSID and the local MAC address were
    getting same value causing Probe Request frames to go with unintended
    DA. Hence, this has been fixed by using a different NL80211_ATTR_BSSID
    attribute to set the specific BSSID (which was the more recent addition
    in cfg80211) for a scan.

    Backwards compatibility with old userspace software is maintained to
    some extent by allowing NL80211_ATTR_MAC to be used to set the specific
    BSSID when scanning without enabling random MAC address use.

    Scanning with random source MAC address was introduced by commit
    ad2b26abc157 ("cfg80211: allow drivers to support random MAC addresses
    for scan") and the issue was introduced with the addition of the second
    user for the same attribute in commit 818965d39177 ("cfg80211: Allow a
    scan request for a specific BSSID").

    Fixes: 818965d39177 ("cfg80211: Allow a scan request for a specific BSSID")
    Signed-off-by: Vamsi Krishna
    Signed-off-by: Jouni Malinen
    Signed-off-by: Johannes Berg

    Vamsi Krishna
     
  • Arend inadvertently inverted the logic while converting to
    wdev_running(), fix that.

    Fixes: 73c7da3dae1e ("cfg80211: add generic helper to check interface is running")
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • This patch cleanup checkpatch.pl warning
    WARNING: __aligned(size) is preferred over __attribute__((aligned(size)))

    Signed-off-by: Amit Kushwaha
    Signed-off-by: David S. Miller

    Amit Kushwaha
     
  • …etooth/bluetooth-next

    Johan Hedberg says:

    ====================
    pull request: bluetooth-next 2016-12-08

    I didn't miss your "net-next is closed" email, but it did come as a bit
    of a surprise, and due to time-zone differences I didn't have a chance
    to react to it until now. We would have had a couple of patches in
    bluetooth-next that we'd still have wanted to get to 4.10.

    Out of these the most critical one is the H7/CT2 patch for Bluetooth
    Security Manager Protocol, something that couldn't be published before
    the Bluetooth 5.0 specification went public (yesterday). If these really
    can't go to net-next we'll likely be sending at least this patch through
    bluetooth.git to net.git for rc1 inclusion.
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • This patch allows XDP prog to extend/remove the packet
    data at the head (like adding or removing header). It is
    done by adding a new XDP helper bpf_xdp_adjust_head().

    It also renames bpf_helper_changes_skb_data() to
    bpf_helper_changes_pkt_data() to better reflect
    that XDP prog does not work on skb.

    This patch adds one "xdp_adjust_head" bit to bpf_prog for the
    XDP-capable driver to check if the XDP prog requires
    bpf_xdp_adjust_head() support. The driver can then decide
    to error out during XDP_SETUP_PROG.

    Signed-off-by: Martin KaFai Lau
    Acked-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Acked-by: John Fastabend
    Signed-off-by: David S. Miller

    Martin KaFai Lau
     
  • Under UDP flood, many softirq producers try to add packets to
    UDP receive queue, and one user thread is burning one cpu trying
    to dequeue packets as fast as possible.

    Two parts of the per packet cost are :
    - copying payload from kernel space to user space,
    - freeing memory pieces associated with skb.

    If socket is under pressure, softirq handler(s) can try to pull in
    skb->head the payload of the packet if it fits.

    Meaning the softirq handler(s) can free/reuse the page fragment
    immediately, instead of letting udp_recvmsg() do this hundreds of usec
    later, possibly from another node.

    Additional gains :
    - We reduce skb->truesize and thus can store more packets per SO_RCVBUF
    - We avoid cache line misses at copyout() time and consume_skb() time,
    and avoid one put_page() with potential alien freeing on NUMA hosts.

    This comes at the cost of a copy, bounded to available tail room, which
    is usually small. (We might have to fix GRO_MAX_HEAD which looks bigger
    than necessary)

    This patch gave me about 5 % increase in throughput in my tests.

    skb_condense() helper could probably used in other contexts.

    Signed-off-by: Eric Dumazet
    Cc: Paolo Abeni
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • RFS is not commonly used, so add a jump label to avoid some conditionals
    in fast path.

    Signed-off-by: Eric Dumazet
    Cc: Paolo Abeni
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Support matching on ICMP type and code.

    Example usage:

    tc qdisc add dev eth0 ingress

    tc filter add dev eth0 protocol ip parent ffff: flower \
    indev eth0 ip_proto icmp type 8 code 0 action drop

    tc filter add dev eth0 protocol ipv6 parent ffff: flower \
    indev eth0 ip_proto icmpv6 type 128 code 0 action drop

    Signed-off-by: Simon Horman
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Simon Horman
     
  • Allow dissection of ICMP(V6) type and code. This should only occur
    if a packet is ICMP(V6) and the dissector has FLOW_DISSECTOR_KEY_ICMP set.

    There are currently no users of FLOW_DISSECTOR_KEY_ICMP.
    A follow-up patch will allow FLOW_DISSECTOR_KEY_ICMP to be used by
    the flower classifier.

    Signed-off-by: Simon Horman
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Simon Horman
     
  • Add UAPI to provide set of flags for matching, where the flags
    provided from user-space are mapped to flow-dissector flags.

    The 1st flag allows to match on whether the packet is an
    IP fragment and corresponds to the FLOW_DIS_IS_FRAGMENT flag.

    Signed-off-by: Or Gerlitz
    Reviewed-by: Paul Blakey
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Or Gerlitz
     
  • Currently, icmp_rcv() always return zero on a packet delivery upcall.

    To make its behavior more compliant with the way this API should be
    used, this patch changes this to let it return NET_RX_SUCCESS when the
    packet is proper handled, and NET_RX_DROP otherwise.

    Signed-off-by: Zhang Shengju
    Signed-off-by: David S. Miller

    Zhang Shengju
     

08 Dec, 2016

2 commits

  • Bluetooth 5.0 introduces a new H7 key generation function that's used
    when both sides of the pairing set the CT2 authentication flag to 1.

    Signed-off-by: Johan Hedberg
    Signed-off-by: Marcel Holtmann

    Johan Hedberg
     
  • Pablo Neira Ayuso says:

    ====================
    Netfilter/IPVS updates for net-next

    The following patchset contains a large Netfilter update for net-next,
    to summarise:

    1) Add support for stateful objects. This series provides a nf_tables
    native alternative to the extended accounting infrastructure for
    nf_tables. Two initial stateful objects are supported: counters and
    quotas. Objects are identified by a user-defined name, you can fetch
    and reset them anytime. You can also use a maps to allow fast lookups
    using any arbitrary key combination. More info at:

    http://marc.info/?l=netfilter-devel&m=148029128323837&w=2

    2) On-demand registration of nf_conntrack and defrag hooks per netns.
    Register nf_conntrack hooks if we have a stateful ruleset, ie.
    state-based filtering or NAT. The new nf_conntrack_default_on sysctl
    enables this from newly created netnamespaces. Default behaviour is not
    modified. Patches from Florian Westphal.

    3) Allocate 4k chunks and then use these for x_tables counter allocation
    requests, this improves ruleset load time and also datapath ruleset
    evaluation, patches from Florian Westphal.

    4) Add support for ebpf to the existing x_tables bpf extension.
    From Willem de Bruijn.

    5) Update layer 4 checksum if any of the pseudoheader fields is updated.
    This provides a limited form of 1:1 stateless NAT that make sense in
    specific scenario, eg. load balancing.

    6) Add support to flush sets in nf_tables. This series comes with a new
    set->ops->deactivate_one() indirection given that we have to walk
    over the list of set elements, then deactivate them one by one.
    The existing set->ops->deactivate() performs an element lookup that
    we don't need.

    7) Two patches to avoid cloning packets, thus speed up packet forwarding
    via nft_fwd from ingress. From Florian Westphal.

    8) Two IPVS patches via Simon Horman: Decrement ttl in all modes to
    prevent infinite loops, patch from Dwip Banerjee. And one minor
    refactoring from Gao feng.

    9) Revisit recent log support for nf_tables netdev families: One patch
    to ensure that we correctly handle non-ethernet packets. Another
    patch to add missing logger definition for netdev. Patches from
    Liping Zhang.

    10) Three patches for nft_fib, one to address insufficient register
    initialization and another to solve incorrect (although harmless)
    byteswap operation. Moreover update xt_rpfilter and nft_fib to match
    lbcast packets with zeronet as source, eg. DHCP Discover packets
    (0.0.0.0 -> 255.255.255.255). Also from Liping Zhang.

    11) Built-in DCCP, SCTP and UDPlite conntrack and NAT support, from
    Davide Caratti. While DCCP is rather hopeless lately, and UDPlite has
    been broken in many-cast mode for some little time, let's give them a
    chance by placing them at the same level as other existing protocols.
    Thus, users don't explicitly have to modprobe support for this and
    NAT rules work for them. Some people point to the lack of support in
    SOHO Linux-based routers that make deployment of new protocols harder.
    I guess other middleboxes outthere on the Internet are also to blame.
    Anyway, let's see if this has any impact in the midrun.

    12) Skip software SCTP software checksum calculation if the NIC comes
    with SCTP checksum offload support. From Davide Caratti.

    13) Initial core factoring to prepare conversion to hook array. Three
    patches from Aaron Conole.

    14) Gao Feng made a wrong conversion to switch in the xt_multiport
    extension in a patch coming in the previous batch. Fix it in this
    batch.

    15) Get vmalloc call in sync with kmalloc flags to avoid a warning
    and likely OOM killer intervention from x_tables. From Marcelo
    Ricardo Leitner.

    16) Update Arturo Borrero's email address in all source code headers.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller