05 Jun, 2018

1 commit

  • commit 607065bad9931e72207b0cac365d7d4abc06bd99 upstream.

    When using large tcp_rmem[2] values (I did tests with 500 MB),
    I noticed overflows while computing rcvwin.

    Lets fix this before the following patch.

    Signed-off-by: Eric Dumazet
    Acked-by: Soheil Hassas Yeganeh
    Acked-by: Wei Wang
    Acked-by: Neal Cardwell
    Signed-off-by: David S. Miller
    [Backport: sysctl_tcp_rmem is not Namespace-ify'd in older kernels]
    Signed-off-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Eric Dumazet
     

31 May, 2018

1 commit

  • This reverts commit 5815901c29c2936d7acbed2683d5807b4ae53ede which is
    03080e5ec727 ("vti4: Don't override MTU passed on link creation via
    IFLA_MTU") upstream as it causes test failures.

    This commit should not have been backported to anything older than 4.16,
    despite what the changelog said as the mtu must be set in older kernels,
    unlike is needed in 4.16 and newer.

    Thanks to Alistair Strachan for the debugging help figuring this out,
    and for 'git bisect' for making my life a whole lot easier.

    Cc: Alistair Strachan
    Cc: Stefano Brivio
    Cc: Sabrina Dubroca
    Cc: Steffen Klassert
    Cc: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

30 May, 2018

38 commits

  • [ Upstream commit 213d7f94775322ba44e0bbb55ec6946e9de88cea ]

    When resolving a fallback label, check the sk_buff version as it
    is possible (e.g. SCTP) to have family = PF_INET6 while
    receiving ip_hdr(skb)->version = 4.

    Signed-off-by: Richard Haines
    Acked-by: Paul Moore
    Signed-off-by: Paul Moore
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Richard Haines
     
  • [ Upstream commit c9f4c6cf53bfafb639386a4c094929f13f573e04 ]

    smc allocates a certain number of CQ entries for used RoCE devices. For
    mlx5 devices the chosen constant number results in a large allocation
    causing this warning:

    [13355.124656] WARNING: CPU: 3 PID: 16535 at mm/page_alloc.c:3883 __alloc_pages_nodemask+0x2be/0x10c0
    [13355.124657] Modules linked in: smc_diag(O) smc(O) xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp bridge stp llc ip6table_filter ip6_tables iptable_filter mlx5_ib ib_core sunrpc mlx5_core s390_trng rng_core ghash_s390 prng aes_s390 des_s390 des_generic sha512_s390 sha256_s390 sha1_s390 sha_common ptp pps_core eadm_sch dm_multipath dm_mod vhost_net tun vhost tap sch_fq_codel kvm ip_tables x_tables autofs4 [last unloaded: smc]
    [13355.124672] CPU: 3 PID: 16535 Comm: kworker/3:0 Tainted: G O 4.14.0uschi #1
    [13355.124673] Hardware name: IBM 3906 M04 704 (LPAR)
    [13355.124675] Workqueue: events smc_listen_work [smc]
    [13355.124677] task: 00000000e2f22100 task.stack: 0000000084720000
    [13355.124678] Krnl PSW : 0704c00180000000 000000000029da76 (__alloc_pages_nodemask+0x2be/0x10c0)
    [13355.124681] R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
    [13355.124682] Krnl GPRS: 0000000000000000 00550e00014080c0 0000000000000000 0000000000000001
    [13355.124684] 000000000029d8b6 00000000f3bfd710 0000000000000000 00000000014080c0
    [13355.124685] 0000000000000009 00000000ec277a00 0000000000200000 0000000000000000
    [13355.124686] 0000000000000000 00000000000001ff 000000000029d8b6 0000000084723720
    [13355.124708] Krnl Code: 000000000029da6a: a7110200 tmll %r1,512
    000000000029da6e: a774ff29 brc 7,29d8c0
    #000000000029da72: a7f40001 brc 15,29da74
    >000000000029da76: a7f4ff25 brc 15,29d8c0
    000000000029da7a: a7380000 lhi %r3,0
    000000000029da7e: a7f4fef1 brc 15,29d860
    000000000029da82: 5820f0c4 l %r2,196(%r15)
    000000000029da86: a53e0048 llilh %r3,72
    [13355.124720] Call Trace:
    [13355.124722] ([] __alloc_pages_nodemask+0xfe/0x10c0)
    [13355.124724] [] s390_dma_alloc+0x6e/0x148
    [13355.124733] [] mlx5_dma_zalloc_coherent_node+0x8e/0xe0 [mlx5_core]
    [13355.124740] [] mlx5_buf_alloc_node+0x70/0x108 [mlx5_core]
    [13355.124744] [] mlx5_ib_create_cq+0x558/0x898 [mlx5_ib]
    [13355.124749] [] ib_create_cq+0x48/0x88 [ib_core]
    [13355.124751] [] smc_ib_setup_per_ibdev+0x52/0x118 [smc]
    [13355.124753] [] smc_conn_create+0x65e/0x728 [smc]
    [13355.124755] [] smc_listen_work+0x2d2/0x540 [smc]
    [13355.124756] [] process_one_work+0x1be/0x440
    [13355.124758] [] worker_thread+0x58/0x458
    [13355.124759] [] kthread+0x14e/0x168
    [13355.124760] [] kernel_thread_starter+0x6/0xc
    [13355.124762] [] kernel_thread_starter+0x0/0xc
    [13355.124762] Last Breaking-Event-Address:
    [13355.124764] [] __alloc_pages_nodemask+0x2ba/0x10c0
    [13355.124764] ---[ end trace 34be38b581c0b585 ]---

    This patch reduces the smc constant for the maximum number of allocated
    completion queue entries SMC_MAX_CQE by 2 to avoid high round up values
    in the mlx5 code, and reduces the number of allocated completion queue
    entries even more, if the final allocation for an mlx5 device hits the
    MAX_ORDER limit.

    Reported-by: Ihnken Menssen
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Ursula Braun
     
  • [ Upstream commit 57b0c9d49b94bbeb53649b7fbd264603c1ebd585 ]

    If a call-level abort is received for the previous call to complete on a
    connection channel, then that abort is queued for the connection processor
    to handle. Unfortunately, the connection processor then assumes without
    checking that the abort is connection-level (ie. callNumber is 0) and
    distributes it over all active calls on that connection, thereby
    incorrectly aborting them.

    Fix this by discarding aborts aimed at a completed call.

    Further, discard all packets aimed at a call that's complete if there's
    currently an active call on a channel, since the DATA packets associated
    with the new call automatically terminate the old call.

    Fixes: 18bfeba50dfd ("rxrpc: Perform terminal call ACK/ABORT retransmission from conn processor")
    Reported-by: Marc Dionne
    Signed-off-by: David Howells
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    David Howells
     
  • [ Upstream commit 03877bf6a30cca7d4bc3ffabd3c3e9464a7a1a19 ]

    rxrpc calls have a ring of packets that are awaiting ACK or retransmission
    and a parallel ring of annotations that tracks the state of those packets.
    If the initial transmission of a packet on the underlying UDP socket fails
    then the packet annotation is marked for resend - but the setting of this
    mark accidentally erases the last-packet mark also stored in the same
    annotation slot. If this happens, a call won't switch out of the Tx phase
    when all the packets have been transmitted.

    Fix this by retaining the last-packet mark and only altering the packet
    state.

    Fixes: 248f219cb8bc ("rxrpc: Rewrite the data and ack handling code")
    Signed-off-by: David Howells
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    David Howells
     
  • [ Upstream commit ae4745730cf8e693d354ccd4dbaf59ea440c09a9 ]

    In some situation vlan packets do not have ethernet headers. One example
    is packets from tun devices. Users can specify vlan protocol in tun_pi
    field instead of IP protocol, and skb_vlan_untag() attempts to untag such
    packets.

    skb_vlan_untag() (more precisely, skb_reorder_vlan_header() called by it)
    however did not expect packets without ethernet headers, so in such a case
    size argument for memmove() underflowed and triggered crash.

    ====
    BUG: unable to handle kernel paging request at ffff8801cccb8000
    IP: __memmove+0x24/0x1a0 arch/x86/lib/memmove_64.S:43
    PGD 9cee067 P4D 9cee067 PUD 1d9401063 PMD 1cccb7063 PTE 2810100028101
    Oops: 000b [#1] SMP KASAN
    Dumping ftrace buffer:
    (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 17663 Comm: syz-executor2 Not tainted 4.16.0-rc7+ #368
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__memmove+0x24/0x1a0 arch/x86/lib/memmove_64.S:43
    RSP: 0018:ffff8801cc046e28 EFLAGS: 00010287
    RAX: ffff8801ccc244c4 RBX: fffffffffffffffe RCX: fffffffffff6c4c2
    RDX: fffffffffffffffe RSI: ffff8801cccb7ffc RDI: ffff8801cccb8000
    RBP: ffff8801cc046e48 R08: ffff8801ccc244be R09: ffffed0039984899
    R10: 0000000000000001 R11: ffffed0039984898 R12: ffff8801ccc244c4
    R13: ffff8801ccc244c0 R14: ffff8801d96b7c06 R15: ffff8801d96b7b40
    FS: 00007febd562d700(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffff8801cccb8000 CR3: 00000001ccb2f006 CR4: 00000000001606e0
    DR0: 0000000020000000 DR1: 0000000020000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000600
    Call Trace:
    memmove include/linux/string.h:360 [inline]
    skb_reorder_vlan_header net/core/skbuff.c:5031 [inline]
    skb_vlan_untag+0x470/0xc40 net/core/skbuff.c:5061
    __netif_receive_skb_core+0x119c/0x3460 net/core/dev.c:4460
    __netif_receive_skb+0x2c/0x1b0 net/core/dev.c:4627
    netif_receive_skb_internal+0x10b/0x670 net/core/dev.c:4701
    netif_receive_skb+0xae/0x390 net/core/dev.c:4725
    tun_rx_batched.isra.50+0x5ee/0x870 drivers/net/tun.c:1555
    tun_get_user+0x299e/0x3c20 drivers/net/tun.c:1962
    tun_chr_write_iter+0xb9/0x160 drivers/net/tun.c:1990
    call_write_iter include/linux/fs.h:1782 [inline]
    new_sync_write fs/read_write.c:469 [inline]
    __vfs_write+0x684/0x970 fs/read_write.c:482
    vfs_write+0x189/0x510 fs/read_write.c:544
    SYSC_write fs/read_write.c:589 [inline]
    SyS_write+0xef/0x220 fs/read_write.c:581
    do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
    entry_SYSCALL_64_after_hwframe+0x42/0xb7
    RIP: 0033:0x454879
    RSP: 002b:00007febd562cc68 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 00007febd562d6d4 RCX: 0000000000454879
    RDX: 0000000000000157 RSI: 0000000020000180 RDI: 0000000000000014
    RBP: 000000000072bea0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00000000000006b0 R14: 00000000006fc120 R15: 0000000000000000
    Code: 90 90 90 90 90 90 90 48 89 f8 48 83 fa 20 0f 82 03 01 00 00 48 39 fe 7d 0f 49 89 f0 49 01 d0 49 39 f8 0f 8f 9f 00 00 00 48 89 d1 a4 c3 48 81 fa a8 02 00 00 72 05 40 38 fe 74 3b 48 83 ea 20
    RIP: __memmove+0x24/0x1a0 arch/x86/lib/memmove_64.S:43 RSP: ffff8801cc046e28
    CR2: ffff8801cccb8000
    ====

    We don't need to copy headers for packets which do not have preceding
    headers of vlan headers, so skip memmove() in that case.

    Fixes: 4bbb3e0e8239 ("net: Fix vlan untag for bridge and vlan_dev with reorder_hdr off")
    Reported-by: Eric Dumazet
    Signed-off-by: Toshiaki Makita
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Toshiaki Makita
     
  • [ Upstream commit b85ab56c3f81c5a24b5a5213374f549df06430da ]

    llc_conn_send_pdu() pushes the skb into write queue and
    calls llc_conn_send_pdus() to flush them out. However, the
    status of dev_queue_xmit() is not returned to caller,
    in this case, llc_conn_state_process().

    llc_conn_state_process() needs hold the skb no matter
    success or failure, because it still uses it after that,
    therefore we should hold skb before dev_queue_xmit() when
    that skb is the one being processed by llc_conn_state_process().

    For other callers, they can just pass NULL and ignore
    the return value as they are.

    Reported-by: Noam Rathaus
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Cong Wang
     
  • [ Upstream commit a752c0a4524889cdc0765925258fd1fd72344100 ]

    DHCP connectivity issues can currently occur if the following conditions
    are met:

    1) A DHCP packet from a client to a server
    2) This packet has a multicast destination
    3) This destination has a matching entry in the translation table
    (FF:FF:FF:FF:FF:FF for IPv4, 33:33:00:01:00:02/33:33:00:01:00:03
    for IPv6)
    4) The orig-node determined by TT for the multicast destination
    does not match the orig-node determined by best-gateway-selection

    In this case the DHCP packet will be dropped.

    The "gateway-out-of-range" check is supposed to only be applied to
    unicasted DHCP packets to a specific DHCP server.

    In that case dropping the the unicasted frame forces the client to
    retry via a broadcasted one, but now directed to the new best
    gateway.

    A DHCP packet with broadcast/multicast destination is already ensured to
    always be delivered to the best gateway. Dropping a multicasted
    DHCP packet here will only prevent completing DHCP as there is no
    other fallback.

    So far, it seems the unicast check was implicitly performed by
    expecting the batadv_transtable_search() to return NULL for multicast
    destinations. However, a multicast address could have always ended up in
    the translation table and in fact is now common.

    To fix this potential loss of a DHCP client-to-server packet to a
    multicast address this patch adds an explicit multicast destination
    check to reliably bail out of the gateway-out-of-range check for such
    destinations.

    The issue and fix were tested in the following three node setup:

    - Line topology, A-B-C
    - A: gateway client, DHCP client
    - B: gateway server, hop-penalty increased: 30->60, DHCP server
    - C: gateway server, code modifications to announce FF:FF:FF:FF:FF:FF

    Without this patch, A would never transmit its DHCP Discover packet
    due to an always "out-of-range" condition. With this patch,
    a full DHCP handshake between A and B was possible again.

    Fixes: be7af5cf9cae ("batman-adv: refactoring gateway handling code")
    Signed-off-by: Linus Lüssing
    Signed-off-by: Sven Eckelmann
    Signed-off-by: Simon Wunderlich
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Linus Lüssing
     
  • [ Upstream commit f8fb3419ead44f9a3136995acd24e35da4525177 ]

    For multicast frames AP isolation is only supposed to be checked on
    the receiving nodes and never on the originating one.

    Furthermore, the isolation or wifi flag bits should only be intepreted
    as such for unicast and never multicast TT entries.

    By injecting flags to the multicast TT entry claimed by a single
    target node it was verified in tests that this multicast address
    becomes unreachable, leading to packet loss.

    Omitting the "src" parameter to the batadv_transtable_search() call
    successfully skipped the AP isolation check and made the target
    reachable again.

    Fixes: 1d8ab8d3c176 ("batman-adv: Modified forwarding behaviour for multicast packets")
    Signed-off-by: Linus Lüssing
    Signed-off-by: Sven Eckelmann
    Signed-off-by: Simon Wunderlich
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Linus Lüssing
     
  • [ Upstream commit 9a3fb9fb84cc30577c1b012a6a3efda944684291 ]

    A recent commit introduced a new struct xfrm_trans_cb
    that is used with the sk_buff control buffer. Unfortunately
    it placed the structure in front of the control buffer and
    overlooked that the IPv4/IPv6 control buffer is still needed
    for some layer 4 protocols. As a result the IPv4/IPv6 control
    buffer is overwritten with this structure. Fix this by setting
    a apropriate header in front of the structure.

    Fixes acf568ee859f ("xfrm: Reinject transport-mode packets ...")
    Signed-off-by: Steffen Klassert
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Steffen Klassert
     
  • [ Upstream commit f29cdfbe33d6915ba8056179b0041279a67e3647 ]

    tcf_skbmod_init() can fail after the idr has been successfully reserved.
    When this happens, every subsequent attempt to configure skbmod rules
    using the same idr value will systematically fail with -ENOSPC, unless
    the first attempt was done using the 'replace' keyword:

    # tc action add action skbmod swap mac index 100
    RTNETLINK answers: Cannot allocate memory
    We have an error talking to the kernel
    # tc action add action skbmod swap mac index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    # tc action add action skbmod swap mac index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    ...

    Fix this in tcf_skbmod_init(), ensuring that tcf_idr_release() is called
    on the error path when the idr has been reserved, but not yet inserted.
    Also, don't test 'ovr' in the error path, to avoid a 'replace' failure
    implicitly become a 'delete' that leaks refcount in act_skbmod module:

    # rmmod act_skbmod; modprobe act_skbmod
    # tc action add action skbmod swap mac index 100
    # tc action add action skbmod swap mac continue index 100
    RTNETLINK answers: File exists
    We have an error talking to the kernel
    # tc action replace action skbmod swap mac continue index 100
    RTNETLINK answers: Cannot allocate memory
    We have an error talking to the kernel
    # tc action list action skbmod
    #
    # rmmod act_skbmod
    rmmod: ERROR: Module act_skbmod is in use

    Fixes: 65a206c01e8e ("net/sched: Change act_api and act_xxx modules to use IDR")
    Acked-by: Jamal Hadi Salim
    Signed-off-by: Davide Caratti
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Davide Caratti
     
  • [ Upstream commit 1e46ef1762bb2e52f0f996131a4d16ed4e9fd065 ]

    __tcf_ipt_init() can fail after the idr has been successfully reserved.
    When this happens, subsequent attempts to configure xt/ipt rules using
    the same idr value systematically fail with -ENOSPC:

    # tc action add action xt -j LOG --log-prefix test1 index 100
    tablename: mangle hook: NF_IP_POST_ROUTING
    target: LOG level warning prefix "test1" index 100
    RTNETLINK answers: Cannot allocate memory
    We have an error talking to the kernel
    Command "(null)" is unknown, try "tc actions help".
    # tc action add action xt -j LOG --log-prefix test1 index 100
    tablename: mangle hook: NF_IP_POST_ROUTING
    target: LOG level warning prefix "test1" index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    Command "(null)" is unknown, try "tc actions help".
    # tc action add action xt -j LOG --log-prefix test1 index 100
    tablename: mangle hook: NF_IP_POST_ROUTING
    target: LOG level warning prefix "test1" index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    ...

    Fix this in the error path of __tcf_ipt_init(), calling tcf_idr_release()
    in place of tcf_idr_cleanup(). Since tcf_ipt_release() can now be called
    when tcfi_t is NULL, we also need to protect calls to ipt_destroy_target()
    to avoid NULL pointer dereference.

    Fixes: 65a206c01e8e ("net/sched: Change act_api and act_xxx modules to use IDR")
    Acked-by: Jamal Hadi Salim
    Signed-off-by: Davide Caratti
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Davide Caratti
     
  • [ Upstream commit 94fa3f929ec0c048b1f3658cc335b940df4f6d22 ]

    tcf_pedit_init() can fail to allocate 'keys' after the idr has been
    successfully reserved. When this happens, subsequent attempts to configure
    a pedit rule using the same idr value systematically fail with -ENOSPC:

    # tc action add action pedit munge ip ttl set 63 index 100
    RTNETLINK answers: Cannot allocate memory
    We have an error talking to the kernel
    # tc action add action pedit munge ip ttl set 63 index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    # tc action add action pedit munge ip ttl set 63 index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    ...

    Fix this in the error path of tcf_act_pedit_init(), calling
    tcf_idr_release() in place of tcf_idr_cleanup().

    Fixes: 65a206c01e8e ("net/sched: Change act_api and act_xxx modules to use IDR")
    Acked-by: Jamal Hadi Salim
    Signed-off-by: Davide Caratti
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Davide Caratti
     
  • [ Upstream commit 5bf7f8185f7c7112decdfe3d3e5c5d5e67f099a1 ]

    tcf_act_police_init() can fail after the idr has been successfully
    reserved (e.g., qdisc_get_rtab() may return NULL). When this happens,
    subsequent attempts to configure a police rule using the same idr value
    systematiclly fail with -ENOSPC:

    # tc action add action police rate 1000 burst 1000 drop index 100
    RTNETLINK answers: Cannot allocate memory
    We have an error talking to the kernel
    # tc action add action police rate 1000 burst 1000 drop index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    # tc action add action police rate 1000 burst 1000 drop index 100
    RTNETLINK answers: No space left on device
    ...

    Fix this in the error path of tcf_act_police_init(), calling
    tcf_idr_release() in place of tcf_idr_cleanup().

    Fixes: 65a206c01e8e ("net/sched: Change act_api and act_xxx modules to use IDR")
    Acked-by: Jamal Hadi Salim
    Signed-off-by: Davide Caratti
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Davide Caratti
     
  • [ Upstream commit 60e10b3adc3bac0f6a894c28e0eb1f2d13607362 ]

    if the kernel fails to duplicate 'sdata', creation of a new action fails
    with -ENOMEM. However, subsequent attempts to install the same action
    using the same value of 'index' systematically fail with -ENOSPC, and
    that value of 'index' will no more be usable by act_simple, until rmmod /
    insmod of act_simple.ko is done:

    # tc actions add action simple sdata hello index 100
    # tc actions list action simple

    action order 0: Simple
    index 100 ref 1 bind 0
    # tc actions flush action simple
    # tc actions add action simple sdata hello index 100
    RTNETLINK answers: Cannot allocate memory
    We have an error talking to the kernel
    # tc actions flush action simple
    # tc actions add action simple sdata hello index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    # tc actions add action simple sdata hello index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel
    ...

    Fix this in the error path of tcf_simp_init(), calling tcf_idr_release()
    in place of tcf_idr_cleanup().

    Fixes: 65a206c01e8e ("net/sched: Change act_api and act_xxx modules to use IDR")
    Suggested-by: Cong Wang
    Acked-by: Jamal Hadi Salim
    Signed-off-by: Davide Caratti
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Davide Caratti
     
  • [ Upstream commit bbc09e7842a5023ba5bc0f8d559b9dd464e44006 ]

    when the following command sequence is entered

    # tc action add action bpf bytecode '4,40 0 0 12,31 0 1 2048,6 0 0 262144,6 0 0 0' index 100
    RTNETLINK answers: Invalid argument
    We have an error talking to the kernel
    # tc action add action bpf bytecode '4,40 0 0 12,21 0 1 2048,6 0 0 262144,6 0 0 0' index 100
    RTNETLINK answers: No space left on device
    We have an error talking to the kernel

    act_bpf correctly refuses to install the first TC rule, because 31 is not
    a valid instruction. However, it refuses to install the second TC rule,
    even if the BPF code is correct. Furthermore, it's no more possible to
    install any other rule having the same value of 'index' until act_bpf
    module is unloaded/inserted again. After the idr has been reserved, call
    tcf_idr_release() instead of tcf_idr_cleanup(), to fix this issue.

    Fixes: 65a206c01e8e ("net/sched: Change act_api and act_xxx modules to use IDR")
    Acked-by: Jamal Hadi Salim
    Signed-off-by: Davide Caratti
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Davide Caratti
     
  • [ Upstream commit f8a554b4aa9686bb2c12f6bae516e58783289a03 ]

    We shouldn't allow a tunnel to have IP_MAX_MTU as MTU, because
    another IPv6 header is going on top of our packets. Without this
    patch, we might end up building packets bigger than IP_MAX_MTU.

    Fixes: b96f9afee4eb ("ipv4/6: use core net MTU range checking")
    Signed-off-by: Stefano Brivio
    Acked-by: Sabrina Dubroca
    Signed-off-by: Steffen Klassert
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Stefano Brivio
     
  • [ Upstream commit 03080e5ec72740c1a62e6730f2a5f3f114f11b19 ]

    Don't hardcode a MTU value on vti tunnel initialization,
    ip_tunnel_newlink() is able to deal with this already. See also
    commit ffc2b6ee4174 ("ip_gre: fix IFLA_MTU ignored on NEWLINK").

    Fixes: 1181412c1a67 ("net/ipv4: VTI support new module for ip_vti.")
    Signed-off-by: Stefano Brivio
    Acked-by: Sabrina Dubroca
    Signed-off-by: Steffen Klassert
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Stefano Brivio
     
  • [ Upstream commit 24fc79798b8ddfd46f2dd363a8d29072c083b977 ]

    Otherwise, it's possible to specify invalid MTU values directly
    on creation of a link (via 'ip link add'). This is already
    prevented on subsequent MTU changes by commit b96f9afee4eb
    ("ipv4/6: use core net MTU range checking").

    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Signed-off-by: Stefano Brivio
    Acked-by: Sabrina Dubroca
    Signed-off-by: Steffen Klassert
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Stefano Brivio
     
  • [ Upstream commit dd1df24737727e119c263acf1be2a92763938297 ]

    This re-introduces the effect of commit a32452366b72 ("vti4:
    Don't count header length twice.") which was accidentally
    reverted by merge commit f895f0cfbb77 ("Merge branch 'master' of
    git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec").

    The commit message from Steffen Klassert said:

    We currently count the size of LL_MAX_HEADER and struct iphdr
    twice for vti4 devices, this leads to a wrong device mtu.
    The size of LL_MAX_HEADER and struct iphdr is already counted in
    ip_tunnel_bind_dev(), so don't do it again in vti_tunnel_init().

    And this is still the case now: ip_tunnel_bind_dev() already
    accounts for the header length of the link layer (not
    necessarily LL_MAX_HEADER, if the output device is found), plus
    one IP header.

    For example, with a vti device on top of veth, with MTU of 1500,
    the existing implementation would set the initial vti MTU to
    1332, accounting once for LL_MAX_HEADER (128, included in
    hard_header_len by vti) and twice for the same IP header (once
    from hard_header_len, once from ip_tunnel_bind_dev()).

    It should instead be 1480, because ip_tunnel_bind_dev() is able
    to figure out that the output device is veth, so no additional
    link layer header is attached, and will properly count one
    single IP header.

    The existing issue had the side effect of avoiding PMTUD for
    most xfrm policies, by arbitrarily lowering the initial MTU.
    However, the only way to get a consistent PMTU value is to let
    the xfrm PMTU discovery do its course, and commit d6af1a31cc72
    ("vti: Add pmtu handling to vti_xmit.") now takes care of local
    delivery cases where the application ignores local socket
    notifications.

    Fixes: b9959fd3b0fa ("vti: switch to new ip tunnel code")
    Fixes: f895f0cfbb77 ("Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec")
    Signed-off-by: Stefano Brivio
    Acked-by: Sabrina Dubroca
    Signed-off-by: Steffen Klassert
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Stefano Brivio
     
  • [ Upstream commit fc04fdb2c8a894283259f5621d31d75610701091 ]

    batadv_check_unicast_ttvn may redirect a packet to itself or another
    originator. This involves rewriting the ttvn and the destination address in
    the batadv unicast header. These field were not yet pulled (with skb rcsum
    update) and thus any change to them also requires a change in the receive
    checksum.

    Reported-by: Matthias Schiffer
    Fixes: a73105b8d4c7 ("batman-adv: improved client announcement mechanism")
    Signed-off-by: Sven Eckelmann
    Signed-off-by: Simon Wunderlich
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Sven Eckelmann
     
  • [ Upstream commit 1f110e7cae09e6c6a144616480d1a9dd99c5208a ]

    when the following command

    # tc action add action sample rate 100 group 100 index 100

    is run for the first time, and psample_group_get(100) fails to create a
    new group, tcf_sample_cleanup() calls psample_group_put(NULL), thus
    causing the following error:

    BUG: unable to handle kernel NULL pointer dereference at 000000000000001c
    IP: psample_group_put+0x15/0x71 [psample]
    PGD 8000000075775067 P4D 8000000075775067 PUD 7453c067 PMD 0
    Oops: 0002 [#1] SMP PTI
    Modules linked in: act_sample(E) psample ip6table_filter ip6_tables iptable_filter binfmt_misc ext4 snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hda_core mbcache jbd2 crct10dif_pclmul snd_hwdep crc32_pclmul snd_seq ghash_clmulni_intel pcbc snd_seq_device snd_pcm aesni_intel crypto_simd snd_timer glue_helper snd cryptd joydev pcspkr i2c_piix4 soundcore virtio_balloon nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c ata_generic pata_acpi qxl drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm virtio_net ata_piix virtio_console virtio_blk libata serio_raw crc32c_intel virtio_pci i2c_core virtio_ring virtio floppy dm_mirror dm_region_hash dm_log dm_mod [last unloaded: act_tunnel_key]
    CPU: 2 PID: 5740 Comm: tc Tainted: G E 4.16.0-rc4.act_vlan.orig+ #403
    Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
    RIP: 0010:psample_group_put+0x15/0x71 [psample]
    RSP: 0018:ffffb8a80032f7d0 EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000024
    RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffffffffc06d93c0
    RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000044
    R10: 00000000bd003000 R11: ffff979fba04aa59 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: ffff979fbba3f22c
    FS: 00007f7638112740(0000) GS:ffff979fbfd00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000000000001c CR3: 00000000734ea001 CR4: 00000000001606e0
    Call Trace:
    __tcf_idr_release+0x79/0xf0
    tcf_sample_init+0x125/0x1d0 [act_sample]
    tcf_action_init_1+0x2cc/0x430
    tcf_action_init+0xd3/0x1b0
    tc_ctl_action+0x18b/0x240
    rtnetlink_rcv_msg+0x29c/0x310
    ? _cond_resched+0x15/0x30
    ? __kmalloc_node_track_caller+0x1b9/0x270
    ? rtnl_calcit.isra.28+0x100/0x100
    netlink_rcv_skb+0xd2/0x110
    netlink_unicast+0x17c/0x230
    netlink_sendmsg+0x2cd/0x3c0
    sock_sendmsg+0x30/0x40
    ___sys_sendmsg+0x27a/0x290
    ? filemap_map_pages+0x34a/0x3a0
    ? __handle_mm_fault+0xbfd/0xe20
    __sys_sendmsg+0x51/0x90
    do_syscall_64+0x6e/0x1a0
    entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x7f7637523ba0
    RSP: 002b:00007fff0473ef58 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00007fff0473f080 RCX: 00007f7637523ba0
    RDX: 0000000000000000 RSI: 00007fff0473efd0 RDI: 0000000000000003
    RBP: 000000005aaaac80 R08: 0000000000000002 R09: 0000000000000000
    R10: 00007fff0473e9e0 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007fff0473f094 R14: 0000000000000001 R15: 0000000000669f60
    Code: be 02 00 00 00 48 89 df e8 a9 fe ff ff e9 7c ff ff ff 0f 1f 40 00 0f 1f 44 00 00 53 48 89 fb 48 c7 c7 c0 93 6d c0 e8 db 20 8c ef 6b 1c 01 74 10 48 c7 c7 c0 93 6d c0 ff 14 25 e8 83 83 b0 5b
    RIP: psample_group_put+0x15/0x71 [psample] RSP: ffffb8a80032f7d0
    CR2: 000000000000001c

    Fix it in tcf_sample_cleanup(), ensuring that calls to psample_group_put(p)
    are done only when p is not NULL.

    Fixes: cadb9c9fdbc6 ("net/sched: act_sample: Fix error path in init")
    Signed-off-by: Davide Caratti
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Davide Caratti
     
  • [ Upstream commit 6f27d2c2a8c236d296201c19abb8533ec20d212b ]

    Checking for 0 is insufficient: when an SKB without a batadv header, but
    with a VLAN header is received, hdr_size will be 4, making the following
    code interpret the Ethernet header as a batadv header.

    Fixes: be1db4f6615b ("batman-adv: make the Distributed ARP Table vlan aware")
    Signed-off-by: Matthias Schiffer
    Signed-off-by: Sven Eckelmann
    Signed-off-by: Simon Wunderlich
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Matthias Schiffer
     
  • [ Upstream commit cbe7128c4b92e2004984f477fd38dfa81662f02e ]

    With reorder header off, received packets are untagged in skb_vlan_untag()
    called from within __netif_receive_skb_core(), and later the tag will be
    inserted back in vlan_do_receive().

    This caused out of order vlan headers when we create a vlan device on top
    of another vlan device, because vlan_do_receive() inserts a tag as the
    outermost vlan tag. E.g. the outer tag is first removed in skb_vlan_untag()
    and inserted back in vlan_do_receive(), then the inner tag is next removed
    and inserted back as the outermost tag.

    This patch fixes the behaviour by inserting the inner tag at the right
    position.

    Signed-off-by: Toshiaki Makita
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Toshiaki Makita
     
  • [ Upstream commit 4bbb3e0e8239f9079bf1fe20b3c0cb598714ae61 ]

    When we have a bridge with vlan_filtering on and a vlan device on top of
    it, packets would be corrupted in skb_vlan_untag() called from
    br_dev_xmit().

    The problem sits in skb_reorder_vlan_header() used in skb_vlan_untag(),
    which makes use of skb->mac_len. In this function mac_len is meant for
    handling rx path with vlan devices with reorder_header disabled, but in
    tx path mac_len is typically 0 and cannot be used, which is the problem
    in this case.

    The current code even does not properly handle rx path (skb_vlan_untag()
    called from __netif_receive_skb_core()) with reorder_header off actually.

    In rx path single tag case, it works as follows:

    - Before skb_reorder_vlan_header()

    mac_header data
    v v
    +-------------------+-------------+------+----
    | ETH | VLAN | ETH |
    | ADDRS | TPID | TCI | TYPE |
    +-------------------+-------------+------+----


    to be removed

    - After skb_reorder_vlan_header()

    mac_header data
    v v
    +-------------------+------+----
    | ETH | ETH |
    | ADDRS | TYPE |
    +-------------------+------+----

    This is ok, but in rx double tag case, it corrupts packets:

    - Before skb_reorder_vlan_header()

    mac_header data
    v v
    +-------------------+-------------+-------------+------+----
    | ETH | VLAN | VLAN | ETH |
    | ADDRS | TPID | TCI | TPID | TCI | TYPE |
    +-------------------+-------------+-------------+------+----


    should be removed

    actually will be removed

    - After skb_reorder_vlan_header()

    mac_header data
    v v
    +-------------------+------+----
    | ETH | ETH |
    | ADDRS | TYPE |
    +-------------------+------+----

    So, two of vlan tags are both removed while only inner one should be
    removed and mac_header (and mac_len) is broken.

    skb_vlan_untag() is meant for removing the vlan header at (skb->data - 2),
    so use skb->data and skb->mac_header to calculate the right offset.

    Reported-by: Brandon Carpenter
    Fixes: a6e18ff11170 ("vlan: Fix untag operations of stacked vlans with REORDER_HEADER off")
    Signed-off-by: Toshiaki Makita
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Toshiaki Makita
     
  • [ Upstream commit 46c0ef6e1eb95f619d9f62da4332749153db92f7 ]

    In the xfrm_local_error, rcu_read_unlock should be called when afinfo
    is not NULL. because xfrm_state_get_afinfo calls rcu_read_unlock
    if afinfo is NULL.

    Fixes: af5d27c4e12b ("xfrm: remove xfrm_state_put_afinfo")
    Signed-off-by: Taehee Yoo
    Signed-off-by: Steffen Klassert
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Taehee Yoo
     
  • [ Upstream commit d52e5a7e7ca49457dd31fc8b42fb7c0d58a31221 ]

    Prior to the rework of PMTU information storage in commit
    2c8cec5c10bc ("ipv4: Cache learned PMTU information in inetpeer."),
    when a PMTU event advertising a PMTU smaller than
    net.ipv4.route.min_pmtu was received, we would disable setting the DF
    flag on packets by locking the MTU metric, and set the PMTU to
    net.ipv4.route.min_pmtu.

    Since then, we don't disable DF, and set PMTU to
    net.ipv4.route.min_pmtu, so the intermediate router that has this link
    with a small MTU will have to drop the packets.

    This patch reestablishes pre-2.6.39 behavior by splitting
    rtable->rt_pmtu into a bitfield with rt_mtu_locked and rt_pmtu.
    rt_mtu_locked indicates that we shouldn't set the DF bit on that path,
    and is checked in ip_dont_fragment().

    One possible workaround is to set net.ipv4.route.min_pmtu to a value low
    enough to accommodate the lowest MTU encountered.

    Fixes: 2c8cec5c10bc ("ipv4: Cache learned PMTU information in inetpeer.")
    Signed-off-by: Sabrina Dubroca
    Reviewed-by: Stefano Brivio
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Sabrina Dubroca
     
  • [ Upstream commit 932909d9b28d27e807ff8eecb68c7748f6701628 ]

    The last rule in the blob has next_entry offset that is same as total size.
    This made "ebtables32 -A OUTPUT -d de:ad:be:ef:01:02" fail on 64 bit kernel.

    Fixes: b71812168571fa ("netfilter: ebtables: CONFIG_COMPAT: don't trust userland offsets")
    Signed-off-by: Florian Westphal
    Signed-off-by: Pablo Neira Ayuso
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Florian Westphal
     
  • [ Upstream commit 74c12c630fe310eb7fcae1b292257d47781fff0a ]

    As the kernel doc describes too the code is supposed to skip adding
    multicast TT entries if both the WANT_ALL_IPV4 and WANT_ALL_IPV6 flags
    are present.

    Unfortunately, the current code even skips adding multicast TT entries
    if only either the WANT_ALL_IPV4 or WANT_ALL_IPV6 is present.

    This could lead to IPv6 multicast packet loss if only an IGMP but not an
    MLD querier is present for instance or vice versa.

    Fixes: 687937ab3489 ("batman-adv: Add multicast optimization support for bridged setups")
    Signed-off-by: Linus Lüssing
    Signed-off-by: Sven Eckelmann
    Signed-off-by: Simon Wunderlich
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Linus Lüssing
     
  • [ Upstream commit 84eef2b2187ed73c0e4520cbfeb874e964a0b56a ]

    Commit 0933a578cd55 ("rds: tcp: use sock_create_lite() to create the
    accept socket") has a reference counting issue in TCP socket creation
    when accepting a new connection. The code uses sock_create_lite() to
    create a kernel socket. But it does not do __module_get() on the
    socket owner. When the connection is shutdown and sock_release() is
    called to free the socket, the owner's reference count is decremented
    and becomes incorrect. Note that this bug only shows up when the socket
    owner is configured as a kernel module.

    v2: Update comments

    Fixes: 0933a578cd55 ("rds: tcp: use sock_create_lite() to create the accept socket")
    Signed-off-by: Ka-Cheong Poon
    Acked-by: Santosh Shilimkar
    Acked-by: Sowmini Varadhan
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Ka-Cheong Poon
     
  • [ Upstream commit a6d50512b4d86ecd9f5952525e454583be1c3b14 ]

    If ethtool_ops->get_fecparam returns an error, pass that error on to the
    user, rather than ignoring it.

    Fixes: 1a5f3da20bd9 ("net: ethtool: add support for forward error correction modes")
    Signed-off-by: Edward Cree
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Edward Cree
     
  • [ Upstream commit b8b549eec8187ac1b12075d69a2d84d89b5e811a ]

    When IPsec offloading was introduced, we accidentally incremented
    the sequence number counter on the xfrm_state by one packet
    too much in the ESN case. This leads to a sequence number gap of
    one packet after each GSO packet. Fix this by setting the sequence
    number to the correct value.

    Fixes: d7dbefc45cf5 ("xfrm: Add xfrm_replay_overflow functions for offloading")
    Signed-off-by: Steffen Klassert
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Steffen Klassert
     
  • [ Upstream commit 8a949fff0302b50063f74bb345a66190015528d0 ]

    The IPS_NAT_MASK check in 4.12 replaced previous check for nfct_nat()
    which was needed to fix a crash in 2.6.36-rc, see
    commit 7bcbf81a2296 ("ipvs: avoid oops for passive FTP").
    But as IPVS does not set the IPS_SRC_NAT and IPS_DST_NAT bits,
    checking for IPS_NAT_MASK prevents PASV response to be properly
    mangled and blocks the transfer. Remove the check as it is not
    needed after 3.12 commit 41d73ec053d2 ("netfilter: nf_conntrack:
    make sequence number adjustments usuable without NAT") which
    changes nfct_nat() with nfct_seqadj() and especially after 3.13
    commit b25adce16064 ("ipvs: correct usage/allocation of seqadj
    ext in ipvs").

    Thanks to Li Shuang and Florian Westphal for reporting the problem!

    Reported-by: Li Shuang
    Fixes: be7be6e161a2 ("netfilter: ipvs: fix incorrect conflict resolution")
    Signed-off-by: Julian Anastasov
    Acked-by: Simon Horman
    Signed-off-by: Pablo Neira Ayuso
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Julian Anastasov
     
  • [ Upstream commit 2be922f31606f114119f48de3207d122a90e7357 ]

    The CONFIRM LINK reply message must contain the link_id sent
    by the server. And set the link_id explicitly when
    initializing the link.

    Signed-off-by: Karsten Graul
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Karsten Graul
     
  • [ Upstream commit ecc832758a654e375924ebf06a4ac971acb5ce60 ]

    The link to the pdf containing the algorithm description is now a
    dead link; it seems http://www.ifp.illinois.edu/~srikant/ has been
    moved to https://sites.google.com/a/illinois.edu/srikant/ and none of
    the original papers can be found there...

    I have replaced it with the only working copy I was able to find.

    n.b. there is also a copy available at:

    http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.296.6350&rep=rep1&type=pdf

    However, this seems to only be a *cached* version, so I am unsure
    exactly how reliable that link can be expected to remain over time
    and have decided against using that one.

    Signed-off-by: Joey Pabalinas

    net/ipv4/tcp_illinois.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Joey Pabalinas
     
  • [ Upstream commit 2b3957c34b6d7f03544b12ebbf875eee430745db ]

    Commit 128bb975dc3c ("ip6_gre: init dev->mtu and dev->hard_header_len
    correctly") fixed IFLA_MTU ignored on NEWLINK for ip6_gre. The same
    mtu fix is also needed for sit.

    Note that dev->hard_header_len setting for sit works fine, no need to
    fix it. sit is actually ipv4 tunnel, it can't call ip6_tnl_change_mtu
    to set mtu.

    Reported-by: Jianlin Shi
    Signed-off-by: Xin Long
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Xin Long
     
  • [ Upstream commit a6aa80446234ec0ad38eecdb8efc59e91daae565 ]

    Commit 128bb975dc3c ("ip6_gre: init dev->mtu and dev->hard_header_len
    correctly") fixed IFLA_MTU ignored on NEWLINK for ip6_gre. The same
    mtu fix is also needed for ip6_tunnel.

    Note that dev->hard_header_len setting for ip6_tunnel works fine,
    no need to fix it.

    Reported-by: Jianlin Shi
    Signed-off-by: Xin Long
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Xin Long
     
  • [ Upstream commit ffc2b6ee417435605ee8bb1eb4c8f02e9ff4b4a5 ]

    It's safe to remove the setting of dev's needed_headroom and mtu in
    __gre_tunnel_init, as discussed in [1], ip_tunnel_newlink can do it
    properly.

    Now Eric noticed that it could cover the mtu value set in do_setlink
    when creating a ip_gre dev. It makes IFLA_MTU param not take effect.

    So this patch is to remove them to make IFLA_MTU work, as in other
    ipv4 tunnels.

    [1]: https://patchwork.ozlabs.org/patch/823504/

    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Reported-by: Eric Garver
    Signed-off-by: Xin Long
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Xin Long
     
  • [ Upstream commit c77f5fbbefc04612755117775e8555c2a7006cac ]

    Added MODULE_ALIAS("rpmsg:IPCRTR") to ensure qrtr-smd and qrtr will load
    when IPCRTR channel is detected.

    Signed-off-by: Ramon Fried
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Ramon Fried