31 Jan, 2012

5 commits

  • 1) Setting link attributes can modify the size of the attributes that
    would be reported on a subsequent getlink netlink operation,
    therefore min_ifinfo_dump_size needs to be adjusted. From Stefan
    Gula.

    2) Resegmentation of TSO frames while trimming can violate invariants
    expected by callers, namely that the number of segments can only stay
    the same or decrease, never increase. If MSS changes, however, we
    can trim data but then end up with more segments. Fix this by only
    segmenting to the MSS already recorded in the SKB. That's the
    simplest fix for now and if we want to get more fancy in the future
    that's a more involved change.

    This probably explains some retransmit counter inaccuracies.

    From Neal Cardwell.

    3) Fix too-many-wakeups in POLL with AF_UNIX sockets, from Eric Dumazet.

    4) Fix CAIF crashes wrt. namespace handling. From Eric Dumazet and
    Eric W. Biederman.

    5) TCP port selection fixes from Flavio Leitner.

    6) More socket memory cgroup build fixes in certain randonfig
    situations. From Glauber Costa.

    7) Fix TCP memory sysctl regression reported by Ingo Molnar, also from
    Glauber Costa.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    af_unix: fix EPOLLET regression for stream sockets
    tcp: fix tcp_trim_head() to adjust segment count with skb MSS
    net/tcp: Fix tcp memory limits initialization when !CONFIG_SYSCTL
    net caif: Register properly as a pernet subsystem.
    netns: Fail conspicously if someone uses net_generic at an inappropriate time.
    net: explicitly add jump_label.h header to sock.h
    net: RTNETLINK adjusting values of min_ifinfo_dump_size
    ipv6: Fix ip_gre lockless xmits.
    xen-netfront: correct MAX_TX_TARGET calculation.
    netns: fix net_alloc_generic()
    tcp: bind() optimize port allocation
    tcp: bind() fix autoselection to share ports
    l2tp: l2tp_ip - fix possible oops on packet receive
    iwlwifi: fix PCI-E transport "inta" race
    mac80211: set bss_conf.idle when vif is connected
    mac80211: update oper_channel on ibss join

    Linus Torvalds
     
  • Commit 0884d7aa24 (AF_UNIX: Fix poll blocking problem when reading from
    a stream socket) added a regression for epoll() in Edge Triggered mode
    (EPOLLET)

    Appropriate fix is to use skb_peek()/skb_unlink() instead of
    skb_dequeue(), and only call skb_unlink() when skb is fully consumed.

    This remove the need to requeue a partial skb into sk_receive_queue head
    and the extra sk->sk_data_ready() calls that added the regression.

    This is safe because once skb is given to sk_receive_queue, it is not
    modified by a writer, and readers are serialized by u->readlock mutex.

    This also reduce number of spinlock acquisition for small reads or
    MSG_PEEK users so should improve overall performance.

    Reported-by: Nick Mathewson
    Signed-off-by: Eric Dumazet
    Cc: Alexey Moiseytsev
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • This commit fixes tcp_trim_head() to recalculate the number of
    segments in the skb with the skb's existing MSS, so trimming the head
    causes the skb segment count to be monotonically non-increasing - it
    should stay the same or go down, but not increase.

    Previously tcp_trim_head() used the current MSS of the connection. But
    if there was a decrease in MSS between original transmission and ACK
    (e.g. due to PMTUD), this could cause tcp_trim_head() to
    counter-intuitively increase the segment count when trimming bytes off
    the head of an skb. This violated assumptions in tcp_tso_acked() that
    tcp_trim_head() only decreases the packet count, so that packets_acked
    in tcp_tso_acked() could underflow, leading tcp_clean_rtx_queue() to
    pass u32 pkts_acked values as large as 0xffffffff to
    ca_ops->pkts_acked().

    As an aside, if tcp_trim_head() had really wanted the skb to reflect
    the current MSS, it should have called tcp_set_skb_tso_segs()
    unconditionally, since a decrease in MSS would mean that a
    single-packet skb should now be sliced into multiple segments.

    Signed-off-by: Neal Cardwell
    Acked-by: Nandita Dukkipati
    Acked-by: Ilpo Järvinen
    Signed-off-by: David S. Miller

    Neal Cardwell
     
  • sysctl_tcp_mem() initialization was moved to sysctl_tcp_ipv4.c
    in commit 3dc43e3e4d0b52197d3205214fe8f162f9e0c334, since it
    became a per-ns value.

    That code, however, will never run when CONFIG_SYSCTL is
    disabled, leading to bogus values on those fields - causing hung
    TCP sockets.

    This patch fixes it by keeping an initialization code in
    tcp_init(). It will be overwritten by the first net namespace
    init if CONFIG_SYSCTL is compiled in, and do the right thing if
    it is compiled out.

    It is also named properly as tcp_init_mem(), to properly signal
    its non-sysctl side effect on TCP limits.

    Reported-by: Ingo Molnar
    Signed-off-by: Glauber Costa
    Cc: David S. Miller
    Link: http://lkml.kernel.org/r/4F22D05A.8030604@parallels.com
    [ renamed the function, tidied up the changelog a bit ]
    Signed-off-by: Ingo Molnar
    Signed-off-by: David S. Miller

    Glauber Costa
     
  • NFS client bugfixes for Linux 3.3 (pull 3)

    * tag 'nfs-for-3.3-3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    SUNRPC: Fix machine creds in generic_create_cred and generic_match

    Linus Torvalds
     

