1. 27 Feb, 2019 40 commits
    • Alexey Brodkin's avatar
      ARC: define ARCH_SLAB_MINALIGN = 8 · 238209c6
      Alexey Brodkin authored
      commit b6835ea7 upstream.
      
      The default value of ARCH_SLAB_MINALIGN in "include/linux/slab.h" is
      "__alignof__(unsigned long long)" which for ARC unexpectedly turns out
      to be 4. This is not a compiler bug, but as defined by ARC ABI [1]
      
      Thus slab allocator would allocate a struct which is 32-bit aligned,
      which is generally OK even if struct has long long members.
      There was however potetial problem when it had any atomic64_t which
      use LLOCKD/SCONDD instructions which are required by ISA to take
      64-bit addresses. This is the problem we ran into
      
      [    4.015732] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
      [    4.167881] Misaligned Access
      [    4.172356] Path: /bin/busybox.nosuid
      [    4.176004] CPU: 2 PID: 171 Comm: rm Not tainted 4.19.14-yocto-standard #1
      [    4.182851]
      [    4.182851] [ECR   ]: 0x000d0000 => Check Programmer's Manual
      [    4.190061] [EFA   ]: 0xbeaec3fc
      [    4.190061] [BLINK ]: ext4_delete_entry+0x210/0x234
      [    4.190061] [ERET  ]: ext4_delete_entry+0x13e/0x234
      [    4.202985] [STAT32]: 0x80080002 : IE K
      [    4.207236] BTA: 0x9009329c   SP: 0xbe5b1ec4  FP: 0x00000000
      [    4.212790] LPS: 0x9074b118  LPE: 0x9074b120 LPC: 0x00000000
      [    4.218348] r00: 0x00000040  r01: 0x00000021 r02: 0x00000001
      ...
      ...
      [    4.270510] Stack Trace:
      [    4.274510]   ext4_delete_entry+0x13e/0x234
      [    4.278695]   ext4_rmdir+0xe0/0x238
      [    4.282187]   vfs_rmdir+0x50/0xf0
      [    4.285492]   do_rmdir+0x9e/0x154
      [    4.288802]   EV_Trap+0x110/0x114
      
      The fix is to make sure slab allocations are 64-bit aligned.
      
      Do note that atomic64_t is __attribute__((aligned(8)) which means gcc
      does generate 64-bit aligned references, relative to beginning of
      container struct. However the issue is if the container itself is not
      64-bit aligned, atomic64_t ends up unaligned which is what this patch
      ensures.
      
      [1] https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/wiki/files/ARCv2_ABI.pdfSigned-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Cc: <stable@vger.kernel.org> # 4.8+
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      [vgupta: reworked changelog, added dependency on LL64+LLSC]
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      238209c6
    • Eugeniy Paltsev's avatar
      ARC: U-boot: check arguments paranoidly · e7264579
      Eugeniy Paltsev authored
      commit a66f2e57 upstream.
      
      Handle U-boot arguments paranoidly:
       * don't allow to pass unknown tag.
       * try to use external device tree blob only if corresponding tag
         (TAG_DTB) is set.
       * don't check uboot_tag if kernel build with no ARC_UBOOT_SUPPORT.
      
      NOTE:
      If U-boot args are invalid we skip them and try to use embedded device
      tree blob. We can't panic on invalid U-boot args as we really pass
      invalid args due to bug in U-boot code.
      This happens if we don't provide external DTB to U-boot and
      don't set 'bootargs' U-boot environment variable (which is default
      case at least for HSDK board) In that case we will pass
      {r0 = 1 (bootargs in r2); r1 = 0; r2 = 0;} to linux which is invalid.
      
      While I'm at it refactor U-boot arguments handling code.
      
      Cc: stable@vger.kernel.org
      Tested-by: default avatarCorentin LABBE <clabbe@baylibre.com>
      Signed-off-by: default avatarEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e7264579
    • Eugeniy Paltsev's avatar
      ARCv2: Enable unaligned access in early ASM code · 1f448141
      Eugeniy Paltsev authored
      commit 252f6e8e upstream.
      
      It is currently done in arc_init_IRQ() which might be too late
      considering gcc 7.3.1 onwards (GNU 2018.03) generates unaligned
      memory accesses by default
      
      Cc: stable@vger.kernel.org #4.4+
      Signed-off-by: default avatarEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
      [vgupta: rewrote changelog]
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1f448141
    • Dmitry V. Levin's avatar
      parisc: Fix ptrace syscall number modification · bc423b65
      Dmitry V. Levin authored
      commit b7dc5a07 upstream.
      
      Commit 910cd32e ("parisc: Fix and enable seccomp filter support")
      introduced a regression in ptrace-based syscall tampering: when tracer
      changes syscall number to -1, the kernel fails to initialize %r28 with
      -ENOSYS and subsequently fails to return the error code of the failed
      syscall to userspace.
      
      This erroneous behaviour could be observed with a simple strace syscall
      fault injection command which is expected to print something like this:
      
      $ strace -a0 -ewrite -einject=write:error=enospc echo hello
      write(1, "hello\n", 6) = -1 ENOSPC (No space left on device) (INJECTED)
      write(2, "echo: ", 6) = -1 ENOSPC (No space left on device) (INJECTED)
      write(2, "write error", 11) = -1 ENOSPC (No space left on device) (INJECTED)
      write(2, "\n", 1) = -1 ENOSPC (No space left on device) (INJECTED)
      +++ exited with 1 +++
      
      After commit 910cd32e it loops printing
      something like this instead:
      
      write(1, "hello\n", 6../strace: Failed to tamper with process 12345: unexpectedly got no error (return value 0, error 0)
      ) = 0 (INJECTED)
      
      This bug was found by strace test suite.
      
      Fixes: 910cd32e ("parisc: Fix and enable seccomp filter support")
      Cc: stable@vger.kernel.org # v4.5+
      Signed-off-by: default avatarDmitry V. Levin <ldv@altlinux.org>
      Tested-by: default avatarHelge Deller <deller@gmx.de>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bc423b65
    • Eric Biggers's avatar
      KEYS: always initialize keyring_index_key::desc_len · 50d039d9
      Eric Biggers authored
      commit ede0fa98 upstream.
      
      syzbot hit the 'BUG_ON(index_key->desc_len == 0);' in __key_link_begin()
      called from construct_alloc_key() during sys_request_key(), because the
      length of the key description was never calculated.
      
      The problem is that we rely on ->desc_len being initialized by
      search_process_keyrings(), specifically by search_nested_keyrings().
      But, if the process isn't subscribed to any keyrings that never happens.
      
      Fix it by always initializing keyring_index_key::desc_len as soon as the
      description is set, like we already do in some places.
      
      The following program reproduces the BUG_ON() when it's run as root and
      no session keyring has been installed.  If it doesn't work, try removing
      pam_keyinit.so from /etc/pam.d/login and rebooting.
      
          #include <stdlib.h>
          #include <unistd.h>
          #include <keyutils.h>
      
          int main(void)
          {
                  int id = add_key("keyring", "syz", NULL, 0, KEY_SPEC_USER_KEYRING);
      
                  keyctl_setperm(id, KEY_OTH_WRITE);
                  setreuid(5000, 5000);
                  request_key("user", "desc", "", id);
          }
      
      Reported-by: syzbot+ec24e95ea483de0a24da@syzkaller.appspotmail.com
      Fixes: b2a4df20 ("KEYS: Expand the capacity of a keyring")
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJames Morris <james.morris@microsoft.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      50d039d9
    • Eric Biggers's avatar
      KEYS: user: Align the payload buffer · 56a682bd
      Eric Biggers authored
      commit cc1780fc upstream.
      
      Align the payload of "user" and "logon" keys so that users of the
      keyrings service can access it as a struct that requires more than
      2-byte alignment.  fscrypt currently does this which results in the read
      of fscrypt_key::size being misaligned as it needs 4-byte alignment.
      
      Align to __alignof__(u64) rather than __alignof__(long) since in the
      future it's conceivable that people would use structs beginning with
      u64, which on some platforms would require more than 'long' alignment.
      Reported-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
      Fixes: 2aa349f6 ("[PATCH] Keys: Export user-defined keyring operations")
      Fixes: 88bd6ccd ("ext4 crypto: add encryption key management facilities")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarJames Morris <james.morris@microsoft.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      56a682bd
    • Bart Van Assche's avatar
      RDMA/srp: Rework SCSI device reset handling · 4040907e
      Bart Van Assche authored
      commit 48396e80 upstream.
      
      Since .scsi_done() must only be called after scsi_queue_rq() has
      finished, make sure that the SRP initiator driver does not call
      .scsi_done() while scsi_queue_rq() is in progress. Although
      invoking sg_reset -d while I/O is in progress works fine with kernel
      v4.20 and before, that is not the case with kernel v5.0-rc1. This
      patch avoids that the following crash is triggered with kernel
      v5.0-rc1:
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000138
      CPU: 0 PID: 360 Comm: kworker/0:1H Tainted: G    B             5.0.0-rc1-dbg+ #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
      Workqueue: kblockd blk_mq_run_work_fn
      RIP: 0010:blk_mq_dispatch_rq_list+0x116/0xb10
      Call Trace:
       blk_mq_sched_dispatch_requests+0x2f7/0x300
       __blk_mq_run_hw_queue+0xd6/0x180
       blk_mq_run_work_fn+0x27/0x30
       process_one_work+0x4f1/0xa20
       worker_thread+0x67/0x5b0
       kthread+0x1cf/0x1f0
       ret_from_fork+0x24/0x30
      
      Cc: <stable@vger.kernel.org>
      Fixes: 94a9174c ("IB/srp: reduce lock coverage of command completion")
      Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4040907e
    • Konstantin Khlebnikov's avatar
      inet_diag: fix reporting cgroup classid and fallback to priority · 3daca16b
      Konstantin Khlebnikov authored
      [ Upstream commit 1ec17dbd ]
      
      Field idiag_ext in struct inet_diag_req_v2 used as bitmap of requested
      extensions has only 8 bits. Thus extensions starting from DCTCPINFO
      cannot be requested directly. Some of them included into response
      unconditionally or hook into some of lower 8 bits.
      
      Extension INET_DIAG_CLASS_ID has not way to request from the beginning.
      
      This patch bundle it with INET_DIAG_TCLASS (ipv6 tos), fixes space
      reservation, and documents behavior for other extensions.
      
      Also this patch adds fallback to reporting socket priority. This filed
      is more widely used for traffic classification because ipv4 sockets
      automatically maps TOS to priority and default qdisc pfifo_fast knows
      about that. But priority could be changed via setsockopt SO_PRIORITY so
      INET_DIAG_TOS isn't enough for predicting class.
      
      Also cgroup2 obsoletes net_cls classid (it always zero), but we cannot
      reuse this field for reporting cgroup2 id because it is 64-bit (ino+gen).
      
      So, after this patch INET_DIAG_CLASS_ID will report socket priority
      for most common setup when net_cls isn't set and/or cgroup2 in use.
      
      Fixes: 0888e372 ("net: inet: diag: expose sockets cgroup classid")
      Signed-off-by: default avatarKonstantin Khlebnikov <khlebnikov@yandex-team.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3daca16b
    • Saeed Mahameed's avatar
      net/mlx4_en: Force CHECKSUM_NONE for short ethernet frames · fde4151c
      Saeed Mahameed authored
      [ Upstream commit 29dded89 ]
      
      When an ethernet frame is padded to meet the minimum ethernet frame
      size, the padding octets are not covered by the hardware checksum.
      Fortunately the padding octets are usually zero's, which don't affect
      checksum. However, it is not guaranteed. For example, switches might
      choose to make other use of these octets.
      This repeatedly causes kernel hardware checksum fault.
      
      Prior to the cited commit below, skb checksum was forced to be
      CHECKSUM_NONE when padding is detected. After it, we need to keep
      skb->csum updated. However, fixing up CHECKSUM_COMPLETE requires to
      verify and parse IP headers, it does not worth the effort as the packets
      are so small that CHECKSUM_COMPLETE has no significant advantage.
      
      Future work: when reporting checksum complete is not an option for
      IP non-TCP/UDP packets, we can actually fallback to report checksum
      unnecessary, by looking at cqe IPOK bit.
      
      Fixes: 88078d98 ("net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends")
      Cc: Eric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarTariq Toukan <tariqt@mellanox.com>
      Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fde4151c
    • Hangbin Liu's avatar
      sit: check if IPv6 enabled before calling ip6_err_gen_icmpv6_unreach() · 67b46230
      Hangbin Liu authored
      [ Upstream commit 173656ac ]
      
      If we disabled IPv6 from the kernel command line (ipv6.disable=1), we should
      not call ip6_err_gen_icmpv6_unreach(). This:
      
        ip link add sit1 type sit local 192.0.2.1 remote 192.0.2.2 ttl 1
        ip link set sit1 up
        ip addr add 198.51.100.1/24 dev sit1
        ping 198.51.100.2
      
      if IPv6 is disabled at boot time, will crash the kernel.
      
      v2: there's no need to use in6_dev_get(), use __in6_dev_get() instead,
          as we only need to check that idev exists and we are under
          rcu_read_lock() (from netif_receive_skb_internal()).
      Reported-by: default avatarJianlin Shi <jishi@redhat.com>
      Fixes: ca15a078 ("sit: generate icmpv6 error when receiving icmpv4 error")
      Cc: Oussama Ghorbel <ghorbel@pivasoftware.com>
      Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
      Reviewed-by: default avatarStefano Brivio <sbrivio@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      67b46230
    • Cong Wang's avatar
      team: avoid complex list operations in team_nl_cmd_options_set() · 90dbd485
      Cong Wang authored
      [ Upstream commit 2fdeee25 ]
      
      The current opt_inst_list operations inside team_nl_cmd_options_set()
      is too complex to track:
      
          LIST_HEAD(opt_inst_list);
          nla_for_each_nested(...) {
              list_for_each_entry(opt_inst, &team->option_inst_list, list) {
                  if (__team_option_inst_tmp_find(&opt_inst_list, opt_inst))
                      continue;
                  list_add(&opt_inst->tmp_list, &opt_inst_list);
              }
          }
          team_nl_send_event_options_get(team, &opt_inst_list);
      
      as while we retrieve 'opt_inst' from team->option_inst_list, it could
      be added to the local 'opt_inst_list' for multiple times. The
      __team_option_inst_tmp_find() doesn't work, as the setter
      team_mode_option_set() still calls team->ops.exit() which uses
      ->tmp_list too in __team_options_change_check().
      
      Simplify the list operations by moving the 'opt_inst_list' and
      team_nl_send_event_options_get() into the nla_for_each_nested() loop so
      that it can be guranteed that we won't insert a same list entry for
      multiple times. Therefore, __team_option_inst_tmp_find() can be removed
      too.
      
      Fixes: 4fb0534f ("team: avoid adding twice the same option to the event list")
      Fixes: 2fcdb2c9 ("team: allow to send multiple set events in one message")
      Reported-by: syzbot+4d4af685432dc0e56c91@syzkaller.appspotmail.com
      Reported-by: syzbot+68ee510075cf64260cc4@syzkaller.appspotmail.com
      Cc: Jiri Pirko <jiri@resnulli.us>
      Cc: Paolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Reviewed-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      90dbd485
    • Xin Long's avatar
      sctp: call gso_reset_checksum when computing checksum in sctp_gso_segment · 77278f05
      Xin Long authored
      [ Upstream commit fc228abc ]
      
      Jianlin reported a panic when running sctp gso over gre over vlan device:
      
        [   84.772930] RIP: 0010:do_csum+0x6d/0x170
        [   84.790605] Call Trace:
        [   84.791054]  csum_partial+0xd/0x20
        [   84.791657]  gre_gso_segment+0x2c3/0x390
        [   84.792364]  inet_gso_segment+0x161/0x3e0
        [   84.793071]  skb_mac_gso_segment+0xb8/0x120
        [   84.793846]  __skb_gso_segment+0x7e/0x180
        [   84.794581]  validate_xmit_skb+0x141/0x2e0
        [   84.795297]  __dev_queue_xmit+0x258/0x8f0
        [   84.795949]  ? eth_header+0x26/0xc0
        [   84.796581]  ip_finish_output2+0x196/0x430
        [   84.797295]  ? skb_gso_validate_network_len+0x11/0x80
        [   84.798183]  ? ip_finish_output+0x169/0x270
        [   84.798875]  ip_output+0x6c/0xe0
        [   84.799413]  ? ip_append_data.part.50+0xc0/0xc0
        [   84.800145]  iptunnel_xmit+0x144/0x1c0
        [   84.800814]  ip_tunnel_xmit+0x62d/0x930 [ip_tunnel]
        [   84.801699]  gre_tap_xmit+0xac/0xf0 [ip_gre]
        [   84.802395]  dev_hard_start_xmit+0xa5/0x210
        [   84.803086]  sch_direct_xmit+0x14f/0x340
        [   84.803733]  __dev_queue_xmit+0x799/0x8f0
        [   84.804472]  ip_finish_output2+0x2e0/0x430
        [   84.805255]  ? skb_gso_validate_network_len+0x11/0x80
        [   84.806154]  ip_output+0x6c/0xe0
        [   84.806721]  ? ip_append_data.part.50+0xc0/0xc0
        [   84.807516]  sctp_packet_transmit+0x716/0xa10 [sctp]
        [   84.808337]  sctp_outq_flush+0xd7/0x880 [sctp]
      
      It was caused by SKB_GSO_CB(skb)->csum_start not set in sctp_gso_segment.
      sctp_gso_segment() calls skb_segment() with 'feature | NETIF_F_HW_CSUM',
      which causes SKB_GSO_CB(skb)->csum_start not to be set in skb_segment().
      
      For TCP/UDP, when feature supports HW_CSUM, CHECKSUM_PARTIAL will be set
      and gso_reset_checksum will be called to set SKB_GSO_CB(skb)->csum_start.
      
      So SCTP should do the same as TCP/UDP, to call gso_reset_checksum() when
      computing checksum in sctp_gso_segment.
      Reported-by: default avatarJianlin Shi <jishi@redhat.com>
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      77278f05
    • Russell King's avatar
      net: sfp: do not probe SFP module before we're attached · c4ba68b8
      Russell King authored
      [ Upstream commit b5bfc21a ]
      
      When we probe a SFP module, we expect to be able to call the upstream
      device's module_insert() function so that the upstream link can be
      configured.  However, when the upstream device is delayed, we currently
      may end up probing the module before the upstream device is available,
      and lose the module_insert() call.
      
      Avoid this by holding off probing the module until the SFP bus is
      properly connected to both the SFP socket driver and the upstream
      driver.
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c4ba68b8
    • Kal Conley's avatar
      net/packet: fix 4gb buffer limit due to overflow check · 2226f959
      Kal Conley authored
      [ Upstream commit fc62814d ]
      
      When calculating rb->frames_per_block * req->tp_block_nr the result
      can overflow. Check it for overflow without limiting the total buffer
      size to UINT_MAX.
      
      This change fixes support for packet ring buffers >= UINT_MAX.
      
      Fixes: 8f8d28e4 ("net/packet: fix overflow in check for tp_frame_nr")
      Signed-off-by: default avatarKal Conley <kal.conley@dectris.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2226f959
    • Tonghao Zhang's avatar
      net/mlx5e: Don't overwrite pedit action when multiple pedit used · 7c3969ff
      Tonghao Zhang authored
      [ Upstream commit 218d05ce ]
      
      In some case, we may use multiple pedit actions to modify packets.
      The command shown as below: the last pedit action is effective.
      
      $ tc filter add dev netdev_rep parent ffff: protocol ip prio 1    \
      	flower skip_sw ip_proto icmp dst_ip 3.3.3.3        \
      	action pedit ex munge ip dst set 192.168.1.100 pipe    \
      	action pedit ex munge eth src set 00:00:00:00:00:01 pipe    \
      	action pedit ex munge eth dst set 00:00:00:00:00:02 pipe    \
      	action csum ip pipe    \
      	action tunnel_key set src_ip 1.1.1.100 dst_ip 1.1.1.200 dst_port 4789 id 100 \
      	action mirred egress redirect dev vxlan0
      
      To fix it, we add max_mod_hdr_actions to mlx5e_tc_flow_parse_attr struction,
      max_mod_hdr_actions will store the max pedit action number we support and
      num_mod_hdr_actions indicates how many pedit action we used, and store all
      pedit action to mod_hdr_actions.
      
      Fixes: d79b6df6 ("net/mlx5e: Add parsing of TC pedit actions to HW format")
      Cc: Or Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarTonghao Zhang <xiangxia.m.yue@gmail.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Acked-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7c3969ff
    • Li RongQing's avatar
      ipv6: propagate genlmsg_reply return code · bb506ddb
      Li RongQing authored
      [ Upstream commit d1f20798 ]
      
      genlmsg_reply can fail, so propagate its return code
      
      Fixes: 915d7e5e ("ipv6: sr: add code base for control plane support of SR-IPv6")
      Signed-off-by: default avatarLi RongQing <lirongqing@baidu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bb506ddb
    • Eric Dumazet's avatar
      batman-adv: fix uninit-value in batadv_interface_tx() · f08f5424
      Eric Dumazet authored
      [ Upstream commit 4ffcbfac ]
      
      KMSAN reported batadv_interface_tx() was possibly using a
      garbage value [1]
      
      batadv_get_vid() does have a pskb_may_pull() call
      but batadv_interface_tx() does not actually make sure
      this did not fail.
      
      [1]
      BUG: KMSAN: uninit-value in batadv_interface_tx+0x908/0x1e40 net/batman-adv/soft-interface.c:231
      CPU: 0 PID: 10006 Comm: syz-executor469 Not tainted 4.20.0-rc7+ #5
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x173/0x1d0 lib/dump_stack.c:113
       kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
       __msan_warning+0x82/0xf0 mm/kmsan/kmsan_instr.c:313
       batadv_interface_tx+0x908/0x1e40 net/batman-adv/soft-interface.c:231
       __netdev_start_xmit include/linux/netdevice.h:4356 [inline]
       netdev_start_xmit include/linux/netdevice.h:4365 [inline]
       xmit_one net/core/dev.c:3257 [inline]
       dev_hard_start_xmit+0x607/0xc40 net/core/dev.c:3273
       __dev_queue_xmit+0x2e42/0x3bc0 net/core/dev.c:3843
       dev_queue_xmit+0x4b/0x60 net/core/dev.c:3876
       packet_snd net/packet/af_packet.c:2928 [inline]
       packet_sendmsg+0x8306/0x8f30 net/packet/af_packet.c:2953
       sock_sendmsg_nosec net/socket.c:621 [inline]
       sock_sendmsg net/socket.c:631 [inline]
       __sys_sendto+0x8c4/0xac0 net/socket.c:1788
       __do_sys_sendto net/socket.c:1800 [inline]
       __se_sys_sendto+0x107/0x130 net/socket.c:1796
       __x64_sys_sendto+0x6e/0x90 net/socket.c:1796
       do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
       entry_SYSCALL_64_after_hwframe+0x63/0xe7
      RIP: 0033:0x441889
      Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 bb 10 fc ff c3 66 2e 0f 1f 84 00 00 00 00
      RSP: 002b:00007ffdda6fd468 EFLAGS: 00000216 ORIG_RAX: 000000000000002c
      RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 0000000000441889
      RDX: 000000000000000e RSI: 00000000200000c0 RDI: 0000000000000003
      RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000216 R12: 00007ffdda6fd4c0
      R13: 00007ffdda6fd4b0 R14: 0000000000000000 R15: 0000000000000000
      
      Uninit was created at:
       kmsan_save_stack_with_flags mm/kmsan/kmsan.c:204 [inline]
       kmsan_internal_poison_shadow+0x92/0x150 mm/kmsan/kmsan.c:158
       kmsan_kmalloc+0xa6/0x130 mm/kmsan/kmsan_hooks.c:176
       kmsan_slab_alloc+0xe/0x10 mm/kmsan/kmsan_hooks.c:185
       slab_post_alloc_hook mm/slab.h:446 [inline]
       slab_alloc_node mm/slub.c:2759 [inline]
       __kmalloc_node_track_caller+0xe18/0x1030 mm/slub.c:4383
       __kmalloc_reserve net/core/skbuff.c:137 [inline]
       __alloc_skb+0x309/0xa20 net/core/skbuff.c:205
       alloc_skb include/linux/skbuff.h:998 [inline]
       alloc_skb_with_frags+0x1c7/0xac0 net/core/skbuff.c:5220
       sock_alloc_send_pskb+0xafd/0x10e0 net/core/sock.c:2083
       packet_alloc_skb net/packet/af_packet.c:2781 [inline]
       packet_snd net/packet/af_packet.c:2872 [inline]
       packet_sendmsg+0x661a/0x8f30 net/packet/af_packet.c:2953
       sock_sendmsg_nosec net/socket.c:621 [inline]
       sock_sendmsg net/socket.c:631 [inline]
       __sys_sendto+0x8c4/0xac0 net/socket.c:1788
       __do_sys_sendto net/socket.c:1800 [inline]
       __se_sys_sendto+0x107/0x130 net/socket.c:1796
       __x64_sys_sendto+0x6e/0x90 net/socket.c:1796
       do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
       entry_SYSCALL_64_after_hwframe+0x63/0xe7
      
      Fixes: c6c8fea2 ("net: Add batman-adv meshing protocol")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Cc:	Marek Lindner <mareklindner@neomailbox.ch>
      Cc:	Simon Wunderlich <sw@simonwunderlich.de>
      Cc:	Antonio Quartulli <a@unstable.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f08f5424
    • Nathan Chancellor's avatar
      isdn: avm: Fix string plus integer warning from Clang · 3cbc51d6
      Nathan Chancellor authored
      [ Upstream commit 7afa81c5 ]
      
      A recent commit in Clang expanded the -Wstring-plus-int warning, showing
      some odd behavior in this file.
      
      drivers/isdn/hardware/avm/b1.c:426:30: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
                      cinfo->version[j] = "\0\0" + 1;
                                          ~~~~~~~^~~
      drivers/isdn/hardware/avm/b1.c:426:30: note: use array indexing to silence this warning
                      cinfo->version[j] = "\0\0" + 1;
                                                 ^
                                          &      [  ]
      1 warning generated.
      
      This is equivalent to just "\0". Nick pointed out that it is smarter to
      use "" instead of "\0" because "" is used elsewhere in the kernel and
      can be deduplicated at the linking stage.
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/309Suggested-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: default avatarNathan Chancellor <natechancellor@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      3cbc51d6
    • Tariq Toukan's avatar
      net/mlx5e: Fix wrong (zero) TX drop counter indication for representor · 1bbc4cbe
      Tariq Toukan authored
      [ Upstream commit 7fdc1adc ]
      
      For representors, the TX dropped counter is not folded from the
      per-ring counters. Fix it.
      Signed-off-by: default avatarTariq Toukan <tariqt@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      1bbc4cbe
    • Ido Schimmel's avatar
      mlxsw: spectrum_switchdev: Do not treat static FDB entries as sticky · 91252e8e
      Ido Schimmel authored
      [ Upstream commit 64254a20 ]
      
      The driver currently treats static FDB entries as both static and
      sticky. This is incorrect and prevents such entries from being roamed to
      a different port via learning.
      
      Fix this by configuring static entries with ageing disabled and roaming
      enabled.
      
      In net-next we can add proper support for the newly introduced 'sticky'
      flag.
      
      Fixes: 56ade8fe ("mlxsw: spectrum: Add initial support for Spectrum ASIC")
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Reported-by: default avatarAlexander Petrovskiy <alexpe@mellanox.com>
      Reviewed-by: default avatarPetr Machata <petrm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      91252e8e
    • Peter Oskolkov's avatar
      bpf: bpf_setsockopt: reset sock dst on SO_MARK changes · f040249c
      Peter Oskolkov authored
      [ Upstream commit f4924f24 ]
      
      In sock_setsockopt() (net/core/sock.h), when SO_MARK option is used
      to change sk_mark, sk_dst_reset(sk) is called. The same should be
      done in bpf_setsockopt().
      
      Fixes: 8c4b4c7e ("bpf: Add setsockopt helper function to bpf")
      Reported-by: default avatarMaciej Żenczykowski <maze@google.com>
      Signed-off-by: default avatarPeter Oskolkov <posk@google.com>
      Acked-by: default avatarMartin KaFai Lau <kafai@fb.com>
      Reviewed-by: default avatarMaciej Żenczykowski <maze@google.com>
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f040249c
    • Kangjie Lu's avatar
      leds: lp5523: fix a missing check of return value of lp55xx_read · caa27a81
      Kangjie Lu authored
      [ Upstream commit 248b5701 ]
      
      When lp55xx_read() fails, "status" is an uninitialized variable and thus
      may contain random value; using it leads to undefined behaviors.
      
      The fix inserts a check for the return value of lp55xx_read: if it
      fails, returns with its error code.
      Signed-off-by: default avatarKangjie Lu <kjlu@umn.edu>
      Signed-off-by: default avatarJacek Anaszewski <jacek.anaszewski@gmail.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      caa27a81
    • Cheng-Min Ao's avatar
      hwmon: (tmp421) Correct the misspelling of the tmp442 compatible attribute in OF device ID table · 733d1915
      Cheng-Min Ao authored
      [ Upstream commit f422449b ]
      
      Correct a typo in OF device ID table
      The last one should be 'ti,tmp442'
      Signed-off-by: default avatarCheng-Min Ao <tony_ao@wiwynn.com>
      Signed-off-by: default avatarYu-Hsiang Chen <matt_chen@wiwynn.com>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      733d1915
    • Colin Ian King's avatar
      atm: he: fix sign-extension overflow on large shift · e5d7ffde
      Colin Ian King authored
      [ Upstream commit cb12d72b ]
      
      Shifting the 1 by exp by an int can lead to sign-extension overlow when
      exp is 31 since 1 is an signed int and sign-extending this result to an
      unsigned long long will set the upper 32 bits.  Fix this by shifting an
      unsigned long.
      
      Detected by cppcheck:
      (warning) Shifting signed 32-bit value by 31 bits is undefined behaviour
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      e5d7ffde
    • Julia Lawall's avatar
      drm/meson: add missing of_node_put · 170c7106
      Julia Lawall authored
      [ Upstream commit f672b93e ]
      
      Add an of_node_put when the result of of_graph_get_remote_port_parent is
      not available.
      
      An of_node_put is also needed when meson_probe_remote completes.  This was
      present at the recursive call, but not in the call from meson_drv_probe.
      
      The semantic match that finds this problem is as follows
      (http://coccinelle.lip6.fr):
      
      // <smpl>
      @r exists@
      local idexpression e;
      expression x;
      @@
      e = of_graph_get_remote_port_parent(...);
      ... when != x = e
          when != true e == NULL
          when != of_node_put(e)
          when != of_fwnode_handle(e)
      (
      return e;
      |
      *return ...;
      )
      // </smpl>
      Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
      Acked-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
      Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1547372691-28324-4-git-send-email-Julia.Lawall@lip6.frSigned-off-by: default avatarSasha Levin <sashal@kernel.org>
      170c7106
    • Talons Lee's avatar
      always clear the X2APIC_ENABLE bit for PV guest · b226fe95
      Talons Lee authored
      [ Upstream commit 5268c8f3 ]
      
      Commit e657fccb clears cpu capability bit instead of using fake cpuid
      value, the EXTD should always be off for PV guest without depending
      on cpuid value. So remove the cpuid check in xen_read_msr_safe() to
      always clear the X2APIC_ENABLE bit.
      Signed-off-by: default avatarTalons Lee <xin.li@citrix.com>
      Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
      Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      b226fe95
    • Manish Rangankar's avatar
      scsi: qedi: Add ep_state for login completion on un-reachable targets · 88c55679
      Manish Rangankar authored
      [ Upstream commit 34a2ce88 ]
      
      When the driver finds invalid destination MAC for the first un-reachable
      target, and before completes the PATH_REQ operation, set new ep_state to
      OFFLDCONN_NONE so that as part of driver ep_poll mechanism, the upper
      open-iscsi layer is notified to complete the login process on the first
      un-reachable target and thus proceed login to other reachable targets.
      Signed-off-by: default avatarManish Rangankar <mrangankar@marvell.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      88c55679
    • Stanley Chu's avatar
      scsi: ufs: Fix system suspend status · f7e2a385
      Stanley Chu authored
      [ Upstream commit ce9e7bce ]
      
      hba->is_sys_suspended is set after successful system suspend but
      not clear after successful system resume.
      
      According to current behavior, hba->is_sys_suspended will not be set if
      host is runtime-suspended but not system-suspended. Thus we shall aligh the
      same policy: clear this flag even if host remains runtime-suspended after
      ufshcd_system_resume is successfully returned.
      
      Simply fix this flag to correct host status logs.
      Signed-off-by: default avatarStanley Chu <stanley.chu@mediatek.com>
      Reviewed-by: default avatarAvri Altman <avri.altman@wdc.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f7e2a385
    • Jia-Ju Bai's avatar
      isdn: i4l: isdn_tty: Fix some concurrency double-free bugs · 64717501
      Jia-Ju Bai authored
      [ Upstream commit 2ff33d66 ]
      
      The functions isdn_tty_tiocmset() and isdn_tty_set_termios() may be
      concurrently executed.
      
      isdn_tty_tiocmset
        isdn_tty_modem_hup
          line 719: kfree(info->dtmf_state);
          line 721: kfree(info->silence_state);
          line 723: kfree(info->adpcms);
          line 725: kfree(info->adpcmr);
      
      isdn_tty_set_termios
        isdn_tty_modem_hup
          line 719: kfree(info->dtmf_state);
          line 721: kfree(info->silence_state);
          line 723: kfree(info->adpcms);
          line 725: kfree(info->adpcmr);
      
      Thus, some concurrency double-free bugs may occur.
      
      These possible bugs are found by a static tool written by myself and
      my manual code review.
      
      To fix these possible bugs, the mutex lock "modem_info_mutex" used in
      isdn_tty_tiocmset() is added in isdn_tty_set_termios().
      Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      64717501
    • Jose Abreu's avatar
      net: stmmac: Fix PCI module removal leak · 486942ea
      Jose Abreu authored
      [ Upstream commit 6dea7e18 ]
      
      Since commit b7d0f08e, the enable / disable of PCI device is not
      managed which will result in IO regions not being automatically unmapped.
      As regions continue mapped it is currently not possible to remove and
      then probe again the PCI module of stmmac.
      
      Fix this by manually unmapping regions on remove callback.
      
      Changes from v1:
      - Fix build error
      
      Cc: Joao Pinto <jpinto@synopsys.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
      Cc: Alexandre Torgue <alexandre.torgue@st.com>
      Fixes: b7d0f08e ("net: stmmac: Fix WoL for PCI-based setups")
      Signed-off-by: default avatarJose Abreu <joabreu@synopsys.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      486942ea
    • Yuchung Cheng's avatar
      bpf: correctly set initial window on active Fast Open sender · b1bf951d
      Yuchung Cheng authored
      [ Upstream commit 31aa6503 ]
      
      The existing BPF TCP initial congestion window (TCP_BPF_IW) does not
      to work on (active) Fast Open sender. This is because it changes the
      (initial) window only if data_segs_out is zero -- but data_segs_out
      is also incremented on SYN-data.  This patch fixes the issue by
      proerly accounting for SYN-data additionally.
      
      Fixes: fc747810 ("bpf: Adds support for setting initial cwnd")
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Reviewed-by: default avatarNeal Cardwell <ncardwell@google.com>
      Acked-by: default avatarLawrence Brakmo <brakmo@fb.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      b1bf951d
    • Thomas Bogendoerfer's avatar
      MIPS: jazz: fix 64bit build · d6e33e07
      Thomas Bogendoerfer authored
      [ Upstream commit 41af167f ]
      
      64bit JAZZ builds failed with
      
        linux-next/arch/mips/jazz/jazzdma.c: In function `vdma_init`:
        /linux-next/arch/mips/jazz/jazzdma.c:77:30: error: implicit declaration
          of function `KSEG1ADDR`; did you mean `CKSEG1ADDR`?
          [-Werror=implicit-function-declaration]
          pgtbl = (VDMA_PGTBL_ENTRY *)KSEG1ADDR(pgtbl);
                                      ^~~~~~~~~
                                      CKSEG1ADDR
        /linux-next/arch/mips/jazz/jazzdma.c:77:10: error: cast to pointer from
          integer of different size [-Werror=int-to-pointer-cast]
          pgtbl = (VDMA_PGTBL_ENTRY *)KSEG1ADDR(pgtbl);
                  ^
        In file included from /linux-next/arch/mips/include/asm/barrier.h:11:0,
                         from /linux-next/include/linux/compiler.h:248,
                         from /linux-next/include/linux/kernel.h:10,
                         from /linux-next/arch/mips/jazz/jazzdma.c:11:
        /linux-next/arch/mips/include/asm/addrspace.h:41:29: error: cast from
          pointer to integer of different size [-Werror=pointer-to-int-cast]
         #define _ACAST32_  (_ATYPE_)(_ATYPE32_) /* widen if necessary */
                                     ^
        /linux-next/arch/mips/include/asm/addrspace.h:53:25: note: in
          expansion of macro `_ACAST32_`
         #define CPHYSADDR(a)  ((_ACAST32_(a)) & 0x1fffffff)
                                 ^~~~~~~~~
        /linux-next/arch/mips/jazz/jazzdma.c:84:44: note: in expansion of
          macro `CPHYSADDR`
          r4030_write_reg32(JAZZ_R4030_TRSTBL_BASE, CPHYSADDR(pgtbl));
      
      Using correct casts and CKSEG1ADDR when dealing with the pgtbl setup
      fixes this.
      Signed-off-by: default avatarThomas Bogendoerfer <tbogendoerfer@suse.de>
      Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: James Hogan <jhogan@kernel.org>
      Cc: linux-mips@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d6e33e07
    • Logan Gunthorpe's avatar
      scsi: isci: initialize shost fully before calling scsi_add_host() · d8c1fc1b
      Logan Gunthorpe authored
      [ Upstream commit cc29a1b0 ]
      
      scsi_mq_setup_tags(), which is called by scsi_add_host(), calculates the
      command size to allocate based on the prot_capabilities. In the isci
      driver, scsi_host_set_prot() is called after scsi_add_host() so the command
      size gets calculated to be smaller than it needs to be.  Eventually,
      scsi_mq_init_request() locates the 'prot_sdb' after the command assuming it
      was sized correctly and a buffer overrun may occur.
      
      However, seeing blk_mq_alloc_rqs() rounds up to the nearest cache line
      size, the mistake can go unnoticed.
      
      The bug was noticed after the struct request size was reduced by commit
      9d037ad7 ("block: remove req->timeout_list")
      
      Which likely reduced the allocated space for the request by an entire cache
      line, enough that the overflow could be hit and it caused a panic, on boot,
      at:
      
        RIP: 0010:t10_pi_complete+0x77/0x1c0
        Call Trace:
          <IRQ>
          sd_done+0xf5/0x340
          scsi_finish_command+0xc3/0x120
          blk_done_softirq+0x83/0xb0
          __do_softirq+0xa1/0x2e6
          irq_exit+0xbc/0xd0
          call_function_single_interrupt+0xf/0x20
          </IRQ>
      
      sd_done() would call scsi_prot_sg_count() which reads the number of
      entities in 'prot_sdb', but seeing 'prot_sdb' is located after the end of
      the allocated space it reads a garbage number and erroneously calls
      t10_pi_complete().
      
      To prevent this, the calls to scsi_host_set_prot() are moved into
      isci_host_alloc() before the call to scsi_add_host(). Out of caution, also
      move the similar call to scsi_host_set_guard().
      
      Fixes: 3d2d7525 ("[SCSI] isci: T10 DIF support")
      Link: http://lkml.kernel.org/r/da851333-eadd-163a-8c78-e1f4ec5ec857@deltatee.comSigned-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
      Cc: Intel SCU Linux support <intel-linux-scu@intel.com>
      Cc: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
      Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
      Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Jeff Moyer <jmoyer@redhat.com>
      Reviewed-by: default avatarJeff Moyer <jmoyer@redhat.com>
      Reviewed-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d8c1fc1b
    • YueHaibing's avatar
      scsi: qla4xxx: check return code of qla4xxx_copy_from_fwddb_param · c9062c77
      YueHaibing authored
      [ Upstream commit 72b4a046 ]
      
      The return code should be check while qla4xxx_copy_from_fwddb_param fails.
      Signed-off-by: default avatarYueHaibing <yuehaibing@huawei.com>
      Acked-by: default avatarManish Rangankar <mrangankar@marvell.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      c9062c77
    • Taehee Yoo's avatar
      netfilter: nf_tables: fix leaking object reference count · 4c541a5a
      Taehee Yoo authored
      [ Upstream commit b91d9036 ]
      
      There is no code that decreases the reference count of stateful objects
      in error path of the nft_add_set_elem(). this causes a leak of reference
      count of stateful objects.
      
      Test commands:
         $nft add table ip filter
         $nft add counter ip filter c1
         $nft add map ip filter m1 { type ipv4_addr : counter \;}
         $nft add element ip filter m1 { 1 : c1 }
         $nft add element ip filter m1 { 1 : c1 }
         $nft delete element ip filter m1 { 1 }
         $nft delete counter ip filter c1
      
      Result:
         Error: Could not process rule: Device or resource busy
         delete counter ip filter c1
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      
      At the second 'nft add element ip filter m1 { 1 : c1 }', the reference
      count of the 'c1' is increased then it tries to insert into the 'm1'. but
      the 'm1' already has same element so it returns -EEXIST.
      But it doesn't decrease the reference count of the 'c1' in the error path.
      Due to a leak of the reference count of the 'c1', the 'c1' can't be
      removed by 'nft delete counter ip filter c1'.
      
      Fixes: 8aeff920 ("netfilter: nf_tables: add stateful object reference to set elements")
      Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      4c541a5a
    • Alban Bedel's avatar
      MIPS: ath79: Enable OF serial ports in the default config · 0fe178a7
      Alban Bedel authored
      [ Upstream commit 565dc8a4 ]
      
      CONFIG_SERIAL_OF_PLATFORM is needed to get a working console on the OF
      boards, enable it in the default config to get a working setup out of
      the box.
      Signed-off-by: default avatarAlban Bedel <albeu@free.fr>
      Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
      Cc: linux-mips@vger.kernel.org
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: James Hogan <jhogan@kernel.org>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      0fe178a7
    • Yonglong Liu's avatar
      net: hns: Fix use after free identified by SLUB debug · ada3ccb5
      Yonglong Liu authored
      [ Upstream commit bb989501 ]
      
      When enable SLUB debug, than remove hns_enet_drv module, SLUB debug will
      identify a use after free bug:
      
      [134.189505] Unable to handle kernel paging request at virtual address
      		006b6b6b6b6b6b6b
      [134.197553] Mem abort info:
      [134.200381]   ESR = 0x96000004
      [134.203487]   Exception class = DABT (current EL), IL = 32 bits
      [134.209497]   SET = 0, FnV = 0
      [134.212596]   EA = 0, S1PTW = 0
      [134.215777] Data abort info:
      [134.218701]   ISV = 0, ISS = 0x00000004
      [134.222596]   CM = 0, WnR = 0
      [134.225606] [006b6b6b6b6b6b6b] address between user and kernel address ranges
      [134.232851] Internal error: Oops: 96000004 [#1] SMP
      [134.237798] CPU: 21 PID: 27834 Comm: rmmod Kdump: loaded Tainted: G
      		OE     4.19.5-1.2.34.aarch64 #1
      [134.247856] Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.58 10/24/2018
      [134.255181] pstate: 20000005 (nzCv daif -PAN -UAO)
      [134.260044] pc : hns_ae_put_handle+0x38/0x60
      [134.264372] lr : hns_ae_put_handle+0x24/0x60
      [134.268700] sp : ffff00001be93c50
      [134.272054] x29: ffff00001be93c50 x28: ffff802faaec8040
      [134.277442] x27: 0000000000000000 x26: 0000000000000000
      [134.282830] x25: 0000000056000000 x24: 0000000000000015
      [134.288284] x23: ffff0000096fe098 x22: ffff000001050070
      [134.293671] x21: ffff801fb3c044a0 x20: ffff80afb75ec098
      [134.303287] x19: ffff80afb75ec098 x18: 0000000000000000
      [134.312945] x17: 0000000000000000 x16: 0000000000000000
      [134.322517] x15: 0000000000000002 x14: 0000000000000000
      [134.332030] x13: dead000000000100 x12: ffff7e02bea3c988
      [134.341487] x11: ffff80affbee9e68 x10: 0000000000000000
      [134.351033] x9 : 6fffff8000008101 x8 : 0000000000000000
      [134.360569] x7 : dead000000000100 x6 : ffff000009579748
      [134.370059] x5 : 0000000000210d00 x4 : 0000000000000000
      [134.379550] x3 : 0000000000000001 x2 : 0000000000000000
      [134.388813] x1 : 6b6b6b6b6b6b6b6b x0 : 0000000000000000
      [134.397993] Process rmmod (pid: 27834, stack limit = 0x00000000d474b7fd)
      [134.408498] Call trace:
      [134.414611]  hns_ae_put_handle+0x38/0x60
      [134.422208]  hnae_put_handle+0xd4/0x108
      [134.429563]  hns_nic_dev_remove+0x60/0xc0 [hns_enet_drv]
      [134.438342]  platform_drv_remove+0x2c/0x70
      [134.445958]  device_release_driver_internal+0x174/0x208
      [134.454810]  driver_detach+0x70/0xd8
      [134.461913]  bus_remove_driver+0x64/0xe8
      [134.469396]  driver_unregister+0x34/0x60
      [134.476822]  platform_driver_unregister+0x20/0x30
      [134.485130]  hns_nic_dev_driver_exit+0x14/0x6e4 [hns_enet_drv]
      [134.494634]  __arm64_sys_delete_module+0x238/0x290
      
      struct hnae_handle is a member of struct hnae_vf_cb, so when vf_cb is
      freed, than use hnae_handle will cause use after free panic.
      
      This patch frees vf_cb after hnae_handle used.
      Signed-off-by: default avatarYonglong Liu <liuyonglong@huawei.com>
      Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      ada3ccb5
    • Denis Bolotin's avatar
      qed: Fix qed_ll2_post_rx_buffer_notify_fw() by adding a write memory barrier · 10b1df19
      Denis Bolotin authored
      [ Upstream commit 46721c3d ]
      
      Make sure chain element is updated before ringing the doorbell.
      Signed-off-by: default avatarDenis Bolotin <dbolotin@marvell.com>
      Signed-off-by: default avatarAriel Elior <aelior@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      10b1df19
    • Denis Bolotin's avatar
      qed: Fix qed_chain_set_prod() for PBL chains with non power of 2 page count · a096429c
      Denis Bolotin authored
      [ Upstream commit 2d533a92 ]
      
      In PBL chains with non power of 2 page count, the producer is not at the
      beginning of the chain when index is 0 after a wrap. Therefore, after the
      producer index wrap around, page index should be calculated more carefully.
      Signed-off-by: default avatarDenis Bolotin <dbolotin@marvell.com>
      Signed-off-by: default avatarAriel Elior <aelior@marvell.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      a096429c
    • YueHaibing's avatar
      xen/pvcalls: remove set but not used variable 'intf' · 3abbc145
      YueHaibing authored
      [ Upstream commit 1f8ce09b ]
      
      Fixes gcc '-Wunused-but-set-variable' warning:
      
      drivers/xen/pvcalls-back.c: In function 'pvcalls_sk_state_change':
      drivers/xen/pvcalls-back.c:286:28: warning:
       variable 'intf' set but not used [-Wunused-but-set-variable]
      
      It not used since e6587cdb ("pvcalls-back: set -ENOTCONN in
      pvcalls_conn_back_read")
      Signed-off-by: default avatarYueHaibing <yuehaibing@huawei.com>
      Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      3abbc145