Skip to content
  1. Jul 05, 2024
    • Nathan Lynch's avatar
      powerpc/pseries: Enforce hcall result buffer validity and size · 19c166ee
      Nathan Lynch authored
      [ Upstream commit ff2e185c ]
      
      plpar_hcall(), plpar_hcall9(), and related functions expect callers to
      provide valid result buffers of certain minimum size. Currently this
      is communicated only through comments in the code and the compiler has
      no idea.
      
      For example, if I write a bug like this:
      
        long retbuf[PLPAR_HCALL_BUFSIZE]; // should be PLPAR_HCALL9_BUFSIZE
        plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, ...);
      
      This compiles with no diagnostics emitted, but likely results in stack
      corruption at runtime when plpar_hcall9() stores results past the end
      of the array. (To be clear this is a contrived example and I have not
      found a real instance yet.)
      
      To make this class of error less likely, we can use explicitly-sized
      array parameters instead of pointers in the declarations for the hcall
      APIs. When compiled with -Warray-bounds[1], the code above now
      provokes a diagnostic like this:
      
      error: array argument is too small;
      is of size 32, callee requires at least 72 [-Werror,-Warray-bounds]
         60 |                 plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf,
            |                 ^                                   ~~~~~~
      
      [1] Enabled for LLVM builds but not GCC for now. See commit
          0da6e5fd
      
       ("gcc: disable '-Warray-bounds' for gcc-13 too") and
          related changes.
      
      Signed-off-by: default avatarNathan Lynch <nathanl@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://msgid.link/20240408-pseries-hvcall-retbuf-v1-1-ebc73d7253cf@linux.ibm.com
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      19c166ee
    • Uri Arev's avatar
      Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl · 6eaaa1e4
      Uri Arev authored
      [ Upstream commit 68aa2105
      
       ]
      
      This fixes some CHECKs reported by the checkpatch script.
      
      Issues reported in ath3k.c:
      -------
      ath3k.c
      -------
      CHECK: Please don't use multiple blank lines
      +
      +
      
      CHECK: Blank lines aren't necessary after an open brace '{'
      +static const struct usb_device_id ath3k_blist_tbl[] = {
      +
      
      CHECK: Alignment should match open parenthesis
      +static int ath3k_load_firmware(struct usb_device *udev,
      +                               const struct firmware *firmware)
      
      CHECK: Alignment should match open parenthesis
      +               err = usb_bulk_msg(udev, pipe, send_buf, size,
      +                                       &len, 3000);
      
      CHECK: Unnecessary parentheses around 'len != size'
      +               if (err || (len != size)) {
      
      CHECK: Alignment should match open parenthesis
      +static int ath3k_get_version(struct usb_device *udev,
      +                       struct ath3k_version *version)
      
      CHECK: Alignment should match open parenthesis
      +static int ath3k_load_fwfile(struct usb_device *udev,
      +               const struct firmware *firmware)
      
      CHECK: Alignment should match open parenthesis
      +               err = usb_bulk_msg(udev, pipe, send_buf, size,
      +                                       &len, 3000);
      
      CHECK: Unnecessary parentheses around 'len != size'
      +               if (err || (len != size)) {
      
      CHECK: Blank lines aren't necessary after an open brace '{'
      +       switch (fw_version.ref_clock) {
      +
      
      CHECK: Alignment should match open parenthesis
      +       snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s",
      +               le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
      
      CHECK: Alignment should match open parenthesis
      +static int ath3k_probe(struct usb_interface *intf,
      +                       const struct usb_device_id *id)
      
      CHECK: Alignment should match open parenthesis
      +                       BT_ERR("Firmware file \"%s\" not found",
      +                                                       ATH3K_FIRMWARE);
      
      CHECK: Alignment should match open parenthesis
      +               BT_ERR("Firmware file \"%s\" request failed (err=%d)",
      +                                               ATH3K_FIRMWARE, ret);
      
      total: 0 errors, 0 warnings, 14 checks, 540 lines checked
      
      Signed-off-by: default avatarUri Arev <me@wantyapps.xyz>
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      6eaaa1e4
    • Manish Rangankar's avatar
      scsi: qedi: Fix crash while reading debugfs attribute · 21c963de
      Manish Rangankar authored
      [ Upstream commit 28027ec8
      
       ]
      
      The qedi_dbg_do_not_recover_cmd_read() function invokes sprintf() directly
      on a __user pointer, which results into the crash.
      
      To fix this issue, use a small local stack buffer for sprintf() and then
      call simple_read_from_buffer(), which in turns make the copy_to_user()
      call.
      
      BUG: unable to handle page fault for address: 00007f4801111000
      PGD 8000000864df6067 P4D 8000000864df6067 PUD 864df7067 PMD 846028067 PTE 0
      Oops: 0002 [#1] PREEMPT SMP PTI
      Hardware name: HPE ProLiant DL380 Gen10/ProLiant DL380 Gen10, BIOS U30 06/15/2023
      RIP: 0010:memcpy_orig+0xcd/0x130
      RSP: 0018:ffffb7a18c3ffc40 EFLAGS: 00010202
      RAX: 00007f4801111000 RBX: 00007f4801111000 RCX: 000000000000000f
      RDX: 000000000000000f RSI: ffffffffc0bfd7a0 RDI: 00007f4801111000
      RBP: ffffffffc0bfd7a0 R08: 725f746f6e5f6f64 R09: 3d7265766f636572
      R10: ffffb7a18c3ffd08 R11: 0000000000000000 R12: 00007f4881110fff
      R13: 000000007fffffff R14: ffffb7a18c3ffca0 R15: ffffffffc0bfd7af
      FS:  00007f480118a740(0000) GS:ffff98e38af00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f4801111000 CR3: 0000000864b8e001 CR4: 00000000007706e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      PKRU: 55555554
      Call Trace:
       <TASK>
       ? __die_body+0x1a/0x60
       ? page_fault_oops+0x183/0x510
       ? exc_page_fault+0x69/0x150
       ? asm_exc_page_fault+0x22/0x30
       ? memcpy_orig+0xcd/0x130
       vsnprintf+0x102/0x4c0
       sprintf+0x51/0x80
       qedi_dbg_do_not_recover_cmd_read+0x2f/0x50 [qedi 6bcfdeeecdea037da47069eca2ba717c84a77324]
       full_proxy_read+0x50/0x80
       vfs_read+0xa5/0x2e0
       ? folio_add_new_anon_rmap+0x44/0xa0
       ? set_pte_at+0x15/0x30
       ? do_pte_missing+0x426/0x7f0
       ksys_read+0xa5/0xe0
       do_syscall_64+0x58/0x80
       ? __count_memcg_events+0x46/0x90
       ? count_memcg_event_mm+0x3d/0x60
       ? handle_mm_fault+0x196/0x2f0
       ? do_user_addr_fault+0x267/0x890
       ? exc_page_fault+0x69/0x150
       entry_SYSCALL_64_after_hwframe+0x72/0xdc
      RIP: 0033:0x7f4800f20b4d
      
      Tested-by: default avatarMartin Hoyer <mhoyer@redhat.com>
      Reviewed-by: default avatarJohn Meneghini <jmeneghi@redhat.com>
      Signed-off-by: default avatarManish Rangankar <mrangankar@marvell.com>
      Link: https://lore.kernel.org/r/20240415072155.30840-1-mrangankar@marvell.com
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      21c963de
    • Wander Lairson Costa's avatar
      drop_monitor: replace spin_lock by raw_spin_lock · 594e4795
      Wander Lairson Costa authored
      [ Upstream commit f1e197a6
      
       ]
      
      trace_drop_common() is called with preemption disabled, and it acquires
      a spin_lock. This is problematic for RT kernels because spin_locks are
      sleeping locks in this configuration, which causes the following splat:
      
      BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
      in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 449, name: rcuc/47
      preempt_count: 1, expected: 0
      RCU nest depth: 2, expected: 2
      5 locks held by rcuc/47/449:
       #0: ff1100086ec30a60 ((softirq_ctrl.lock)){+.+.}-{2:2}, at: __local_bh_disable_ip+0x105/0x210
       #1: ffffffffb394a280 (rcu_read_lock){....}-{1:2}, at: rt_spin_lock+0xbf/0x130
       #2: ffffffffb394a280 (rcu_read_lock){....}-{1:2}, at: __local_bh_disable_ip+0x11c/0x210
       #3: ffffffffb394a160 (rcu_callback){....}-{0:0}, at: rcu_do_batch+0x360/0xc70
       #4: ff1100086ee07520 (&data->lock){+.+.}-{2:2}, at: trace_drop_common.constprop.0+0xb5/0x290
      irq event stamp: 139909
      hardirqs last  enabled at (139908): [<ffffffffb1df2b33>] _raw_spin_unlock_irqrestore+0x63/0x80
      hardirqs last disabled at (139909): [<ffffffffb19bd03d>] trace_drop_common.constprop.0+0x26d/0x290
      softirqs last  enabled at (139892): [<ffffffffb07a1083>] __local_bh_enable_ip+0x103/0x170
      softirqs last disabled at (139898): [<ffffffffb0909b33>] rcu_cpu_kthread+0x93/0x1f0
      Preemption disabled at:
      [<ffffffffb1de786b>] rt_mutex_slowunlock+0xab/0x2e0
      CPU: 47 PID: 449 Comm: rcuc/47 Not tainted 6.9.0-rc2-rt1+ #7
      Hardware name: Dell Inc. PowerEdge R650/0Y2G81, BIOS 1.6.5 04/15/2022
      Call Trace:
       <TASK>
       dump_stack_lvl+0x8c/0xd0
       dump_stack+0x14/0x20
       __might_resched+0x21e/0x2f0
       rt_spin_lock+0x5e/0x130
       ? trace_drop_common.constprop.0+0xb5/0x290
       ? skb_queue_purge_reason.part.0+0x1bf/0x230
       trace_drop_common.constprop.0+0xb5/0x290
       ? preempt_count_sub+0x1c/0xd0
       ? _raw_spin_unlock_irqrestore+0x4a/0x80
       ? __pfx_trace_drop_common.constprop.0+0x10/0x10
       ? rt_mutex_slowunlock+0x26a/0x2e0
       ? skb_queue_purge_reason.part.0+0x1bf/0x230
       ? __pfx_rt_mutex_slowunlock+0x10/0x10
       ? skb_queue_purge_reason.part.0+0x1bf/0x230
       trace_kfree_skb_hit+0x15/0x20
       trace_kfree_skb+0xe9/0x150
       kfree_skb_reason+0x7b/0x110
       skb_queue_purge_reason.part.0+0x1bf/0x230
       ? __pfx_skb_queue_purge_reason.part.0+0x10/0x10
       ? mark_lock.part.0+0x8a/0x520
      ...
      
      trace_drop_common() also disables interrupts, but this is a minor issue
      because we could easily replace it with a local_lock.
      
      Replace the spin_lock with raw_spin_lock to avoid sleeping in atomic
      context.
      
      Signed-off-by: default avatarWander Lairson Costa <wander@redhat.com>
      Reported-by: default avatarHu Chunyu <chuhu@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      594e4795
    • Eric Dumazet's avatar
      batman-adv: bypass empty buckets in batadv_purge_orig_ref() · 154e3f86
      Eric Dumazet authored
      [ Upstream commit 40dc8ab6
      
       ]
      
      Many syzbot reports are pointing to soft lockups in
      batadv_purge_orig_ref() [1]
      
      Root cause is unknown, but we can avoid spending too much
      time there and perhaps get more interesting reports.
      
      [1]
      
      watchdog: BUG: soft lockup - CPU#0 stuck for 27s! [kworker/u4:6:621]
      Modules linked in:
      irq event stamp: 6182794
       hardirqs last  enabled at (6182793): [<ffff8000801dae10>] __local_bh_enable_ip+0x224/0x44c kernel/softirq.c:386
       hardirqs last disabled at (6182794): [<ffff80008ad66a78>] __el1_irq arch/arm64/kernel/entry-common.c:533 [inline]
       hardirqs last disabled at (6182794): [<ffff80008ad66a78>] el1_interrupt+0x24/0x68 arch/arm64/kernel/entry-common.c:551
       softirqs last  enabled at (6182792): [<ffff80008aab71c4>] spin_unlock_bh include/linux/spinlock.h:396 [inline]
       softirqs last  enabled at (6182792): [<ffff80008aab71c4>] batadv_purge_orig_ref+0x114c/0x1228 net/batman-adv/originator.c:1287
       softirqs last disabled at (6182790): [<ffff80008aab61dc>] spin_lock_bh include/linux/spinlock.h:356 [inline]
       softirqs last disabled at (6182790): [<ffff80008aab61dc>] batadv_purge_orig_ref+0x164/0x1228 net/batman-adv/originator.c:1271
      CPU: 0 PID: 621 Comm: kworker/u4:6 Not tainted 6.8.0-rc7-syzkaller-g707081b61156 #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
      Workqueue: bat_events batadv_purge_orig
      pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : should_resched arch/arm64/include/asm/preempt.h:79 [inline]
       pc : __local_bh_enable_ip+0x228/0x44c kernel/softirq.c:388
       lr : __local_bh_enable_ip+0x224/0x44c kernel/softirq.c:386
      sp : ffff800099007970
      x29: ffff800099007980 x28: 1fffe00018fce1bd x27: dfff800000000000
      x26: ffff0000d2620008 x25: ffff0000c7e70de8 x24: 0000000000000001
      x23: 1fffe00018e57781 x22: dfff800000000000 x21: ffff80008aab71c4
      x20: ffff0001b40136c0 x19: ffff0000c72bbc08 x18: 1fffe0001a817bb0
      x17: ffff800125414000 x16: ffff80008032116c x15: 0000000000000001
      x14: 1fffe0001ee9d610 x13: 0000000000000000 x12: 0000000000000003
      x11: 0000000000000000 x10: 0000000000ff0100 x9 : 0000000000000000
      x8 : 00000000005e5789 x7 : ffff80008aab61dc x6 : 0000000000000000
      x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000000
      x2 : 0000000000000006 x1 : 0000000000000080 x0 : ffff800125414000
      Call trace:
        __daif_local_irq_enable arch/arm64/include/asm/irqflags.h:27 [inline]
        arch_local_irq_enable arch/arm64/include/asm/irqflags.h:49 [inline]
        __local_bh_enable_ip+0x228/0x44c kernel/softirq.c:386
        __raw_spin_unlock_bh include/linux/spinlock_api_smp.h:167 [inline]
        _raw_spin_unlock_bh+0x3c/0x4c kernel/locking/spinlock.c:210
        spin_unlock_bh include/linux/spinlock.h:396 [inline]
        batadv_purge_orig_ref+0x114c/0x1228 net/batman-adv/originator.c:1287
        batadv_purge_orig+0x20/0x70 net/batman-adv/originator.c:1300
        process_one_work+0x694/0x1204 kernel/workqueue.c:2633
        process_scheduled_works kernel/workqueue.c:2706 [inline]
        worker_thread+0x938/0xef4 kernel/workqueue.c:2787
        kthread+0x288/0x310 kernel/kthread.c:388
        ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:860
      Sending NMI from CPU 0 to CPUs 1:
      NMI backtrace for cpu 1
      CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.8.0-rc7-syzkaller-g707081b61156 #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024
      pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : arch_local_irq_enable+0x8/0xc arch/arm64/include/asm/irqflags.h:51
       lr : default_idle_call+0xf8/0x128 kernel/sched/idle.c:103
      sp : ffff800093a17d30
      x29: ffff800093a17d30 x28: dfff800000000000 x27: 1ffff00012742fb4
      x26: ffff80008ec9d000 x25: 0000000000000000 x24: 0000000000000002
      x23: 1ffff00011d93a74 x22: ffff80008ec9d3a0 x21: 0000000000000000
      x20: ffff0000c19dbc00 x19: ffff8000802d0fd8 x18: 1fffe00036804396
      x17: ffff80008ec9d000 x16: ffff8000802d089c x15: 0000000000000001
      x14: 1fffe00036805f10 x13: 0000000000000000 x12: 0000000000000003
      x11: 0000000000000001 x10: 0000000000000003 x9 : 0000000000000000
      x8 : 00000000000ce8d1 x7 : ffff8000804609e4 x6 : 0000000000000000
      x5 : 0000000000000001 x4 : 0000000000000001 x3 : ffff80008ad6aac0
      x2 : 0000000000000000 x1 : ffff80008aedea60 x0 : ffff800125436000
      Call trace:
        __daif_local_irq_enable arch/arm64/include/asm/irqflags.h:27 [inline]
        arch_local_irq_enable+0x8/0xc arch/arm64/include/asm/irqflags.h:49
        cpuidle_idle_call kernel/sched/idle.c:170 [inline]
        do_idle+0x1f0/0x4e8 kernel/sched/idle.c:312
        cpu_startup_entry+0x5c/0x74 kernel/sched/idle.c:410
        secondary_start_kernel+0x198/0x1c0 arch/arm64/kernel/smp.c:272
        __secondary_switched+0xb8/0xbc arch/arm64/kernel/head.S:404
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
      Signed-off-by: default avatarSimon Wunderlich <sw@simonwunderlich.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      154e3f86
    • Alessandro Carminati (Red Hat)'s avatar
      selftests/bpf: Prevent client connect before server bind in test_tc_tunnel.sh · 1d01d0f4
      Alessandro Carminati (Red Hat) authored
      [ Upstream commit f803bcf9
      
       ]
      
      In some systems, the netcat server can incur in delay to start listening.
      When this happens, the test can randomly fail in various points.
      This is an example error message:
      
         # ip gre none gso
         # encap 192.168.1.1 to 192.168.1.2, type gre, mac none len 2000
         # test basic connectivity
         # Ncat: Connection refused.
      
      The issue stems from a race condition between the netcat client and server.
      The test author had addressed this problem by implementing a sleep, which
      I have removed in this patch.
      This patch introduces a function capable of sleeping for up to two seconds.
      However, it can terminate the waiting period early if the port is reported
      to be listening.
      
      Signed-off-by: default avatarAlessandro Carminati (Red Hat) <alessandro.carminati@gmail.com>
      Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Link: https://lore.kernel.org/bpf/20240314105911.213411-1-alessandro.carminati@gmail.com
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      1d01d0f4
    • Paul E. McKenney's avatar
      rcutorture: Fix rcu_torture_one_read() pipe_count overflow comment · 075fc5d2
      Paul E. McKenney authored
      [ Upstream commit 8b9b443f
      
       ]
      
      The "pipe_count > RCU_TORTURE_PIPE_LEN" check has a comment saying "Should
      not happen, but...".  This is only true when testing an RCU whose grace
      periods are always long enough.  This commit therefore fixes this comment.
      
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Closes: https://lore.kernel.org/lkml/CAHk-=wi7rJ-eGq+xaxVfzFEgbL9tdf6Kc8Z89rCpfcQOKm74Tw@mail.gmail.com/
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      Signed-off-by: default avatarUladzislau Rezki (Sony) <urezki@gmail.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      075fc5d2
    • Jean Delvare's avatar
      i2c: at91: Fix the functionality flags of the slave-only interface · f51f449e
      Jean Delvare authored
      [ Upstream commit d6d5645e ]
      
      When an I2C adapter acts only as a slave, it should not claim to
      support I2C master capabilities.
      
      Fixes: 9d3ca54b
      
       ("i2c: at91: added slave mode support")
      Signed-off-by: default avatarJean Delvare <jdelvare@suse.de>
      Cc: Juergen Fitschen <me@jue.yt>
      Cc: Ludovic Desroches <ludovic.desroches@microchip.com>
      Cc: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
      Cc: Andi Shyti <andi.shyti@kernel.org>
      Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
      Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
      Cc: Claudiu Beznea <claudiu.beznea@tuxon.dev>
      Signed-off-by: default avatarAndi Shyti <andi.shyti@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f51f449e
    • Shichao Lai's avatar
      usb-storage: alauda: Check whether the media is initialized · 51fe16c0
      Shichao Lai authored
      [ Upstream commit 16637fea ]
      
      The member "uzonesize" of struct alauda_info will remain 0
      if alauda_init_media() fails, potentially causing divide errors
      in alauda_read_data() and alauda_write_lba().
      - Add a member "media_initialized" to struct alauda_info.
      - Change a condition in alauda_check_media() to ensure the
        first initialization.
      - Add an error check for the return value of alauda_init_media().
      
      Fixes: e80b0fad
      
       ("[PATCH] USB Storage: add alauda support")
      Reported-by: default avatarxingwei lee <xrivendell7@gmail.com>
      Reported-by: default avataryue sun <samsun1006219@gmail.com>
      Reviewed-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarShichao Lai <shichaorai@gmail.com>
      Link: https://lore.kernel.org/r/20240526012745.2852061-1-shichaorai@gmail.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      51fe16c0
    • Sicong Huang's avatar
      greybus: Fix use-after-free bug in gb_interface_release due to race condition. · 74cd0a42
      Sicong Huang authored
      commit 5c9c5d7f
      
       upstream.
      
      In gb_interface_create, &intf->mode_switch_completion is bound with
      gb_interface_mode_switch_work. Then it will be started by
      gb_interface_request_mode_switch. Here is the relevant code.
      if (!queue_work(system_long_wq, &intf->mode_switch_work)) {
      	...
      }
      
      If we call gb_interface_release to make cleanup, there may be an
      unfinished work. This function will call kfree to free the object
      "intf". However, if gb_interface_mode_switch_work is scheduled to
      run after kfree, it may cause use-after-free error as
      gb_interface_mode_switch_work will use the object "intf".
      The possible execution flow that may lead to the issue is as follows:
      
      CPU0                            CPU1
      
                                  |   gb_interface_create
                                  |   gb_interface_request_mode_switch
      gb_interface_release        |
      kfree(intf) (free)          |
                                  |   gb_interface_mode_switch_work
                                  |   mutex_lock(&intf->mutex) (use)
      
      Fix it by canceling the work before kfree.
      
      Signed-off-by: default avatarSicong Huang <congei42@163.com>
      Link: https://lore.kernel.org/r/20240416080313.92306-1-congei42@163.com
      Cc: Ronnie Sahlberg <rsahlberg@ciq.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      74cd0a42
    • Florian Westphal's avatar
      netfilter: nftables: exthdr: fix 4-byte stack OOB write · cf39c4f7
      Florian Westphal authored
      commit fd94d9da upstream.
      
      If priv->len is a multiple of 4, then dst[len / 4] can write past
      the destination array which leads to stack corruption.
      
      This construct is necessary to clean the remainder of the register
      in case ->len is NOT a multiple of the register size, so make it
      conditional just like nft_payload.c does.
      
      The bug was added in 4.1 cycle and then copied/inherited when
      tcp/sctp and ip option support was added.
      
      Bug reported by Zero Day Initiative project (ZDI-CAN-21950,
      ZDI-CAN-21951, ZDI-CAN-21961).
      
      Fixes: 49499c3e ("netfilter: nf_tables: switch registers to 32 bit addressing")
      Fixes: 935b7f64 ("netfilter: nft_exthdr: add TCP option matching")
      Fixes: 133dc203 ("netfilter: nft_exthdr: Support SCTP chunks")
      Fixes: dbb5281a
      
       ("netfilter: nf_tables: add support for matching IPv4 options")
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cf39c4f7
    • Matthias Goergens's avatar
      hugetlb_encode.h: fix undefined behaviour (34 << 26) · 6302bdfe
      Matthias Goergens authored
      commit 710bb68c
      
       upstream.
      
      Left-shifting past the size of your datatype is undefined behaviour in C.
      The literal 34 gets the type `int`, and that one is not big enough to be
      left shifted by 26 bits.
      
      An `unsigned` is long enough (on any machine that has at least 32 bits for
      their ints.)
      
      For uniformity, we mark all the literals as unsigned.  But it's only
      really needed for HUGETLB_FLAG_ENCODE_16GB.
      
      Thanks to Randy Dunlap for an initial review and suggestion.
      
      Link: https://lkml.kernel.org/r/20220905031904.150925-1-matthias.goergens@gmail.com
      Signed-off-by: default avatarMatthias Goergens <matthias.goergens@gmail.com>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Mike Kravetz <mike.kravetz@oracle.com>
      Cc: Muchun Song <songmuchun@bytedance.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      [cmllamas: fix trivial conflict due to missing page encondigs]
      Signed-off-by: default avatarCarlos Llamas <cmllamas@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6302bdfe
    • Vineeth Pillai's avatar
      hv_utils: drain the timesync packets on onchannelcallback · b3f5d4e7
      Vineeth Pillai authored
      commit b46b4a8a
      
       upstream.
      
      There could be instances where a system stall prevents the timesync
      packets to be consumed. And this might lead to more than one packet
      pending in the ring buffer. Current code empties one packet per callback
      and it might be a stale one. So drain all the packets from ring buffer
      on each callback.
      
      Signed-off-by: default avatarVineeth Pillai <viremana@linux.microsoft.com>
      Reviewed-by: default avatarMichael Kelley <mikelley@microsoft.com>
      Link: https://lore.kernel.org/r/20200821152849.99517-1-viremana@linux.microsoft.com
      Signed-off-by: default avatarWei Liu <wei.liu@kernel.org>
      [ The old code in the upstream commit uses HV_HYP_PAGE_SIZE, but
        the old code in 5.4.y sitll uses PAGE_SIZE. Fixed this manually for 5.4.y.
        Note: 5.4.y already has the define HV_HYP_PAGE_SIZE, so the new code in
        in the upstream commit works for 5.4.y.
        If there are multiple messages in the host-to-guest ringbuffer of the TimeSync
        device, 5.4.y only handles 1 message, and later the host puts new messages
        into the ringbuffer without signaling the guest because the ringbuffer is not
        empty, causing a "hung" ringbuffer. Backported the mainline fix for this issue.]
      Signed-off-by: default avatarDexuan Cui <decui@microsoft.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b3f5d4e7
    • Oleg Nesterov's avatar
      tick/nohz_full: Don't abuse smp_call_function_single() in tick_setup_device() · fd093ae0
      Oleg Nesterov authored
      commit 07c54cc5 upstream.
      
      After the recent commit 5097cbcb ("sched/isolation: Prevent boot crash
      when the boot CPU is nohz_full") the kernel no longer crashes, but there is
      another problem.
      
      In this case tick_setup_device() calls tick_take_do_timer_from_boot() to
      update tick_do_timer_cpu and this triggers the WARN_ON_ONCE(irqs_disabled)
      in smp_call_function_single().
      
      Kill tick_take_do_timer_from_boot() and just use WRITE_ONCE(), the new
      comment explains why this is safe (thanks Thomas!).
      
      Fixes: 08ae95f4
      
       ("nohz_full: Allow the boot CPU to be nohz_full")
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20240528122019.GA28794@redhat.com
      Link: https://lore.kernel.org/all/20240522151742.GA10400@redhat.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fd093ae0
    • Ryusuke Konishi's avatar
      nilfs2: fix potential kernel bug due to lack of writeback flag waiting · a75b8f49
      Ryusuke Konishi authored
      commit a4ca369c upstream.
      
      Destructive writes to a block device on which nilfs2 is mounted can cause
      a kernel bug in the folio/page writeback start routine or writeback end
      routine (__folio_start_writeback in the log below):
      
       kernel BUG at mm/page-writeback.c:3070!
       Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
       ...
       RIP: 0010:__folio_start_writeback+0xbaa/0x10e0
       Code: 25 ff 0f 00 00 0f 84 18 01 00 00 e8 40 ca c6 ff e9 17 f6 ff ff
        e8 36 ca c6 ff 4c 89 f7 48 c7 c6 80 c0 12 84 e8 e7 b3 0f 00 90 <0f>
        0b e8 1f ca c6 ff 4c 89 f7 48 c7 c6 a0 c6 12 84 e8 d0 b3 0f 00
       ...
       Call Trace:
        <TASK>
        nilfs_segctor_do_construct+0x4654/0x69d0 [nilfs2]
        nilfs_segctor_construct+0x181/0x6b0 [nilfs2]
        nilfs_segctor_thread+0x548/0x11c0 [nilfs2]
        kthread+0x2f0/0x390
        ret_from_fork+0x4b/0x80
        ret_from_fork_asm+0x1a/0x30
        </TASK>
      
      This is because when the log writer starts a writeback for segment summary
      blocks or a super root block that use the backing device's page cache, it
      does not wait for the ongoing folio/page writeback, resulting in an
      inconsistent writeback state.
      
      Fix this issue by waiting for ongoing writebacks when putting
      folios/pages on the backing device into writeback state.
      
      Link: https://lkml.kernel.org/r/20240530141556.4411-1-konishi.ryusuke@gmail.com
      Fixes: 9ff05123
      
       ("nilfs2: segment constructor")
      Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
      Tested-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a75b8f49
    • Alexander Shishkin's avatar
      intel_th: pci: Add Lunar Lake support · 59f9bea4
      Alexander Shishkin authored
      commit f866b653
      
       upstream.
      
      Add support for the Trace Hub in Lunar Lake.
      
      Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: stable@kernel.org
      Link: https://lore.kernel.org/r/20240429130119.1518073-16-alexander.shishkin@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      59f9bea4
    • Alexander Shishkin's avatar
      intel_th: pci: Add Meteor Lake-S support · b51a4d33
      Alexander Shishkin authored
      commit c4a30def
      
       upstream.
      
      Add support for the Trace Hub in Meteor Lake-S.
      
      Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: stable@kernel.org
      Link: https://lore.kernel.org/r/20240429130119.1518073-14-alexander.shishkin@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b51a4d33
    • Alexander Shishkin's avatar
      intel_th: pci: Add Sapphire Rapids SOC support · 41982a91
      Alexander Shishkin authored
      commit 2e1da7ef
      
       upstream.
      
      Add support for the Trace Hub in Sapphire Rapids SOC.
      
      Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: stable@kernel.org
      Link: https://lore.kernel.org/r/20240429130119.1518073-13-alexander.shishkin@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      41982a91
    • Alexander Shishkin's avatar
      intel_th: pci: Add Granite Rapids SOC support · 3e9c8108
      Alexander Shishkin authored
      commit 854afe46
      
       upstream.
      
      Add support for the Trace Hub in Granite Rapids SOC.
      
      Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: stable@kernel.org
      Link: https://lore.kernel.org/r/20240429130119.1518073-12-alexander.shishkin@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3e9c8108
    • Alexander Shishkin's avatar
      intel_th: pci: Add Granite Rapids support · 0deb2685
      Alexander Shishkin authored
      commit e4493788
      
       upstream.
      
      Add support for the Trace Hub in Granite Rapids.
      
      Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: stable@kernel.org
      Link: https://lore.kernel.org/r/20240429130119.1518073-11-alexander.shishkin@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0deb2685
    • Nuno Sa's avatar
      dmaengine: axi-dmac: fix possible race in remove() · 4d35028f
      Nuno Sa authored
      commit 1bc31444 upstream.
      
      We need to first free the IRQ before calling of_dma_controller_free().
      Otherwise we could get an interrupt and schedule a tasklet while
      removing the DMA controller.
      
      Fixes: 0e3b67b3
      
       ("dmaengine: Add support for the Analog Devices AXI-DMAC DMA controller")
      Cc: stable@kernel.org
      Signed-off-by: default avatarNuno Sa <nuno.sa@analog.com>
      Link: https://lore.kernel.org/r/20240328-axi-dmac-devm-probe-v3-1-523c0176df70@analog.com
      Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4d35028f
    • Rick Wertenbroek's avatar
      PCI: rockchip-ep: Remove wrong mask on subsys_vendor_id · 5edb09d6
      Rick Wertenbroek authored
      commit 2dba285c upstream.
      
      Remove wrong mask on subsys_vendor_id. Both the Vendor ID and Subsystem
      Vendor ID are u16 variables and are written to a u32 register of the
      controller. The Subsystem Vendor ID was always 0 because the u16 value
      was masked incorrectly with GENMASK(31,16) resulting in all lower 16
      bits being set to 0 prior to the shift.
      
      Remove both masks as they are unnecessary and set the register correctly
      i.e., the lower 16-bits are the Vendor ID and the upper 16-bits are the
      Subsystem Vendor ID.
      
      This is documented in the RK3399 TRM section 17.6.7.1.17
      
      [kwilczynski: removed unnecesary newline]
      Fixes: cf590b07
      
       ("PCI: rockchip: Add EP driver for Rockchip PCIe controller")
      Link: https://lore.kernel.org/linux-pci/20240403144508.489835-1-rick.wertenbroek@gmail.com
      Signed-off-by: default avatarRick Wertenbroek <rick.wertenbroek@gmail.com>
      Signed-off-by: default avatarKrzysztof Wilczyński <kwilczynski@kernel.org>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: default avatarDamien Le Moal <dlemoal@kernel.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5edb09d6
    • Su Yue's avatar
      ocfs2: fix races between hole punching and AIO+DIO · e8e2db1a
      Su Yue authored
      commit 952b023f upstream.
      
      After commit "ocfs2: return real error code in ocfs2_dio_wr_get_block",
      fstests/generic/300 become from always failed to sometimes failed:
      
      ========================================================================
      [  473.293420 ] run fstests generic/300
      
      [  475.296983 ] JBD2: Ignoring recovery information on journal
      [  475.302473 ] ocfs2: Mounting device (253,1) on (node local, slot 0) with ordered data mode.
      [  494.290998 ] OCFS2: ERROR (device dm-1): ocfs2_change_extent_flag: Owner 5668 has an extent at cpos 78723 which can no longer be found
      [  494.291609 ] On-disk corruption discovered. Please run fsck.ocfs2 once the filesystem is unmounted.
      [  494.292018 ] OCFS2: File system is now read-only.
      [  494.292224 ] (kworker/19:11,2628,19):ocfs2_mark_extent_written:5272 ERROR: status = -30
      [  494.292602 ] (kworker/19:11,2628,19):ocfs2_dio_end_io_write:2374 ERROR: status = -3
      fio: io_u error on file /mnt/scratch/racer: Read-only file system: write offset=460849152, buflen=131072
      =========================================================================
      
      In __blockdev_direct_IO, ocfs2_dio_wr_get_block is called to add unwritten
      extents to a list.  extents are also inserted into extent tree in
      ocfs2_write_begin_nolock.  Then another thread call fallocate to puch a
      hole at one of the unwritten extent.  The extent at cpos was removed by
      ocfs2_remove_extent().  At end io worker thread, ocfs2_search_extent_list
      found there is no such extent at the cpos.
      
          T1                        T2                T3
                                    inode lock
                                      ...
                                      insert extents
                                      ...
                                    inode unlock
      ocfs2_fallocate
       __ocfs2_change_file_space
        inode lock
        lock ip_alloc_sem
        ocfs2_remove_inode_range inode
         ocfs2_remove_btree_range
          ocfs2_remove_extent
          ^---remove the extent at cpos 78723
        ...
        unlock ip_alloc_sem
        inode unlock
                                             ocfs2_dio_end_io
                                              ocfs2_dio_end_io_write
                                               lock ip_alloc_sem
                                               ocfs2_mark_extent_written
                                                ocfs2_change_extent_flag
                                                 ocfs2_search_extent_list
                                                 ^---failed to find extent
                                                ...
                                                unlock ip_alloc_sem
      
      In most filesystems, fallocate is not compatible with racing with AIO+DIO,
      so fix it by adding to wait for all dio before fallocate/punch_hole like
      ext4.
      
      Link: https://lkml.kernel.org/r/20240408082041.20925-3-glass.su@suse.com
      Fixes: b2580103
      
       ("ocfs2: Support xfs style space reservation ioctls")
      Signed-off-by: default avatarSu Yue <glass.su@suse.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@linux.alibaba.com>
      Cc: Changwei Ge <gechangwei@live.cn>
      Cc: Gang He <ghe@suse.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Jun Piao <piaojun@huawei.com>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Mark Fasheh <mark@fasheh.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e8e2db1a
    • Su Yue's avatar
      ocfs2: use coarse time for new created files · 292665c1
      Su Yue authored
      commit b8cb3242 upstream.
      
      The default atime related mount option is '-o realtime' which means file
      atime should be updated if atime <= ctime or atime <= mtime.  atime should
      be updated in the following scenario, but it is not:
      ==========================================================
      $ rm /mnt/testfile;
      $ echo test > /mnt/testfile
      $ stat -c "%X %Y %Z" /mnt/testfile
      1711881646 1711881646 1711881646
      $ sleep 5
      $ cat /mnt/testfile > /dev/null
      $ stat -c "%X %Y %Z" /mnt/testfile
      1711881646 1711881646 1711881646
      ==========================================================
      
      And the reason the atime in the test is not updated is that ocfs2 calls
      ktime_get_real_ts64() in __ocfs2_mknod_locked during file creation.  Then
      inode_set_ctime_current() is called in inode_set_ctime_current() calls
      ktime_get_coarse_real_ts64() to get current time.
      
      ktime_get_real_ts64() is more accurate than ktime_get_coarse_real_ts64().
      In my test box, I saw ctime set by ktime_get_coarse_real_ts64() is less
      than ktime_get_real_ts64() even ctime is set later.  The ctime of the new
      inode is smaller than atime.
      
      The call trace is like:
      
      ocfs2_create
        ocfs2_mknod
          __ocfs2_mknod_locked
          ....
      
            ktime_get_real_ts64 <------- set atime,ctime,mtime, more accurate
            ocfs2_populate_inode
          ...
          ocfs2_init_acl
            ocfs2_acl_set_mode
              inode_set_ctime_current
                current_time
                  ktime_get_coarse_real_ts64 <-------less accurate
      
      ocfs2_file_read_iter
        ocfs2_inode_lock_atime
          ocfs2_should_update_atime
            atime <= ctime ? <-------- false, ctime < atime due to accuracy
      
      So here call ktime_get_coarse_real_ts64 to set inode time coarser while
      creating new files.  It may lower the accuracy of file times.  But it's
      not a big deal since we already use coarse time in other places like
      ocfs2_update_inode_atime and inode_set_ctime_current.
      
      Link: https://lkml.kernel.org/r/20240408082041.20925-5-glass.su@suse.com
      Fixes: c62c38f6
      
       ("ocfs2: replace CURRENT_TIME macro")
      Signed-off-by: default avatarSu Yue <glass.su@suse.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@linux.alibaba.com>
      Cc: Mark Fasheh <mark@fasheh.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Changwei Ge <gechangwei@live.cn>
      Cc: Gang He <ghe@suse.com>
      Cc: Jun Piao <piaojun@huawei.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      292665c1
    • Rik van Riel's avatar
      fs/proc: fix softlockup in __read_vmcore · 803d5a33
      Rik van Riel authored
      commit 5cbcb62d
      
       upstream.
      
      While taking a kernel core dump with makedumpfile on a larger system,
      softlockup messages often appear.
      
      While softlockup warnings can be harmless, they can also interfere with
      things like RCU freeing memory, which can be problematic when the kdump
      kexec image is configured with as little memory as possible.
      
      Avoid the softlockup, and give things like work items and RCU a chance to
      do their thing during __read_vmcore by adding a cond_resched.
      
      Link: https://lkml.kernel.org/r/20240507091858.36ff767f@imladris.surriel.com
      Signed-off-by: default avatarRik van Riel <riel@surriel.com>
      Acked-by: default avatarBaoquan He <bhe@redhat.com>
      Cc: Dave Young <dyoung@redhat.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      803d5a33
    • Hagar Gamal Halim Hemdan's avatar
      vmci: prevent speculation leaks by sanitizing event in event_deliver() · 681967c4
      Hagar Gamal Halim Hemdan authored
      commit 8003f00d upstream.
      
      Coverity spotted that event_msg is controlled by user-space,
      event_msg->event_data.event is passed to event_deliver() and used
      as an index without sanitization.
      
      This change ensures that the event index is sanitized to mitigate any
      possibility of speculative information leaks.
      
      This bug was discovered and resolved using Coverity Static Analysis
      Security Testing (SAST) by Synopsys, Inc.
      
      Only compile tested, no access to HW.
      
      Fixes: 1d990201
      
       ("VMCI: event handling implementation.")
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarHagar Gamal Halim Hemdan <hagarhem@amazon.com>
      Link: https://lore.kernel.org/stable/20231127193533.46174-1-hagarhem%40amazon.com
      Link: https://lore.kernel.org/r/20240430085916.4753-1-hagarhem@amazon.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      681967c4
    • Steven Rostedt (Google)'s avatar
      tracing/selftests: Fix kprobe event name test for .isra. functions · 4c2df187
      Steven Rostedt (Google) authored
      commit 23a4b108 upstream.
      
      The kprobe_eventname.tc test checks if a function with .isra. can have a
      kprobe attached to it. It loops through the kallsyms file for all the
      functions that have the .isra. name, and checks if it exists in the
      available_filter_functions file, and if it does, it uses it to attach a
      kprobe to it.
      
      The issue is that kprobes can not attach to functions that are listed more
      than once in available_filter_functions. With the latest kernel, the
      function that is found is: rapl_event_update.isra.0
      
        # grep rapl_event_update.isra.0 /sys/kernel/tracing/available_filter_functions
        rapl_event_update.isra.0
        rapl_event_update.isra.0
      
      It is listed twice. This causes the attached kprobe to it to fail which in
      turn fails the test. Instead of just picking the function function that is
      found in available_filter_functions, pick the first one that is listed
      only once in available_filter_functions.
      
      Cc: stable@vger.kernel.org
      Fixes: 604e3548
      
       ("selftests/ftrace: Select an existing function in kprobe_eventname test")
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4c2df187
    • Marek Szyprowski's avatar
      drm/exynos: hdmi: report safe 640x480 mode as a fallback when no EDID found · e23f2eaf
      Marek Szyprowski authored
      commit 799d4b39 upstream.
      
      When reading EDID fails and driver reports no modes available, the DRM
      core adds an artificial 1024x786 mode to the connector. Unfortunately
      some variants of the Exynos HDMI (like the one in Exynos4 SoCs) are not
      able to drive such mode, so report a safe 640x480 mode instead of nothing
      in case of the EDID reading failure.
      
      This fixes the following issue observed on Trats2 board since commit
      13d5b040 ("drm/exynos: do not return negative values from .get_modes()"):
      
      [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations
      exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops)
      exynos-drm exynos-drm: bound 12c10000.mixer (ops mixer_component_ops)
      exynos-dsi 11c80000.dsi: [drm:samsung_dsim_host_attach] Attached s6e8aa0 device (lanes:4 bpp:24 mode-flags:0x10b)
      exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops)
      exynos-drm exynos-drm: bound 12d00000.hdmi (ops hdmi_component_ops)
      [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 1
      exynos-hdmi 12d00000.hdmi: [drm:hdmiphy_enable.part.0] *ERROR* PLL could not reach steady state
      panel-samsung-s6e8aa0 11c80000.dsi.0: ID: 0xa2, 0x20, 0x8c
      exynos-mixer 12c10000.mixer: timeout waiting for VSYNC
      ------------[ cut here ]------------
      WARNING: CPU: 1 PID: 11 at drivers/gpu/drm/drm_atomic_helper.c:1682 drm_atomic_helper_wait_for_vblanks.part.0+0x2b0/0x2b8
      [CRTC:70:crtc-1] vblank wait timed out
      Modules linked in:
      CPU: 1 PID: 11 Comm: kworker/u16:0 Not tainted 6.9.0-rc5-next-20240424 #14913
      Hardware name: Samsung Exynos (Flattened Device Tree)
      Workqueue: events_unbound deferred_probe_work_func
      Call trace:
       unwind_backtrace from show_stack+0x10/0x14
       show_stack from dump_stack_lvl+0x68/0x88
       dump_stack_lvl from __warn+0x7c/0x1c4
       __warn from warn_slowpath_fmt+0x11c/0x1a8
       warn_slowpath_fmt from drm_atomic_helper_wait_for_vblanks.part.0+0x2b0/0x2b8
       drm_atomic_helper_wait_for_vblanks.part.0 from drm_atomic_helper_commit_tail_rpm+0x7c/0x8c
       drm_atomic_helper_commit_tail_rpm from commit_tail+0x9c/0x184
       commit_tail from drm_atomic_helper_commit+0x168/0x190
       drm_atomic_helper_commit from drm_atomic_commit+0xb4/0xe0
       drm_atomic_commit from drm_client_modeset_commit_atomic+0x23c/0x27c
       drm_client_modeset_commit_atomic from drm_client_modeset_commit_locked+0x60/0x1cc
       drm_client_modeset_commit_locked from drm_client_modeset_commit+0x24/0x40
       drm_client_modeset_commit from __drm_fb_helper_restore_fbdev_mode_unlocked+0x9c/0xc4
       __drm_fb_helper_restore_fbdev_mode_unlocked from drm_fb_helper_set_par+0x2c/0x3c
       drm_fb_helper_set_par from fbcon_init+0x3d8/0x550
       fbcon_init from visual_init+0xc0/0x108
       visual_init from do_bind_con_driver+0x1b8/0x3a4
       do_bind_con_driver from do_take_over_console+0x140/0x1ec
       do_take_over_console from do_fbcon_takeover+0x70/0xd0
       do_fbcon_takeover from fbcon_fb_registered+0x19c/0x1ac
       fbcon_fb_registered from register_framebuffer+0x190/0x21c
       register_framebuffer from __drm_fb_helper_initial_config_and_unlock+0x350/0x574
       __drm_fb_helper_initial_config_and_unlock from exynos_drm_fbdev_client_hotplug+0x6c/0xb0
       exynos_drm_fbdev_client_hotplug from drm_client_register+0x58/0x94
       drm_client_register from exynos_drm_bind+0x160/0x190
       exynos_drm_bind from try_to_bring_up_aggregate_device+0x200/0x2d8
       try_to_bring_up_aggregate_device from __component_add+0xb0/0x170
       __component_add from mixer_probe+0x74/0xcc
       mixer_probe from platform_probe+0x5c/0xb8
       platform_probe from really_probe+0xe0/0x3d8
       really_probe from __driver_probe_device+0x9c/0x1e4
       __driver_probe_device from driver_probe_device+0x30/0xc0
       driver_probe_device from __device_attach_driver+0xa8/0x120
       __device_attach_driver from bus_for_each_drv+0x80/0xcc
       bus_for_each_drv from __device_attach+0xac/0x1fc
       __device_attach from bus_probe_device+0x8c/0x90
       bus_probe_device from deferred_probe_work_func+0x98/0xe0
       deferred_probe_work_func from process_one_work+0x240/0x6d0
       process_one_work from worker_thread+0x1a0/0x3f4
       worker_thread from kthread+0x104/0x138
       kthread from ret_from_fork+0x14/0x28
      Exception stack(0xf0895fb0 to 0xf0895ff8)
      ...
      irq event stamp: 82357
      hardirqs last  enabled at (82363): [<c01a96e8>] vprintk_emit+0x308/0x33c
      hardirqs last disabled at (82368): [<c01a969c>] vprintk_emit+0x2bc/0x33c
      softirqs last  enabled at (81614): [<c0101644>] __do_softirq+0x320/0x500
      softirqs last disabled at (81609): [<c012dfe0>] __irq_exit_rcu+0x130/0x184
      ---[ end trace 0000000000000000 ]---
      exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
      exynos-drm exynos-drm: [drm] *ERROR* [CRTC:70:crtc-1] commit wait timed out
      exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
      exynos-drm exynos-drm: [drm] *ERROR* [CONNECTOR:74:HDMI-A-1] commit wait timed out
      exynos-drm exynos-drm: [drm] *ERROR* flip_done timed out
      exynos-drm exynos-drm: [drm] *ERROR* [PLANE:56:plane-5] commit wait timed out
      exynos-mixer 12c10000.mixer: timeout waiting for VSYNC
      
      Cc: stable@vger.kernel.org
      Fixes: 13d5b040
      
       ("drm/exynos: do not return negative values from .get_modes()")
      Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e23f2eaf
    • Jani Nikula's avatar
      drm/exynos/vidi: fix memory leak in .get_modes() · ebcf8150
      Jani Nikula authored
      commit 38e38256
      
       upstream.
      
      The duplicated EDID is never freed. Fix it.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ebcf8150
    • Dirk Behme's avatar
      drivers: core: synchronize really_probe() and dev_uevent() · 13d25e82
      Dirk Behme authored
      commit c0a40097 upstream.
      
      Synchronize the dev->driver usage in really_probe() and dev_uevent().
      These can run in different threads, what can result in the following
      race condition for dev->driver uninitialization:
      
      Thread #1:
      ==========
      
      really_probe() {
      ...
      probe_failed:
      ...
      device_unbind_cleanup(dev) {
          ...
          dev->driver = NULL;   // <= Failed probe sets dev->driver to NULL
          ...
          }
      ...
      }
      
      Thread #2:
      ==========
      
      dev_uevent() {
      ...
      if (dev->driver)
            // If dev->driver is NULLed from really_probe() from here on,
            // after above check, the system crashes
            add_uevent_var(env, "DRIVER=%s", dev->driver->name);
      ...
      }
      
      really_probe() holds the lock, already. So nothing needs to be done
      there. dev_uevent() is called with lock held, often, too. But not
      always. What implies that we can't add any locking in dev_uevent()
      itself. So fix this race by adding the lock to the non-protected
      path. This is the path where above race is observed:
      
       dev_uevent+0x235/0x380
       uevent_show+0x10c/0x1f0  <= Add lock here
       dev_attr_show+0x3a/0xa0
       sysfs_kf_seq_show+0x17c/0x250
       kernfs_seq_show+0x7c/0x90
       seq_read_iter+0x2d7/0x940
       kernfs_fop_read_iter+0xc6/0x310
       vfs_read+0x5bc/0x6b0
       ksys_read+0xeb/0x1b0
       __x64_sys_read+0x42/0x50
       x64_sys_call+0x27ad/0x2d30
       do_syscall_64+0xcd/0x1d0
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
      
      Similar cases are reported by syzkaller in
      
      https://syzkaller.appspot.com/bug?extid=ffa8143439596313a85a
      
      But these are regarding the *initialization* of dev->driver
      
      dev->driver = drv;
      
      As this switches dev->driver to non-NULL these reports can be considered
      to be false-positives (which should be "fixed" by this commit, as well,
      though).
      
      The same issue was reported and tried to be fixed back in 2015 in
      
      https://lore.kernel.org/lkml/1421259054-2574-1-git-send-email-a.sangwan@samsung.com/
      
      already.
      
      Fixes: 239378f1
      
       ("Driver core: add uevent vars for devices of a class")
      Cc: stable <stable@kernel.org>
      Cc: syzbot+ffa8143439596313a85a@syzkaller.appspotmail.com
      Cc: Ashish Sangwan <a.sangwan@samsung.com>
      Cc: Namjae Jeon <namjae.jeon@samsung.com>
      Signed-off-by: default avatarDirk Behme <dirk.behme@de.bosch.com>
      Link: https://lore.kernel.org/r/20240513050634.3964461-1-dirk.behme@de.bosch.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      13d25e82
    • Taehee Yoo's avatar
      ionic: fix use after netif_napi_del() · 0d19267c
      Taehee Yoo authored
      [ Upstream commit 79f18a41 ]
      
      When queues are started, netif_napi_add() and napi_enable() are called.
      If there are 4 queues and only 3 queues are used for the current
      configuration, only 3 queues' napi should be registered and enabled.
      The ionic_qcq_enable() checks whether the .poll pointer is not NULL for
      enabling only the using queue' napi. Unused queues' napi will not be
      registered by netif_napi_add(), so the .poll pointer indicates NULL.
      But it couldn't distinguish whether the napi was unregistered or not
      because netif_napi_del() doesn't reset the .poll pointer to NULL.
      So, ionic_qcq_enable() calls napi_enable() for the queue, which was
      unregistered by netif_napi_del().
      
      Reproducer:
         ethtool -L <interface name> rx 1 tx 1 combined 0
         ethtool -L <interface name> rx 0 tx 0 combined 1
         ethtool -L <interface name> rx 0 tx 0 combined 4
      
      Splat looks like:
      kernel BUG at net/core/dev.c:6666!
      Oops: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
      CPU: 3 PID: 1057 Comm: kworker/3:3 Not tainted 6.10.0-rc2+ #16
      Workqueue: events ionic_lif_deferred_work [ionic]
      RIP: 0010:napi_enable+0x3b/0x40
      Code: 48 89 c2 48 83 e2 f6 80 b9 61 09 00 00 00 74 0d 48 83 bf 60 01 00 00 00 74 03 80 ce 01 f0 4f
      RSP: 0018:ffffb6ed83227d48 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffff97560cda0828 RCX: 0000000000000029
      RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff97560cda0a28
      RBP: ffffb6ed83227d50 R08: 0000000000000400 R09: 0000000000000001
      R10: 0000000000000001 R11: 0000000000000001 R12: 0000000000000000
      R13: ffff97560ce3c1a0 R14: 0000000000000000 R15: ffff975613ba0a20
      FS:  0000000000000000(0000) GS:ffff975d5f780000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f8f734ee200 CR3: 0000000103e50000 CR4: 00000000007506f0
      PKRU: 55555554
      Call Trace:
       <TASK>
       ? die+0x33/0x90
       ? do_trap+0xd9/0x100
       ? napi_enable+0x3b/0x40
       ? do_error_trap+0x83/0xb0
       ? napi_enable+0x3b/0x40
       ? napi_enable+0x3b/0x40
       ? exc_invalid_op+0x4e/0x70
       ? napi_enable+0x3b/0x40
       ? asm_exc_invalid_op+0x16/0x20
       ? napi_enable+0x3b/0x40
       ionic_qcq_enable+0xb7/0x180 [ionic 59bdfc8a035436e1c4224ff7d10789e3f14643f8]
       ionic_start_queues+0xc4/0x290 [ionic 59bdfc8a035436e1c4224ff7d10789e3f14643f8]
       ionic_link_status_check+0x11c/0x170 [ionic 59bdfc8a035436e1c4224ff7d10789e3f14643f8]
       ionic_lif_deferred_work+0x129/0x280 [ionic 59bdfc8a035436e1c4224ff7d10789e3f14643f8]
       process_one_work+0x145/0x360
       worker_thread+0x2bb/0x3d0
       ? __pfx_worker_thread+0x10/0x10
       kthread+0xcc/0x100
       ? __pfx_kthread+0x10/0x10
       ret_from_fork+0x2d/0x50
       ? __pfx_kthread+0x10/0x10
       ret_from_fork_asm+0x1a/0x30
      
      Fixes: 0f3154e6
      
       ("ionic: Add Tx and Rx handling")
      Signed-off-by: default avatarTaehee Yoo <ap420073@gmail.com>
      Reviewed-by: default avatarBrett Creeley <brett.creeley@amd.com>
      Reviewed-by: default avatarShannon Nelson <shannon.nelson@amd.com>
      Link: https://lore.kernel.org/r/20240612060446.1754392-1-ap420073@gmail.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      0d19267c
    • Petr Pavlu's avatar
      net/ipv6: Fix the RT cache flush via sysctl using a previous delay · b3e5f33f
      Petr Pavlu authored
      [ Upstream commit 14a20e5b ]
      
      The net.ipv6.route.flush system parameter takes a value which specifies
      a delay used during the flush operation for aging exception routes. The
      written value is however not used in the currently requested flush and
      instead utilized only in the next one.
      
      A problem is that ipv6_sysctl_rtcache_flush() first reads the old value
      of net->ipv6.sysctl.flush_delay into a local delay variable and then
      calls proc_dointvec() which actually updates the sysctl based on the
      provided input.
      
      Fix the problem by switching the order of the two operations.
      
      Fixes: 4990509f
      
       ("[NETNS][IPV6]: Make sysctls route per namespace.")
      Signed-off-by: default avatarPetr Pavlu <petr.pavlu@suse.com>
      Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
      Link: https://lore.kernel.org/r/20240607112828.30285-1-petr.pavlu@suse.com
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      b3e5f33f
    • Jozsef Kadlecsik's avatar
      netfilter: ipset: Fix race between namespace cleanup and gc in the list:set type · c0761d1f
      Jozsef Kadlecsik authored
      [ Upstream commit 4e7aaa6b ]
      
      Lion Ackermann reported that there is a race condition between namespace cleanup
      in ipset and the garbage collection of the list:set type. The namespace
      cleanup can destroy the list:set type of sets while the gc of the set type is
      waiting to run in rcu cleanup. The latter uses data from the destroyed set which
      thus leads use after free. The patch contains the following parts:
      
      - When destroying all sets, first remove the garbage collectors, then wait
        if needed and then destroy the sets.
      - Fix the badly ordered "wait then remove gc" for the destroy a single set
        case.
      - Fix the missing rcu locking in the list:set type in the userspace test
        case.
      - Use proper RCU list handlings in the list:set type.
      
      The patch depends on c1193d9b (netfilter: ipset: Add list flush to cancel_gc).
      
      Fixes: 97f7cf1c
      
       (netfilter: ipset: fix performance regression in swap operation)
      Reported-by: default avatarLion Ackermann <nnamrec@gmail.com>
      Tested-by: default avatarLion Ackermann <nnamrec@gmail.com>
      Signed-off-by: default avatarJozsef Kadlecsik <kadlec@netfilter.org>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      c0761d1f
    • Luiz Augusto von Dentz's avatar
      Bluetooth: L2CAP: Fix rejecting L2CAP_CONN_PARAM_UPDATE_REQ · cd41a24a
      Luiz Augusto von Dentz authored
      [ Upstream commit 806a5198 ]
      
      This removes the bogus check for max > hcon->le_conn_max_interval since
      the later is just the initial maximum conn interval not the maximum the
      stack could support which is really 3200=4000ms.
      
      In order to pass GAP/CONN/CPUP/BV-05-C one shall probably enter values
      of the following fields in IXIT that would cause hci_check_conn_params
      to fail:
      
      TSPX_conn_update_int_min
      TSPX_conn_update_int_max
      TSPX_conn_update_peripheral_latency
      TSPX_conn_update_supervision_timeout
      
      Link: https://github.com/bluez/bluez/issues/847
      Fixes: e4b01951
      
       ("Bluetooth: Enforce validation on max value of connection interval")
      Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      cd41a24a
    • Gal Pressman's avatar
      net/mlx5e: Fix features validation check for tunneled UDP (non-VXLAN) packets · 860abda3
      Gal Pressman authored
      [ Upstream commit 791b4089 ]
      
      Move the vxlan_features_check() call to after we verified the packet is
      a tunneled VXLAN packet.
      
      Without this, tunneled UDP non-VXLAN packets (for ex. GENENVE) might
      wrongly not get offloaded.
      In some cases, it worked by chance as GENEVE header is the same size as
      VXLAN, but it is obviously incorrect.
      
      Fixes: e3cfc7e6
      
       ("net/mlx5e: TX, Add geneve tunnel stateless offload support")
      Signed-off-by: default avatarGal Pressman <gal@nvidia.com>
      Reviewed-by: default avatarDragos Tatulea <dtatulea@nvidia.com>
      Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Reviewed-by: default avatarWojciech Drewek <wojciech.drewek@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      860abda3
    • Eric Dumazet's avatar
      tcp: fix race in tcp_v6_syn_recv_sock() · 030df5c4
      Eric Dumazet authored
      [ Upstream commit d37fe425 ]
      
      tcp_v6_syn_recv_sock() calls ip6_dst_store() before
      inet_sk(newsk)->pinet6 has been set up.
      
      This means ip6_dst_store() writes over the parent (listener)
      np->dst_cookie.
      
      This is racy because multiple threads could share the same
      parent and their final np->dst_cookie could be wrong.
      
      Move ip6_dst_store() call after inet_sk(newsk)->pinet6
      has been changed and after the copy of parent ipv6_pinfo.
      
      Fixes: e994b2f0
      
       ("tcp: do not lock listener to process SYN packets")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      030df5c4
    • Adam Miotk's avatar
      drm/bridge/panel: Fix runtime warning on panel bridge release · 59217c57
      Adam Miotk authored
      [ Upstream commit ce62600c ]
      
      Device managed panel bridge wrappers are created by calling to
      drm_panel_bridge_add_typed() and registering a release handler for
      clean-up when the device gets unbound.
      
      Since the memory for this bridge is also managed and linked to the panel
      device, the release function should not try to free that memory.
      Moreover, the call to devm_kfree() inside drm_panel_bridge_remove() will
      fail in this case and emit a warning because the panel bridge resource
      is no longer on the device resources list (it has been removed from
      there before the call to release handlers).
      
      Fixes: 67022227
      
       ("drm/bridge: Add a devm_ allocator for panel bridge.")
      Signed-off-by: default avatarAdam Miotk <adam.miotk@arm.com>
      Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240610102739.139852-1-adam.miotk@arm.com
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      59217c57
    • Amjad Ouled-Ameur's avatar
      drm/komeda: check for error-valued pointer · 0674ed1e
      Amjad Ouled-Ameur authored
      [ Upstream commit b880018e ]
      
      komeda_pipeline_get_state() may return an error-valued pointer, thus
      check the pointer for negative or null value before dereferencing.
      
      Fixes: 502932a0
      
       ("drm/komeda: Add the initial scaler support for CORE")
      Signed-off-by: default avatarAmjad Ouled-Ameur <amjad.ouled-ameur@arm.com>
      Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240610102056.40406-1-amjad.ouled-ameur@arm.com
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      0674ed1e
    • Aleksandr Mishin's avatar
      liquidio: Adjust a NULL pointer handling path in lio_vf_rep_copy_packet · dcc7440f
      Aleksandr Mishin authored
      [ Upstream commit c44711b7 ]
      
      In lio_vf_rep_copy_packet() pg_info->page is compared to a NULL value,
      but then it is unconditionally passed to skb_add_rx_frag() which looks
      strange and could lead to null pointer dereference.
      
      lio_vf_rep_copy_packet() call trace looks like:
      	octeon_droq_process_packets
      	 octeon_droq_fast_process_packets
      	  octeon_droq_dispatch_pkt
      	   octeon_create_recv_info
      	    ...search in the dispatch_list...
      	     ->disp_fn(rdisp->rinfo, ...)
      	      lio_vf_rep_pkt_recv(struct octeon_recv_info *recv_info, ...)
      In this path there is no code which sets pg_info->page to NULL.
      So this check looks unneeded and doesn't solve potential problem.
      But I guess the author had reason to add a check and I have no such card
      and can't do real test.
      In addition, the code in the function liquidio_push_packet() in
      liquidio/lio_core.c does exactly the same.
      
      Based on this, I consider the most acceptable compromise solution to
      adjust this issue by moving skb_add_rx_frag() into conditional scope.
      
      Found by Linux Verification Center (linuxtesting.org) with SVACE.
      
      Fixes: 1f233f32
      
       ("liquidio: switchdev support for LiquidIO NIC")
      Signed-off-by: default avatarAleksandr Mishin <amishin@t-argos.ru>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      dcc7440f
    • José Expósito's avatar
      HID: logitech-dj: Fix memory leak in logi_dj_recv_switch_to_dj_mode() · 15122dc1
      José Expósito authored
      [ Upstream commit ce3af2ee ]
      
      Fix a memory leak on logi_dj_recv_send_report() error path.
      
      Fixes: 6f20d326
      
       ("HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode()")
      Signed-off-by: default avatarJosé Expósito <jose.exposito89@gmail.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      15122dc1