28 Jan, 2012

2 commits

  • caif is a subsystem and as such it needs to register with
    register_pernet_subsys instead of register_pernet_device.

    Among other problems using register_pernet_device was resulting in
    net_generic being called before the caif_net structure was allocated.
    Which has been causing net_generic to fail with either BUG_ON's or by
    return NULL pointers.

    A more ugly problem that could be caused is packets in flight why the
    subsystem is shutting down.

    To remove confusion also remove the cruft cause by inappropriately
    trying to fix this bug.

    With the aid of the previous patch I have tested this patch and
    confirmed that using register_pernet_subsys makes the failure go away as
    it should.

    Signed-off-by: Eric W. Biederman
    Acked-by: Sjur Brændeland
    Tested-by: Sasha Levin
    Signed-off-by: David S. Miller

    Eric W. Biederman
     
  • David S. Miller
     

27 Jan, 2012

3 commits

  • Setting link parameters on a netdevice changes the value
    of if_nlmsg_size(), therefore it is necessary to recalculate
    min_ifinfo_dump_size.

    Signed-off-by: Stefan Gula
    Signed-off-by: David S. Miller

    Stefan Gula
     
  • Tunnel devices set NETIF_F_LLTX to bypass HARD_TX_LOCK. Sit and
    ipip set this unconditionally in ops->setup, but gre enables it
    conditionally after parameter passing in ops->newlink. This is
    not called during tunnel setup as below, however, so GRE tunnels are
    still taking the lock.

    modprobe ip_gre
    ip tunnel add test0 mode gre remote 10.5.1.1 dev lo
    ip link set test0 up
    ip addr add 10.6.0.1 dev test0
    # cat /sys/class/net/test0/features
    # $DIR/test_tunnel_xmit 10 10.5.2.1
    ip route add 10.5.2.0/24 dev test0
    ip tunnel del test0

    The newlink callback is only called in rtnl_netlink, and only if
    the device is new, as it calls register_netdevice internally. Gre
    tunnels are created at 'ip tunnel add' with ioctl SIOCADDTUNNEL,
    which calls ipgre_tunnel_locate, which calls register_netdev.
    rtnl_newlink is called at 'ip link set', but skips ops->newlink
    and the device is up with locking still enabled. The equivalent
    ipip tunnel works fine, btw (just substitute 'method gre' for
    'method ipip').

    On kernels before /sys/class/net/*/features was removed [1],
    the first commented out line returns 0x6000 with method gre,
    which indicates that NETIF_F_LLTX (0x1000) is not set. With ipip,
    it reports 0x7000. This test cannot be used on recent kernels where
    the sysfs file is removed (and ETHTOOL_GFEATURES does not currently
    work for tunnel devices, because they lack dev->ethtool_ops).

    The second commented out line calls a simple transmission test [2]
    that sends on 24 cores at maximum rate. Results of a single run:

    ipip: 19,372,306
    gre before patch: 4,839,753
    gre after patch: 19,133,873

    This patch replicates the condition check in ipgre_newlink to
    ipgre_tunnel_locate. It works for me, both with oseq on and off.
    This is the first time I looked at rtnetlink and iproute2 code,
    though, so someone more knowledgeable should probably check the
    patch. Thanks.

    The tail of both functions is now identical, by the way. To avoid
    code duplication, I'll be happy to rework this and merge the two.

    [1] http://patchwork.ozlabs.org/patch/104610/
    [2] http://kernel.googlecode.com/files/xmit_udp_parallel.c

    Signed-off-by: Willem de Bruijn
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Willem de Bruijn
     
  • When a new net namespace is created, we should attach to it a "struct
    net_generic" with enough slots (even empty), or we can hit the following
    BUG_ON() :

    [ 200.752016] kernel BUG at include/net/netns/generic.h:40!
    ...
    [ 200.752016] [] ? get_cfcnfg+0x3a/0x180
    [ 200.752016] [] ? lockdep_rtnl_is_held+0x10/0x20
    [ 200.752016] [] caif_device_notify+0x2e/0x530
    [ 200.752016] [] notifier_call_chain+0x67/0x110
    [ 200.752016] [] raw_notifier_call_chain+0x11/0x20
    [ 200.752016] [] call_netdevice_notifiers+0x32/0x60
    [ 200.752016] [] register_netdevice+0x196/0x300
    [ 200.752016] [] register_netdev+0x19/0x30
    [ 200.752016] [] loopback_net_init+0x4a/0xa0
    [ 200.752016] [] ops_init+0x42/0x180
    [ 200.752016] [] setup_net+0x6b/0x100
    [ 200.752016] [] copy_net_ns+0x86/0x110
    [ 200.752016] [] create_new_namespaces+0xd9/0x190

    net_alloc_generic() should take into account the maximum index into the
    ptr array, as a subsystem might use net_generic() anytime.

    This also reduces number of reallocations in net_assign_generic()

    Reported-by: Sasha Levin
    Tested-by: Sasha Levin
    Signed-off-by: Eric Dumazet
    Cc: Sjur Brændeland
    Cc: Eric W. Biederman
    Cc: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Eric Dumazet
     

26 Jan, 2012

3 commits

  • Port autoselection finds a port and then drop the lock,
    then right after that, gets the hash bucket again and lock it.

    Fix it to go direct.

    Signed-off-by: Flavio Leitner
    Signed-off-by: Marcelo Ricardo Leitner
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Flavio Leitner
     
  • The current code checks for conflicts when the application
    requests a specific port. If there is no conflict, then
    the request is granted.

    On the other hand, the port autoselection done by the kernel
    fails when all ports are bound even when there is a port
    with no conflict available.

    The fix changes port autoselection to check if there is a
    conflict and use it if not.

    Signed-off-by: Flavio Leitner
    Signed-off-by: Marcelo Ricardo Leitner
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Flavio Leitner
     
  • When a packet is received on an L2TP IP socket (L2TPv3 IP link
    encapsulation), the l2tpip socket's backlog_rcv function calls
    xfrm4_policy_check(). This is not necessary, since it was called
    before the skb was added to the backlog. With CONFIG_NET_NS enabled,
    xfrm4_policy_check() will oops if skb->dev is null, so this trivial
    patch removes the call.

    This bug has always been present, but only when CONFIG_NET_NS is
    enabled does it cause problems. Most users are probably using UDP
    encapsulation for L2TP, hence the problem has only recently
    surfaced.

    EIP: 0060:[] EFLAGS: 00210246 CPU: 0
    EIP is at l2tp_ip_recvmsg+0xd4/0x2a7
    EAX: 00000001 EBX: d77b5180 ECX: 00000000 EDX: 00200246
    ESI: 00000000 EDI: d63cbd30 EBP: d63cbd18 ESP: d63cbcf4
    DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
    Call Trace:
    [] sock_common_recvmsg+0x31/0x46
    [] __sock_recvmsg_nosec+0x45/0x4d
    [] __sock_recvmsg+0x31/0x3b
    [] sock_recvmsg+0x96/0xab
    [] ? might_fault+0x47/0x81
    [] ? might_fault+0x47/0x81
    [] ? _copy_from_user+0x31/0x115
    [] ? copy_from_user+0x8/0xa
    [] ? verify_iovec+0x3e/0x78
    [] __sys_recvmsg+0x10a/0x1aa
    [] ? sock_recvmsg+0x0/0xab
    [] ? __lock_acquire+0xbdf/0xbee
    [] ? do_page_fault+0x193/0x375
    [] ? fcheck_files+0x9b/0xca
    [] ? fget_light+0x2a/0x9c
    [] sys_recvmsg+0x2b/0x43
    [] sys_socketcall+0x16d/0x1a5
    [] ? trace_hardirqs_on_thunk+0xc/0x10
    [] sysenter_do_call+0x12/0x38
    Code: c6 05 8c ea a8 c1 01 e8 0c d4 d9 ff 85 f6 74 07 3e ff 86 80 00 00 00 b9 17 b6 2b c1 ba 01 00 00 00 b8 78 ed 48 c1 e8 23 f6 d9 ff 76 0c 68 28 e3 30 c1 68 2d 44 41 c1 e8 89 57 01 00 83 c4 0c

    Signed-off-by: James Chapman
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    James Chapman
     

25 Jan, 2012

5 commits

  • rds_sock_info() triggers locking warnings because we try to perform a
    local_bh_enable() (via sock_i_ino()) while hardware interrupts are
    disabled (via taking rds_sock_lock).

    There is no reason for rds_sock_lock to be a hardware IRQ disabling
    lock, none of these access paths run in hardware interrupt context.

    Therefore making it a BH disabling lock is safe and sufficient to
    fix this bug.

    Reported-by: Kumar Sanghvi
    Reported-by: Josh Boyer
    Signed-off-by: David S. Miller

    David S. Miller
     
  • The file net/core/flow_dissector.c seems to be missing
    including linux/export.h.

    Signed-off-by: Jesper Dangaard Brouer
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     
  • There is a race on sk_receive_queue between llc_ui_recvmsg and
    sock_queue_rcv_skb.

    Our current solution is to protect skb_eat in llc_ui_recvmsg
    with the queue spinlock.

    Signed-off-by: Radu Iliescu
    Signed-off-by: David S. Miller

    Radu Iliescu
     
  • __ieee80211_recalc_idle() iterates through the vifs,
    sets bss_conf.idle = true if they are disconnected,
    and increases "count" if they are not (which later
    gets evaluated in order to determine whether the
    device is idle).

    However, the loop doesn't set bss_conf.idle = false
    (along with increasing "count"), causing the device
    idle state and the vif idle state to get out of sync
    in some cases.

    Signed-off-by: Eliad Peller
    Signed-off-by: John W. Linville

    Eliad Peller
     
  • Commit 13c40c5 ("mac80211: Add HT operation modes for IBSS") broke
    ibss operation by mistakenly removing the local->oper_channel
    update (causing ibss to start on the wrong channel). fix it.

    Signed-off-by: Eliad Peller
    Acked-by: Simon Wunderlich
    Signed-off-by: John W. Linville

    Eliad Peller
     

24 Jan, 2012

1 commit


23 Jan, 2012

7 commits

  • Allow ETHTOOL_GSSET_INFO ethtool ioctl() for unprivileged users.
    ETHTOOL_GSTRINGS is already allowed, but is unusable without this one.

    Signed-off-by: Michał Mirosław
    Acked-by: Ben Hutchings
    Signed-off-by: David S. Miller

    Michał Mirosław
     
  • Fixes:

    net/bluetooth/hci_core.c: In function ‘__check_enable_hs’:
    net/bluetooth/hci_core.c:2587:1: warning: return from incompatible pointer type [enabled by default]

    Signed-off-by: David S. Miller

    David S. Miller
     
  • There is a case in __sk_mem_schedule(), where an allocation
    is beyond the maximum, but yet we are allowed to proceed.
    It happens under the following condition:

    sk->sk_wmem_queued + size >= sk->sk_sndbuf

    The network code won't revert the allocation in this case,
    meaning that at some point later it'll try to do it. Since
    this is never communicated to the underlying res_counter
    code, there is an inbalance in res_counter uncharge operation.

    I see two ways of fixing this:

    1) storing the information about those allocations somewhere
    in memcg, and then deducting from that first, before
    we start draining the res_counter,
    2) providing a slightly different allocation function for
    the res_counter, that matches the original behavior of
    the network code more closely.

    I decided to go for #2 here, believing it to be more elegant,
    since #1 would require us to do basically that, but in a more
    obscure way.

    Signed-off-by: Glauber Costa
    Cc: KAMEZAWA Hiroyuki
    Cc: Johannes Weiner
    Cc: Michal Hocko
    CC: Tejun Heo
    CC: Li Zefan
    CC: Laurent Chavey
    Acked-by: Tejun Heo
    Signed-off-by: David S. Miller

    Glauber Costa
     
  • md5 key is added in socket through remote address.
    remote address should be used in finding md5 key when
    sending out reset packet.

    Signed-off-by: shawnlu
    Signed-off-by: David S. Miller

    shawnlu
     
  • Every call to num_args() immediately checks the return value for
    less than zero, as it will return -EFAULT for a failed get_user()
    call. So it makes no sense for the function to be declared as an
    unsigned long.

    Signed-off-by: Paul Gortmaker
    Signed-off-by: David S. Miller

    Paul Gortmaker
     
  • Correctly implement a loss detection heuristic: New sequences (above
    high_seq) sent during the fast recovery are deemed lost when higher
    sequences are SACKed.

    Current code does not catch these losses, because tcp_mark_head_lost()
    does not check packets beyond high_seq. The fix is straight-forward by
    checking packets until the highest sacked packet. In addition, all the
    FLAG_DATA_LOST logic are in-effective and redundant and can be removed.

    Update the loss heuristic comments. The algorithm above is documented
    as heuristic B, but it is redundant too because heuristic A already
    covers B.

    Note that this change only marks some forward-retransmitted packets LOST.
    It does NOT forbid TCP performing further CWR on new losses. A potential
    follow-up patch under preparation is to perform another CWR on "new"
    losses such as
    1) sequence above high_seq is lost (by resetting high_seq to snd_nxt)
    2) retransmission is lost.

    Signed-off-by: Yuchung Cheng
    Signed-off-by: David S. Miller

    Yuchung Cheng
     
  • With netem reordering, a gap of N is supposed to reorder every Nth packet with
    given reorder probability. However, the code currently skips N packets and
    reorders every (N+1)th packet.

    Signed-off-by: Vijay Subramanian
    Signed-off-by: David S. Miller

    Vijay Subramanian
     

21 Jan, 2012

2 commits

  • This patch fixes CUBIC so that cwnd reductions made during RTOs can be
    undone (just as they already can be undone when using the default/Reno
    behavior).

    When undoing cwnd reductions, BIC-derived congestion control modules
    were restoring the cwnd from last_max_cwnd. There were two problems
    with using last_max_cwnd to restore a cwnd during undo:

    (a) last_max_cwnd was set to 0 on state transitions into TCP_CA_Loss
    (by calling the module's reset() functions), so cwnd reductions from
    RTOs could not be undone.

    (b) when fast_covergence is enabled (which it is by default)
    last_max_cwnd does not actually hold the value of snd_cwnd before the
    loss; instead, it holds a scaled-down version of snd_cwnd.

    This patch makes the following changes:

    (1) upon undo, revert snd_cwnd to ca->loss_cwnd, which is already, as
    the existing comment notes, the "congestion window at last loss"

    (2) stop forgetting ca->loss_cwnd on TCP_CA_Loss events

    (3) use ca->last_max_cwnd to check if we're in slow start

    Signed-off-by: Neal Cardwell
    Acked-by: Stephen Hemminger
    Acked-by: Sangtae Ha
    Signed-off-by: David S. Miller

    Neal Cardwell
     
  • This patch fixes BIC so that cwnd reductions made during RTOs can be
    undone (just as they already can be undone when using the default/Reno
    behavior).

    When undoing cwnd reductions, BIC-derived congestion control modules
    were restoring the cwnd from last_max_cwnd. There were two problems
    with using last_max_cwnd to restore a cwnd during undo:

    (a) last_max_cwnd was set to 0 on state transitions into TCP_CA_Loss
    (by calling the module's reset() functions), so cwnd reductions from
    RTOs could not be undone.

    (b) when fast_covergence is enabled (which it is by default)
    last_max_cwnd does not actually hold the value of snd_cwnd before the
    loss; instead, it holds a scaled-down version of snd_cwnd.

    This patch makes the following changes:

    (1) upon undo, revert snd_cwnd to ca->loss_cwnd, which is already, as
    the existing comment notes, the "congestion window at last loss"

    (2) stop forgetting ca->loss_cwnd on TCP_CA_Loss events

    (3) use ca->last_max_cwnd to check if we're in slow start

    Signed-off-by: Neal Cardwell
    Signed-off-by: David S. Miller

    Neal Cardwell
     

19 Jan, 2012

5 commits

  • There is a race condition in addrconf_sysctl_forward() and
    addrconf_sysctl_disable().
    These functions change idev->cnf.forwarding (resp. idev->cnf.disable_ipv6)
    and then try to grab the rtnl lock before performing any actions.
    If that fails they restore the original value and restart the syscall.
    This creates race conditions if ipv6 code tries to access
    these parameters, or if multiple instances try to do the same operation.
    As an example of the former, if __ipv6_ifa_notify() finds a 0 in
    idev->cnf.forwarding when invoked by addrconf_ifdown() it may not free
    anycast addresses, ultimately resulting in the net_device not being freed.
    This patch reads the user parameters into a temporary location and only
    writes the actual parameters when the rtnl lock is acquired.
    Tested in 2.6.38.8.
    Signed-off-by: Francesco Ruggeri
    Signed-off-by: David S. Miller

    Francesco Ruggeri
     
  • David S. Miller
     
  • When deauth is requested while an auth or assoc
    work item is in progress, we currently delete it
    without regard for any state it might need to
    clean up. Fix it by cleaning up for those items.

    In the case Pontus found, the problem manifested
    itself as such:

    authenticate with 00:23:69:aa:dd:7b (try 1)
    authenticated
    failed to insert Dummy STA entry for the AP (error -17)
    deauthenticating from 00:23:69:aa:dd:7b by local choice (reason=2)

    It could also happen differently if the driver
    uses the tx_sync callback.

    We can't just call the ->done() method of the work
    items because that will lock up due to the locking
    in cfg80211. This fix isn't very clean, but that
    seems acceptable since I have patches pending to
    remove this code completely.

    Cc: stable@vger.kernel.org
    Reported-by: Pontus Fuchs
    Tested-by: Pontus Fuchs
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Use local->tx_headroom instad of local->hw.extra_tx_headroom.
    local->tx_headroom is the max of hw.extra_tx_headroom required by the
    driver and the headroom required by mac80211 for status reporting. On
    drivers where hw.extra_tx_headroom is smaller than what mac80211
    requires (e.g. ath5k), we would not reserve sufficient buffer space to
    report tx status.

    Also, don't reserve local->tx_headroom + local->hw.extra_tx_headroom.

    Reported-by: Simon Morgenthaler
    Reported-by: Kai Scharwies
    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Javier Cardona
     
  • Since stations moved into a virtual interface
    subdirectory, this link has been broken. Fix it.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

18 Jan, 2012

7 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (47 commits)
    tg3: Fix single-vector MSI-X code
    openvswitch: Fix multipart datapath dumps.
    ipv6: fix per device IP snmp counters
    inetpeer: initialize ->redirect_genid in inet_getpeer()
    net: fix NULL-deref in WARN() in skb_gso_segment()
    net: WARN if skb_checksum_help() is called on skb requiring segmentation
    caif: Remove bad WARN_ON in caif_dev
    caif: Fix typo in Vendor/Product-ID for CAIF modems
    bnx2x: Disable AN KR work-around for BCM57810
    bnx2x: Remove AutoGrEEEn for BCM84833
    bnx2x: Remove 100Mb force speed for BCM84833
    bnx2x: Fix PFC setting on BCM57840
    bnx2x: Fix Super-Isolate mode for BCM84833
    net: fix some sparse errors
    net: kill duplicate included header
    net: sh-eth: Fix build error by the value which is not defined
    net: Use device model to get driver name in skb_gso_segment()
    bridge: BH already disabled in br_fdb_cleanup()
    net: move sock_update_memcg outside of CONFIG_INET
    mwl8k: Fixing Sparse ENDIAN CHECK warning
    ...

    Linus Torvalds
     
  • The logic to split up the list of datapaths into multiple Netlink messages
    was simply wrong, causing the list to be terminated after the first part.
    Only about the first 50 datapaths would be dumped. This fixes the
    problem.

    Reported-by: Paul Ingram
    Signed-off-by: Ben Pfaff
    Signed-off-by: Jesse Gross
    Signed-off-by: David S. Miller

    Ben Pfaff
     
  • In commit 4ce3c183fca (snmp: 64bit ipstats_mib for all arches), I forgot
    to change the /proc/net/dev_snmp6/xxx output for IP counters.

    percpu array is 64bit per counter but the folding still used the 'long'
    variant, and output garbage on 32bit arches.

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

    Eric Dumazet
     
  • kmemcheck complains that ->redirect_genid doesn't get initialized.
    Presumably it should be set to zero.

    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • Bug was introduced in commit c8f44affb7244f2ac3e703cab13d55ede27621bb.

    Signed-off-by: Michał Mirosław
    Signed-off-by: David S. Miller

    Michał Mirosław
     
  • skb_checksum_help() has never done anything useful with skbs that
    require segmentation. Setting skb->ip_summed = CHECKSUM_NONE makes
    them invalid and provokes a later WARNing in skb_gso_segment().

    Passing such an skb to skb_checksum_help() indicates a bug, so we
    should warn about it immediately. Move the warning from
    skb_gso_segment() into a shared function, and add gso_type and
    gso_size to it.

    Signed-off-by: Ben Hutchings
    Signed-off-by: David S. Miller

    Ben Hutchings
     
  • David S. Miller