Skip to content
  1. Feb 23, 2024
    • Herbert Xu's avatar
      xfrm: Silence warnings triggerable by bad packets · 0a371ed6
      Herbert Xu authored
      commit 57010b8e
      
       upstream.
      
      After the elimination of inner modes, a couple of warnings that
      were previously unreachable can now be triggered by malformed
      inbound packets.
      
      Fix this by:
      
      1. Moving the setting of skb->protocol into the decap functions.
      2. Returning -EINVAL when unexpected protocol is seen.
      
      Reported-by: default avatarMaciej <Żenczykowski&lt;maze@google.com>
      Fixes: 5f24f41e
      
       ("xfrm: Remove inner/outer modes from input path")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Reviewed-by: default avatarMaciej Żenczykowski <maze@google.com>
      Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0a371ed6
    • Herbert Xu's avatar
      xfrm: Use xfrm_state selector for BEET input · cf3c8916
      Herbert Xu authored
      commit 842665a9 upstream.
      
      For BEET the inner address and therefore family is stored in the
      xfrm_state selector.  Use that when decapsulating an input packet
      instead of incorrectly relying on a non-existent tunnel protocol.
      
      Fixes: 5f24f41e
      
       ("xfrm: Remove inner/outer modes from input path")
      Reported-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cf3c8916
    • Steven Rostedt (Google)'s avatar
      tracing: Inform kmemleak of saved_cmdlines allocation · 1e4432d4
      Steven Rostedt (Google) authored
      commit 2394ac41 upstream.
      
      The allocation of the struct saved_cmdlines_buffer structure changed from:
      
              s = kmalloc(sizeof(*s), GFP_KERNEL);
      	s->saved_cmdlines = kmalloc_array(TASK_COMM_LEN, val, GFP_KERNEL);
      
      to:
      
      	orig_size = sizeof(*s) + val * TASK_COMM_LEN;
      	order = get_order(orig_size);
      	size = 1 << (order + PAGE_SHIFT);
      	page = alloc_pages(GFP_KERNEL, order);
      	if (!page)
      		return NULL;
      
      	s = page_address(page);
      	memset(s, 0, sizeof(*s));
      
      	s->saved_cmdlines = kmalloc_array(TASK_COMM_LEN, val, GFP_KERNEL);
      
      Where that s->saved_cmdlines allocation looks to be a dangling allocation
      to kmemleak. That's because kmemleak only keeps track of kmalloc()
      allocations. For allocations that use page_alloc() directly, the kmemleak
      needs to be explicitly informed about it.
      
      Add kmemleak_alloc() and kmemleak_free() around the page allocation so
      that it doesn't give the following false positive:
      
      unreferenced object 0xffff8881010c8000 (size 32760):
        comm "swapper", pid 0, jiffies 4294667296
        hex dump (first 32 bytes):
          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
        backtrace (crc ae6ec1b9):
          [<ffffffff86722405>] kmemleak_alloc+0x45/0x80
          [<ffffffff8414028d>] __kmalloc_large_node+0x10d/0x190
          [<ffffffff84146ab1>] __kmalloc+0x3b1/0x4c0
          [<ffffffff83ed7103>] allocate_cmdlines_buffer+0x113/0x230
          [<ffffffff88649c34>] tracer_alloc_buffers.isra.0+0x124/0x460
          [<ffffffff8864a174>] early_trace_init+0x14/0xa0
          [<ffffffff885dd5ae>] start_kernel+0x12e/0x3c0
          [<ffffffff885f5758>] x86_64_start_reservations+0x18/0x30
          [<ffffffff885f582b>] x86_64_start_kernel+0x7b/0x80
          [<ffffffff83a001c3>] secondary_startup_64_no_verify+0x15e/0x16b
      
      Link: https://lore.kernel.org/linux-trace-kernel/87r0hfnr9r.fsf@kernel.org/
      Link: https://lore.kernel.org/linux-trace-kernel/20240214112046.09a322d6@gandalf.local.home
      
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Fixes: 44dc5c41
      
       ("tracing: Fix wasted memory in saved_cmdlines logic")
      Reported-by: default avatarKalle Valo <kvalo@kernel.org>
      Tested-by: default avatarKalle Valo <kvalo@kernel.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1e4432d4
    • Oleg Nesterov's avatar
      fs/proc: do_task_stat: move thread_group_cputime_adjusted() outside of lock_task_sighand() · c7f9c3e9
      Oleg Nesterov authored
      commit 60f92acb
      
       upstream.
      
      Patch series "fs/proc: do_task_stat: use sig->stats_".
      
      do_task_stat() has the same problem as getrusage() had before "getrusage:
      use sig->stats_lock rather than lock_task_sighand()": a hard lockup.  If
      NR_CPUS threads call lock_task_sighand() at the same time and the process
      has NR_THREADS, spin_lock_irq will spin with irqs disabled O(NR_CPUS *
      NR_THREADS) time.
      
      
      This patch (of 3):
      
      thread_group_cputime() does its own locking, we can safely shift
      thread_group_cputime_adjusted() which does another for_each_thread loop
      outside of ->siglock protected section.
      
      Not only this removes for_each_thread() from the critical section with
      irqs disabled, this removes another case when stats_lock is taken with
      siglock held.  We want to remove this dependency, then we can change the
      users of stats_lock to not disable irqs.
      
      Link: https://lkml.kernel.org/r/20240123153313.GA21832@redhat.com
      Link: https://lkml.kernel.org/r/20240123153355.GA21854@redhat.com
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarDylan Hatch <dylanbhatch@google.com>
      Cc: Eric W. Biederman <ebiederm@xmission.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>
      c7f9c3e9
    • Konrad Dybcio's avatar
      pmdomain: core: Move the unused cleanup to a _sync initcall · 9359ff1a
      Konrad Dybcio authored
      commit 741ba013 upstream.
      
      The unused clock cleanup uses the _sync initcall to give all users at
      earlier initcalls time to probe. Do the same to avoid leaving some PDs
      dangling at "on" (which actually happened on qcom!).
      
      Fixes: 2fe71dcd
      
       ("PM / domains: Add late_initcall to disable unused PM domains")
      Signed-off-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20231227-topic-pmdomain_sync_cleanup-v1-1-5f36769d538b@linaro.org
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9359ff1a
    • Oleksij Rempel's avatar
      can: j1939: Fix UAF in j1939_sk_match_filter during setsockopt(SO_J1939_FILTER) · 4dd684d4
      Oleksij Rempel authored
      commit efe7cf82 upstream.
      
      Lock jsk->sk to prevent UAF when setsockopt(..., SO_J1939_FILTER, ...)
      modifies jsk->filters while receiving packets.
      
      Following trace was seen on affected system:
       ==================================================================
       BUG: KASAN: slab-use-after-free in j1939_sk_recv_match_one+0x1af/0x2d0 [can_j1939]
       Read of size 4 at addr ffff888012144014 by task j1939/350
      
       CPU: 0 PID: 350 Comm: j1939 Tainted: G        W  OE      6.5.0-rc5 #1
       Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
       Call Trace:
        print_report+0xd3/0x620
        ? kasan_complete_mode_report_info+0x7d/0x200
        ? j1939_sk_recv_match_one+0x1af/0x2d0 [can_j1939]
        kasan_report+0xc2/0x100
        ? j1939_sk_recv_match_one+0x1af/0x2d0 [can_j1939]
        __asan_load4+0x84/0xb0
        j1939_sk_recv_match_one+0x1af/0x2d0 [can_j1939]
        j1939_sk_recv+0x20b/0x320 [can_j1939]
        ? __kasan_check_write+0x18/0x20
        ? __pfx_j1939_sk_recv+0x10/0x10 [can_j1939]
        ? j1939_simple_recv+0x69/0x280 [can_j1939]
        ? j1939_ac_recv+0x5e/0x310 [can_j1939]
        j1939_can_recv+0x43f/0x580 [can_j1939]
        ? __pfx_j1939_can_recv+0x10/0x10 [can_j1939]
        ? raw_rcv+0x42/0x3c0 [can_raw]
        ? __pfx_j1939_can_recv+0x10/0x10 [can_j1939]
        can_rcv_filter+0x11f/0x350 [can]
        can_receive+0x12f/0x190 [can]
        ? __pfx_can_rcv+0x10/0x10 [can]
        can_rcv+0xdd/0x130 [can]
        ? __pfx_can_rcv+0x10/0x10 [can]
        __netif_receive_skb_one_core+0x13d/0x150
        ? __pfx___netif_receive_skb_one_core+0x10/0x10
        ? __kasan_check_write+0x18/0x20
        ? _raw_spin_lock_irq+0x8c/0xe0
        __netif_receive_skb+0x23/0xb0
        process_backlog+0x107/0x260
        __napi_poll+0x69/0x310
        net_rx_action+0x2a1/0x580
        ? __pfx_net_rx_action+0x10/0x10
        ? __pfx__raw_spin_lock+0x10/0x10
        ? handle_irq_event+0x7d/0xa0
        __do_softirq+0xf3/0x3f8
        do_softirq+0x53/0x80
        </IRQ>
        <TASK>
        __local_bh_enable_ip+0x6e/0x70
        netif_rx+0x16b/0x180
        can_send+0x32b/0x520 [can]
        ? __pfx_can_send+0x10/0x10 [can]
        ? __check_object_size+0x299/0x410
        raw_sendmsg+0x572/0x6d0 [can_raw]
        ? __pfx_raw_sendmsg+0x10/0x10 [can_raw]
        ? apparmor_socket_sendmsg+0x2f/0x40
        ? __pfx_raw_sendmsg+0x10/0x10 [can_raw]
        sock_sendmsg+0xef/0x100
        sock_write_iter+0x162/0x220
        ? __pfx_sock_write_iter+0x10/0x10
        ? __rtnl_unlock+0x47/0x80
        ? security_file_permission+0x54/0x320
        vfs_write+0x6ba/0x750
        ? __pfx_vfs_write+0x10/0x10
        ? __fget_light+0x1ca/0x1f0
        ? __rcu_read_unlock+0x5b/0x280
        ksys_write+0x143/0x170
        ? __pfx_ksys_write+0x10/0x10
        ? __kasan_check_read+0x15/0x20
        ? fpregs_assert_state_consistent+0x62/0x70
        __x64_sys_write+0x47/0x60
        do_syscall_64+0x60/0x90
        ? do_syscall_64+0x6d/0x90
        ? irqentry_exit+0x3f/0x50
        ? exc_page_fault+0x79/0xf0
        entry_SYSCALL_64_after_hwframe+0x6e/0xd8
      
       Allocated by task 348:
        kasan_save_stack+0x2a/0x50
        kasan_set_track+0x29/0x40
        kasan_save_alloc_info+0x1f/0x30
        __kasan_kmalloc+0xb5/0xc0
        __kmalloc_node_track_caller+0x67/0x160
        j1939_sk_setsockopt+0x284/0x450 [can_j1939]
        __sys_setsockopt+0x15c/0x2f0
        __x64_sys_setsockopt+0x6b/0x80
        do_syscall_64+0x60/0x90
        entry_SYSCALL_64_after_hwframe+0x6e/0xd8
      
       Freed by task 349:
        kasan_save_stack+0x2a/0x50
        kasan_set_track+0x29/0x40
        kasan_save_free_info+0x2f/0x50
        __kasan_slab_free+0x12e/0x1c0
        __kmem_cache_free+0x1b9/0x380
        kfree+0x7a/0x120
        j1939_sk_setsockopt+0x3b2/0x450 [can_j1939]
        __sys_setsockopt+0x15c/0x2f0
        __x64_sys_setsockopt+0x6b/0x80
        do_syscall_64+0x60/0x90
        entry_SYSCALL_64_after_hwframe+0x6e/0xd8
      
      Fixes: 9d71dd0c
      
       ("can: add support of SAE J1939 protocol")
      Reported-by: default avatarSili Luo <rootlab@huawei.com>
      Suggested-by: default avatarSili Luo <rootlab@huawei.com>
      Acked-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Link: https://lore.kernel.org/all/20231020133814.383996-1-o.rempel@pengutronix.de
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4dd684d4
    • Ziqi Zhao's avatar
      can: j1939: prevent deadlock by changing j1939_socks_lock to rwlock · aedda066
      Ziqi Zhao authored
      commit 6cdedc18
      
       upstream.
      
      The following 3 locks would race against each other, causing the
      deadlock situation in the Syzbot bug report:
      
      - j1939_socks_lock
      - active_session_list_lock
      - sk_session_queue_lock
      
      A reasonable fix is to change j1939_socks_lock to an rwlock, since in
      the rare situations where a write lock is required for the linked list
      that j1939_socks_lock is protecting, the code does not attempt to
      acquire any more locks. This would break the circular lock dependency,
      where, for example, the current thread already locks j1939_socks_lock
      and attempts to acquire sk_session_queue_lock, and at the same time,
      another thread attempts to acquire j1939_socks_lock while holding
      sk_session_queue_lock.
      
      NOTE: This patch along does not fix the unregister_netdevice bug
      reported by Syzbot; instead, it solves a deadlock situation to prepare
      for one or more further patches to actually fix the Syzbot bug, which
      appears to be a reference counting problem within the j1939 codebase.
      
      Reported-by: default avatar <syzbot+1591462f226d9cbf0564@syzkaller.appspotmail.com>
      Signed-off-by: default avatarZiqi Zhao <astrajoan@yahoo.com>
      Reviewed-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Acked-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Link: https://lore.kernel.org/all/20230721162226.8639-1-astrajoan@yahoo.com
      [mkl: remove unrelated newline change]
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      aedda066
    • Maxime Jayat's avatar
      can: netlink: Fix TDCO calculation using the old data bittiming · 8a72a468
      Maxime Jayat authored
      commit 2aa0a5e6 upstream.
      
      The TDCO calculation was done using the currently applied data bittiming,
      instead of the newly computed data bittiming, which means that the TDCO
      had an invalid value unless setting the same data bittiming twice.
      
      Fixes: d99755f7
      
       ("can: netlink: add interface for CAN-FD Transmitter Delay Compensation (TDC)")
      Signed-off-by: default avatarMaxime Jayat <maxime.jayat@mobile-devices.fr>
      Reviewed-by: default avatarVincent Mailhol <mailhol.vincent@wanadoo.fr>
      Link: https://lore.kernel.org/all/40579c18-63c0-43a4-8d4c-f3a6c1c0b417@munic.io
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8a72a468
    • Nuno Sa's avatar
      of: property: fix typo in io-channels · 08c19488
      Nuno Sa authored
      commit 8f7e9179 upstream.
      
      The property is io-channels and not io-channel. This was effectively
      preventing the devlink creation.
      
      Fixes: 8e12257d
      
       ("of: property: Add device link support for iommus, mboxes and io-channels")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarNuno Sa <nuno.sa@analog.com>
      Reviewed-by: default avatarSaravana Kannan <saravanak@google.com>
      Acked-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
      Link: https://lore.kernel.org/r/20240123-iio-backend-v7-1-1bff236b8693@analog.com
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      08c19488
    • Prakash Sangappa's avatar
      mm: hugetlb pages should not be reserved by shmat() if SHM_NORESERVE · 79081197
      Prakash Sangappa authored
      commit e656c7a9
      
       upstream.
      
      For shared memory of type SHM_HUGETLB, hugetlb pages are reserved in
      shmget() call.  If SHM_NORESERVE flags is specified then the hugetlb pages
      are not reserved.  However when the shared memory is attached with the
      shmat() call the hugetlb pages are getting reserved incorrectly for
      SHM_HUGETLB shared memory created with SHM_NORESERVE which is a bug.
      
      -------------------------------
      Following test shows the issue.
      
      $cat shmhtb.c
      
      int main()
      {
      	int shmflags = 0660 | IPC_CREAT | SHM_HUGETLB | SHM_NORESERVE;
      	int shmid;
      
      	shmid = shmget(SKEY, SHMSZ, shmflags);
      	if (shmid < 0)
      	{
      		printf("shmat: shmget() failed, %d\n", errno);
      		return 1;
      	}
      	printf("After shmget()\n");
      	system("cat /proc/meminfo | grep -i hugepages_");
      
      	shmat(shmid, NULL, 0);
      	printf("\nAfter shmat()\n");
      	system("cat /proc/meminfo | grep -i hugepages_");
      
      	shmctl(shmid, IPC_RMID, NULL);
      	return 0;
      }
      
       #sysctl -w vm.nr_hugepages=20
       #./shmhtb
      
      After shmget()
      HugePages_Total:      20
      HugePages_Free:       20
      HugePages_Rsvd:        0
      HugePages_Surp:        0
      
      After shmat()
      HugePages_Total:      20
      HugePages_Free:       20
      HugePages_Rsvd:        5 <--
      HugePages_Surp:        0
      --------------------------------
      
      Fix is to ensure that hugetlb pages are not reserved for SHM_HUGETLB shared
      memory in the shmat() call.
      
      Link: https://lkml.kernel.org/r/1706040282-12388-1-git-send-email-prakash.sangappa@oracle.com
      Signed-off-by: default avatarPrakash Sangappa <prakash.sangappa@oracle.com>
      Acked-by: default avatarMuchun Song <muchun.song@linux.dev>
      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>
      79081197
    • Oscar Salvador's avatar
      fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super · 2e2c0710
      Oscar Salvador authored
      commit 79d72c68 upstream.
      
      When configuring a hugetlb filesystem via the fsconfig() syscall, there is
      a possible NULL dereference in hugetlbfs_fill_super() caused by assigning
      NULL to ctx->hstate in hugetlbfs_parse_param() when the requested pagesize
      is non valid.
      
      E.g: Taking the following steps:
      
           fd = fsopen("hugetlbfs", FSOPEN_CLOEXEC);
           fsconfig(fd, FSCONFIG_SET_STRING, "pagesize", "1024", 0);
           fsconfig(fd, FSCONFIG_CMD_CREATE, NULL, NULL, 0);
      
      Given that the requested "pagesize" is invalid, ctxt->hstate will be replaced
      with NULL, losing its previous value, and we will print an error:
      
       ...
       ...
       case Opt_pagesize:
       ps = memparse(param->string, &rest);
       ctx->hstate = h;
       if (!ctx->hstate) {
               pr_err("Unsupported page size %lu MB\n", ps / SZ_1M);
               return -EINVAL;
       }
       return 0;
       ...
       ...
      
      This is a problem because later on, we will dereference ctxt->hstate in
      hugetlbfs_fill_super()
      
       ...
       ...
       sb->s_blocksize = huge_page_size(ctx->hstate);
       ...
       ...
      
      Causing below Oops.
      
      Fix this by replacing cxt->hstate value only when then pagesize is known
      to be valid.
      
       kernel: hugetlbfs: Unsupported page size 0 MB
       kernel: BUG: kernel NULL pointer dereference, address: 0000000000000028
       kernel: #PF: supervisor read access in kernel mode
       kernel: #PF: error_code(0x0000) - not-present page
       kernel: PGD 800000010f66c067 P4D 800000010f66c067 PUD 1b22f8067 PMD 0
       kernel: Oops: 0000 [#1] PREEMPT SMP PTI
       kernel: CPU: 4 PID: 5659 Comm: syscall Tainted: G            E      6.8.0-rc2-default+ #22 5a47c3fef76212addcc6eb71344aabc35190ae8f
       kernel: Hardware name: Intel Corp. GROVEPORT/GROVEPORT, BIOS GVPRCRB1.86B.0016.D04.1705030402 05/03/2017
       kernel: RIP: 0010:hugetlbfs_fill_super+0xb4/0x1a0
       kernel: Code: 48 8b 3b e8 3e c6 ed ff 48 85 c0 48 89 45 20 0f 84 d6 00 00 00 48 b8 ff ff ff ff ff ff ff 7f 4c 89 e7 49 89 44 24 20 48 8b 03 <8b> 48 28 b8 00 10 00 00 48 d3 e0 49 89 44 24 18 48 8b 03 8b 40 28
       kernel: RSP: 0018:ffffbe9960fcbd48 EFLAGS: 00010246
       kernel: RAX: 0000000000000000 RBX: ffff9af5272ae780 RCX: 0000000000372004
       kernel: RDX: ffffffffffffffff RSI: ffffffffffffffff RDI: ffff9af555e9b000
       kernel: RBP: ffff9af52ee66b00 R08: 0000000000000040 R09: 0000000000370004
       kernel: R10: ffffbe9960fcbd48 R11: 0000000000000040 R12: ffff9af555e9b000
       kernel: R13: ffffffffa66b86c0 R14: ffff9af507d2f400 R15: ffff9af507d2f400
       kernel: FS:  00007ffbc0ba4740(0000) GS:ffff9b0bd7000000(0000) knlGS:0000000000000000
       kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       kernel: CR2: 0000000000000028 CR3: 00000001b1ee0000 CR4: 00000000001506f0
       kernel: Call Trace:
       kernel:  <TASK>
       kernel:  ? __die_body+0x1a/0x60
       kernel:  ? page_fault_oops+0x16f/0x4a0
       kernel:  ? search_bpf_extables+0x65/0x70
       kernel:  ? fixup_exception+0x22/0x310
       kernel:  ? exc_page_fault+0x69/0x150
       kernel:  ? asm_exc_page_fault+0x22/0x30
       kernel:  ? __pfx_hugetlbfs_fill_super+0x10/0x10
       kernel:  ? hugetlbfs_fill_super+0xb4/0x1a0
       kernel:  ? hugetlbfs_fill_super+0x28/0x1a0
       kernel:  ? __pfx_hugetlbfs_fill_super+0x10/0x10
       kernel:  vfs_get_super+0x40/0xa0
       kernel:  ? __pfx_bpf_lsm_capable+0x10/0x10
       kernel:  vfs_get_tree+0x25/0xd0
       kernel:  vfs_cmd_create+0x64/0xe0
       kernel:  __x64_sys_fsconfig+0x395/0x410
       kernel:  do_syscall_64+0x80/0x160
       kernel:  ? syscall_exit_to_user_mode+0x82/0x240
       kernel:  ? do_syscall_64+0x8d/0x160
       kernel:  ? syscall_exit_to_user_mode+0x82/0x240
       kernel:  ? do_syscall_64+0x8d/0x160
       kernel:  ? exc_page_fault+0x69/0x150
       kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0x76
       kernel: RIP: 0033:0x7ffbc0cb87c9
       kernel: Code: 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 66 90 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 73 01 c3 48 8b 0d 97 96 0d 00 f7 d8 64 89 01 48
       kernel: RSP: 002b:00007ffc29d2f388 EFLAGS: 00000206 ORIG_RAX: 00000000000001af
       kernel: RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ffbc0cb87c9
       kernel: RDX: 0000000000000000 RSI: 0000000000000006 RDI: 0000000000000003
       kernel: RBP: 00007ffc29d2f3b0 R08: 0000000000000000 R09: 0000000000000000
       kernel: R10: 0000000000000000 R11: 0000000000000206 R12: 0000000000000000
       kernel: R13: 00007ffc29d2f4c0 R14: 0000000000000000 R15: 0000000000000000
       kernel:  </TASK>
       kernel: Modules linked in: rpcsec_gss_krb5(E) auth_rpcgss(E) nfsv4(E) dns_resolver(E) nfs(E) lockd(E) grace(E) sunrpc(E) netfs(E) af_packet(E) bridge(E) stp(E) llc(E) iscsi_ibft(E) iscsi_boot_sysfs(E) intel_rapl_msr(E) intel_rapl_common(E) iTCO_wdt(E) intel_pmc_bxt(E) sb_edac(E) iTCO_vendor_support(E) x86_pkg_temp_thermal(E) intel_powerclamp(E) coretemp(E) kvm_intel(E) rfkill(E) ipmi_ssif(E) kvm(E) acpi_ipmi(E) irqbypass(E) pcspkr(E) igb(E) ipmi_si(E) mei_me(E) i2c_i801(E) joydev(E) intel_pch_thermal(E) i2c_smbus(E) dca(E) lpc_ich(E) mei(E) ipmi_devintf(E) ipmi_msghandler(E) acpi_pad(E) tiny_power_button(E) button(E) fuse(E) efi_pstore(E) configfs(E) ip_tables(E) x_tables(E) ext4(E) mbcache(E) jbd2(E) hid_generic(E) usbhid(E) sd_mod(E) t10_pi(E) crct10dif_pclmul(E) crc32_pclmul(E) crc32c_intel(E) polyval_clmulni(E) ahci(E) xhci_pci(E) polyval_generic(E) gf128mul(E) ghash_clmulni_intel(E) sha512_ssse3(E) sha256_ssse3(E) xhci_pci_renesas(E) libahci(E) ehci_pci(E) sha1_ssse3(E) xhci_hcd(E) ehci_hcd(E) libata(E)
       kernel:  mgag200(E) i2c_algo_bit(E) usbcore(E) wmi(E) sg(E) dm_multipath(E) dm_mod(E) scsi_dh_rdac(E) scsi_dh_emc(E) scsi_dh_alua(E) scsi_mod(E) scsi_common(E) aesni_intel(E) crypto_simd(E) cryptd(E)
       kernel: Unloaded tainted modules: acpi_cpufreq(E):1 fjes(E):1
       kernel: CR2: 0000000000000028
       kernel: ---[ end trace 0000000000000000 ]---
       kernel: RIP: 0010:hugetlbfs_fill_super+0xb4/0x1a0
       kernel: Code: 48 8b 3b e8 3e c6 ed ff 48 85 c0 48 89 45 20 0f 84 d6 00 00 00 48 b8 ff ff ff ff ff ff ff 7f 4c 89 e7 49 89 44 24 20 48 8b 03 <8b> 48 28 b8 00 10 00 00 48 d3 e0 49 89 44 24 18 48 8b 03 8b 40 28
       kernel: RSP: 0018:ffffbe9960fcbd48 EFLAGS: 00010246
       kernel: RAX: 0000000000000000 RBX: ffff9af5272ae780 RCX: 0000000000372004
       kernel: RDX: ffffffffffffffff RSI: ffffffffffffffff RDI: ffff9af555e9b000
       kernel: RBP: ffff9af52ee66b00 R08: 0000000000000040 R09: 0000000000370004
       kernel: R10: ffffbe9960fcbd48 R11: 0000000000000040 R12: ffff9af555e9b000
       kernel: R13: ffffffffa66b86c0 R14: ffff9af507d2f400 R15: ffff9af507d2f400
       kernel: FS:  00007ffbc0ba4740(0000) GS:ffff9b0bd7000000(0000) knlGS:0000000000000000
       kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       kernel: CR2: 0000000000000028 CR3: 00000001b1ee0000 CR4: 00000000001506f0
      
      Link: https://lkml.kernel.org/r/20240130210418.3771-1-osalvador@suse.de
      Fixes: 32021982
      
       ("hugetlbfs: Convert to fs_context")
      Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
      Signed-off-by: default avatarOscar Salvador <osalvador@suse.de>
      Acked-by: default avatarMuchun Song <muchun.song@linux.dev>
      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>
      2e2c0710
    • Rishabh Dave's avatar
      ceph: prevent use-after-free in encode_cap_msg() · f3f98d7d
      Rishabh Dave authored
      commit cda4672d
      
       upstream.
      
      In fs/ceph/caps.c, in encode_cap_msg(), "use after free" error was
      caught by KASAN at this line - 'ceph_buffer_get(arg->xattr_buf);'. This
      implies before the refcount could be increment here, it was freed.
      
      In same file, in "handle_cap_grant()" refcount is decremented by this
      line - 'ceph_buffer_put(ci->i_xattrs.blob);'. It appears that a race
      occurred and resource was freed by the latter line before the former
      line could increment it.
      
      encode_cap_msg() is called by __send_cap() and __send_cap() is called by
      ceph_check_caps() after calling __prep_cap(). __prep_cap() is where
      arg->xattr_buf is assigned to ci->i_xattrs.blob. This is the spot where
      the refcount must be increased to prevent "use after free" error.
      
      Cc: stable@vger.kernel.org
      Link: https://tracker.ceph.com/issues/59259
      Signed-off-by: default avatarRishabh Dave <ridave@redhat.com>
      Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
      Reviewed-by: default avatarXiubo Li <xiubli@redhat.com>
      Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f3f98d7d
    • Shradha Gupta's avatar
      hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed · 309ef7de
      Shradha Gupta authored
      commit 9cae43da upstream.
      
      If hv_netvsc driver is unloaded and reloaded, the NET_DEVICE_REGISTER
      handler cannot perform VF register successfully as the register call
      is received before netvsc_probe is finished. This is because we
      register register_netdevice_notifier() very early( even before
      vmbus_driver_register()).
      To fix this, we try to register each such matching VF( if it is visible
      as a netdevice) at the end of netvsc_probe.
      
      Cc: stable@vger.kernel.org
      Fixes: 85520856
      
       ("hv_netvsc: Fix race of register_netdevice_notifier and VF register")
      Suggested-by: default avatarDexuan Cui <decui@microsoft.com>
      Signed-off-by: default avatarShradha Gupta <shradhagupta@linux.microsoft.com>
      Reviewed-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: default avatarDexuan Cui <decui@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      309ef7de
    • Sinthu Raja's avatar
      net: ethernet: ti: cpsw_new: enable mac_managed_pm to fix mdio · 4888754f
      Sinthu Raja authored
      commit 9def04e7 upstream.
      
      The below commit  introduced a WARN when phy state is not in the states:
      PHY_HALTED, PHY_READY and PHY_UP.
      commit 744d23c7 ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
      
      When cpsw_new resumes, there have port in PHY_NOLINK state, so the below
      warning comes out. Set mac_managed_pm be true to tell mdio that the phy
      resume/suspend is managed by the mac, to fix the following warning:
      
      WARNING: CPU: 0 PID: 965 at drivers/net/phy/phy_device.c:326 mdio_bus_phy_resume+0x140/0x144
      CPU: 0 PID: 965 Comm: sh Tainted: G           O       6.1.46-g247b2535b2 #1
      Hardware name: Generic AM33XX (Flattened Device Tree)
       unwind_backtrace from show_stack+0x18/0x1c
       show_stack from dump_stack_lvl+0x24/0x2c
       dump_stack_lvl from __warn+0x84/0x15c
       __warn from warn_slowpath_fmt+0x1a8/0x1c8
       warn_slowpath_fmt from mdio_bus_phy_resume+0x140/0x144
       mdio_bus_phy_resume from dpm_run_callback+0x3c/0x140
       dpm_run_callback from device_resume+0xb8/0x2b8
       device_resume from dpm_resume+0x144/0x314
       dpm_resume from dpm_resume_end+0x14/0x20
       dpm_resume_end from suspend_devices_and_enter+0xd0/0x924
       suspend_devices_and_enter from pm_suspend+0x2e0/0x33c
       pm_suspend from state_store+0x74/0xd0
       state_store from kernfs_fop_write_iter+0x104/0x1ec
       kernfs_fop_write_iter from vfs_write+0x1b8/0x358
       vfs_write from ksys_write+0x78/0xf8
       ksys_write from ret_fast_syscall+0x0/0x54
      Exception stack(0xe094dfa8 to 0xe094dff0)
      dfa0:                   00000004 005c3fb8 00000001 005c3fb8 00000004 00000001
      dfc0: 00000004 005c3fb8 b6f6bba0 00000004 00000004 0059edb8 00000000 00000000
      dfe0: 00000004 bed918f0 b6f09bd3 b6e89a66
      
      Cc: <stable@vger.kernel.org> # v6.0+
      Fixes: 744d23c7 ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
      Fixes: fba863b8
      
       ("net: phy: make PHY PM ops a no-op if MAC driver manages PHY PM")
      Signed-off-by: default avatarSinthu Raja <sinthu.raja@ti.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4888754f
    • Alexandra Winter's avatar
      s390/qeth: Fix potential loss of L3-IP@ in case of network issues · 5140c4d5
      Alexandra Winter authored
      commit 2fe8a236 upstream.
      
      Symptom:
      In case of a bad cable connection (e.g. dirty optics) a fast sequence of
      network DOWN-UP-DOWN-UP could happen. UP triggers recovery of the qeth
      interface. In case of a second DOWN while recovery is still ongoing, it
      can happen that the IP@ of a Layer3 qeth interface is lost and will not
      be recovered by the second UP.
      
      Problem:
      When registration of IP addresses with Layer 3 qeth devices fails, (e.g.
      because of bad address format) the respective IP address is deleted from
      its hash-table in the driver. If registration fails because of a ENETDOWN
      condition, the address should stay in the hashtable, so a subsequent
      recovery can restore it.
      
      3caa4af8 ("qeth: keep ip-address after LAN_OFFLINE failure")
      fixes this for registration failures during normal operation, but not
      during recovery.
      
      Solution:
      Keep L3-IP address in case of ENETDOWN in qeth_l3_recover_ip(). For
      consistency with qeth_l3_add_ip() we also keep it in case of EADDRINUSE,
      i.e. for some reason the card already/still has this address registered.
      
      Fixes: 4a71df50
      
       ("qeth: new qeth device driver")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
      Link: https://lore.kernel.org/r/20240206085849.2902775-1-wintera@linux.ibm.com
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5140c4d5
    • Sinthu Raja's avatar
      net: ethernet: ti: cpsw: enable mac_managed_pm to fix mdio · 058fbaf7
      Sinthu Raja authored
      commit bc4ce46b upstream.
      
      The below commit  introduced a WARN when phy state is not in the states:
      PHY_HALTED, PHY_READY and PHY_UP.
      commit 744d23c7 ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
      
      When cpsw resumes, there have port in PHY_NOLINK state, so the below
      warning comes out. Set mac_managed_pm be true to tell mdio that the phy
      resume/suspend is managed by the mac, to fix the following warning:
      
      WARNING: CPU: 0 PID: 965 at drivers/net/phy/phy_device.c:326 mdio_bus_phy_resume+0x140/0x144
      CPU: 0 PID: 965 Comm: sh Tainted: G           O       6.1.46-g247b2535b2 #1
      Hardware name: Generic AM33XX (Flattened Device Tree)
       unwind_backtrace from show_stack+0x18/0x1c
       show_stack from dump_stack_lvl+0x24/0x2c
       dump_stack_lvl from __warn+0x84/0x15c
       __warn from warn_slowpath_fmt+0x1a8/0x1c8
       warn_slowpath_fmt from mdio_bus_phy_resume+0x140/0x144
       mdio_bus_phy_resume from dpm_run_callback+0x3c/0x140
       dpm_run_callback from device_resume+0xb8/0x2b8
       device_resume from dpm_resume+0x144/0x314
       dpm_resume from dpm_resume_end+0x14/0x20
       dpm_resume_end from suspend_devices_and_enter+0xd0/0x924
       suspend_devices_and_enter from pm_suspend+0x2e0/0x33c
       pm_suspend from state_store+0x74/0xd0
       state_store from kernfs_fop_write_iter+0x104/0x1ec
       kernfs_fop_write_iter from vfs_write+0x1b8/0x358
       vfs_write from ksys_write+0x78/0xf8
       ksys_write from ret_fast_syscall+0x0/0x54
      Exception stack(0xe094dfa8 to 0xe094dff0)
      dfa0:                   00000004 005c3fb8 00000001 005c3fb8 00000004 00000001
      dfc0: 00000004 005c3fb8 b6f6bba0 00000004 00000004 0059edb8 00000000 00000000
      dfe0: 00000004 bed918f0 b6f09bd3 b6e89a66
      
      Cc: <stable@vger.kernel.org> # v6.0+
      Fixes: 744d23c7 ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
      Fixes: fba863b8
      
       ("net: phy: make PHY PM ops a no-op if MAC driver manages PHY PM")
      Signed-off-by: default avatarSinthu Raja <sinthu.raja@ti.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      058fbaf7
    • Christian Brauner's avatar
      fs: relax mount_setattr() permission checks · 95de4ad1
      Christian Brauner authored
      commit 46f5ab76
      
       upstream.
      
      When we added mount_setattr() I added additional checks compared to the
      legacy do_reconfigure_mnt() and do_change_type() helpers used by regular
      mount(2). If that mount had a parent then verify that the caller and the
      mount namespace the mount is attached to match and if not make sure that
      it's an anonymous mount.
      
      The real rootfs falls into neither category. It is neither an anoymous
      mount because it is obviously attached to the initial mount namespace
      but it also obviously doesn't have a parent mount. So that means legacy
      mount(2) allows changing mount properties on the real rootfs but
      mount_setattr(2) blocks this. I never thought much about this but of
      course someone on this planet of earth changes properties on the real
      rootfs as can be seen in [1].
      
      Since util-linux finally switched to the new mount api in 2.39 not so
      long ago it also relies on mount_setattr() and that surfaced this issue
      when Fedora 39 finally switched to it. Fix this.
      
      Link: https://bugzilla.redhat.com/show_bug.cgi?id=2256843
      Link: https://lore.kernel.org/r/20240206-vfs-mount-rootfs-v1-1-19b335eee133@kernel.org
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      Reported-by: default avatarKarel Zak <kzak@redhat.com>
      Cc: stable@vger.kernel.org # v5.12+
      Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      95de4ad1
    • Daniel Bristot de Oliveira's avatar
      tools/rtla: Fix Makefile compiler options for clang · 3ff3e6a9
      Daniel Bristot de Oliveira authored
      commit bc4cbc9d upstream.
      
      The following errors are showing up when compiling rtla with clang:
      
       $ make HOSTCC=clang CC=clang LLVM_IAS=1
       [...]
      
        clang -O -g -DVERSION=\"6.8.0-rc1\" -flto=auto -ffat-lto-objects
      	-fexceptions -fstack-protector-strong
      	-fasynchronous-unwind-tables -fstack-clash-protection  -Wall
      	-Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
      	-Wp,-D_GLIBCXX_ASSERTIONS -Wno-maybe-uninitialized
      	$(pkg-config --cflags libtracefs)    -c -o src/utils.o src/utils.c
      
        clang: warning: optimization flag '-ffat-lto-objects' is not supported [-Wignored-optimization-argument]
        warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [-Wunknown-warning-option]
        1 warning generated.
      
        clang -o rtla -ggdb  src/osnoise.o src/osnoise_hist.o src/osnoise_top.o
        src/rtla.o src/timerlat_aa.o src/timerlat.o src/timerlat_hist.o
        src/timerlat_top.o src/timerlat_u.o src/trace.o src/utils.o $(pkg-config --libs libtracefs)
      
        src/osnoise.o: file not recognized: file format not recognized
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
        make: *** [Makefile:110: rtla] Error 1
      
      Solve these issues by:
        - removing -ffat-lto-objects and -Wno-maybe-uninitialized if using clang
        - informing the linker about -flto=auto
      
      Link: https://lore.kernel.org/linux-trace-kernel/567ac1b94effc228ce9a0225b9df7232a9b35b55.1707217097.git.bristot@kernel.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Bill Wendling <morbo@google.com>
      Cc: Justin Stitt <justinstitt@google.com>
      Fixes: 1a7b22ab
      
       ("tools/rtla: Build with EXTRA_{C,LD}FLAGS")
      Suggested-by: default avatarDonald Zickus <dzickus@redhat.com>
      Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3ff3e6a9
    • Daniel Bristot de Oliveira's avatar
      tools/rtla: Fix uninitialized bucket/data->bucket_size warning · 4ee28d5a
      Daniel Bristot de Oliveira authored
      commit 64dc40f7 upstream.
      
      When compiling rtla with clang, I am getting the following warnings:
      
      $ make HOSTCC=clang CC=clang LLVM_IAS=1
      
      [..]
      clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions
      	-fstack-protector-strong -fasynchronous-unwind-tables
      	-fstack-clash-protection  -Wall -Werror=format-security
      	-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
      	$(pkg-config --cflags libtracefs)
      	-c -o src/osnoise_hist.o src/osnoise_hist.c
      src/osnoise_hist.c:138:6: warning: variable 'bucket' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
        138 |         if (data->bucket_size)
            |             ^~~~~~~~~~~~~~~~~
      src/osnoise_hist.c:149:6: note: uninitialized use occurs here
        149 |         if (bucket < entries)
            |             ^~~~~~
      src/osnoise_hist.c:138:2: note: remove the 'if' if its condition is always true
        138 |         if (data->bucket_size)
            |         ^~~~~~~~~~~~~~~~~~~~~~
        139 |                 bucket = duration / data->bucket_size;
      src/osnoise_hist.c:132:12: note: initialize the variable 'bucket' to silence this warning
        132 |         int bucket;
            |                   ^
            |                    = 0
      1 warning generated.
      
      [...]
      
      clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions
      	-fstack-protector-strong -fasynchronous-unwind-tables
      	-fstack-clash-protection  -Wall -Werror=format-security
      	-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
      	$(pkg-config --cflags libtracefs)
      	-c -o src/timerlat_hist.o src/timerlat_hist.c
      src/timerlat_hist.c:181:6: warning: variable 'bucket' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
        181 |         if (data->bucket_size)
            |             ^~~~~~~~~~~~~~~~~
      src/timerlat_hist.c:204:6: note: uninitialized use occurs here
        204 |         if (bucket < entries)
            |             ^~~~~~
      src/timerlat_hist.c:181:2: note: remove the 'if' if its condition is always true
        181 |         if (data->bucket_size)
            |         ^~~~~~~~~~~~~~~~~~~~~~
        182 |                 bucket = latency / data->bucket_size;
      src/timerlat_hist.c:175:12: note: initialize the variable 'bucket' to silence this warning
        175 |         int bucket;
            |                   ^
            |                    = 0
      1 warning generated.
      
      This is a legit warning, but data->bucket_size is always > 0 (see
      timerlat_hist_parse_args()), so the if is not necessary.
      
      Remove the unneeded if (data->bucket_size) to avoid the warning.
      
      Link: https://lkml.kernel.org/r/6e1b1665cd99042ae705b3e0fc410858c4c42346.1707217097.git.bristot@kernel.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Bill Wendling <morbo@google.com>
      Cc: Justin Stitt <justinstitt@google.com>
      Cc: Donald Zickus <dzickus@redhat.com>
      Fixes: 1eeb6328 ("rtla/timerlat: Add timerlat hist mode")
      Fixes: 829a6c0b
      
       ("rtla/osnoise: Add the hist mode")
      Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4ee28d5a
    • John Kacur's avatar
      tools/rtla: Exit with EXIT_SUCCESS when help is invoked · 5ccb527b
      John Kacur authored
      commit b5f31936 upstream.
      
      Fix rtla so that the following commands exit with 0 when help is invoked
      
      rtla osnoise top -h
      rtla osnoise hist -h
      rtla timerlat top -h
      rtla timerlat hist -h
      
      Link: https://lore.kernel.org/linux-trace-devel/20240203001607.69703-1-jkacur@redhat.com
      
      Cc: stable@vger.kernel.org
      Fixes: 1eeb6328
      
       ("rtla/timerlat: Add timerlat hist mode")
      Signed-off-by: default avatarJohn Kacur <jkacur@redhat.com>
      Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5ccb527b
    • limingming3's avatar
      tools/rtla: Replace setting prio with nice for SCHED_OTHER · 771b74ce
      limingming3 authored
      commit 14f08c97 upstream.
      
      Since the sched_priority for SCHED_OTHER is always 0, it makes no
      sence to set it.
      Setting nice for SCHED_OTHER seems more meaningful.
      
      Link: https://lkml.kernel.org/r/20240207065142.1753909-1-limingming3@lixiang.com
      
      Cc: stable@vger.kernel.org
      Fixes: b1696371
      
       ("rtla: Helper functions for rtla")
      Signed-off-by: default avatarlimingming3 <limingming3@lixiang.com>
      Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      771b74ce
    • Daniel Bristot de Oliveira's avatar
      tools/rtla: Remove unused sched_getattr() function · d627693e
      Daniel Bristot de Oliveira authored
      commit 084ce16d upstream.
      
      Clang is reporting:
      
      $ make HOSTCC=clang CC=clang LLVM_IAS=1
      [...]
      clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection  -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS $(pkg-config --cflags libtracefs)    -c -o src/utils.o src/utils.c
      src/utils.c:241:19: warning: unused function 'sched_getattr' [-Wunused-function]
        241 | static inline int sched_getattr(pid_t pid, struct sched_attr *attr,
            |                   ^~~~~~~~~~~~~
      1 warning generated.
      
      Which is correct, so remove the unused function.
      
      Link: https://lkml.kernel.org/r/eaed7ba122c4ae88ce71277c824ef41cbf789385.1707217097.git.bristot@kernel.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Bill Wendling <morbo@google.com>
      Cc: Justin Stitt <justinstitt@google.com>
      Cc: Donald Zickus <dzickus@redhat.com>
      Fixes: b1696371
      
       ("rtla: Helper functions for rtla")
      Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d627693e
    • Mario Limonciello's avatar
      ASoC: amd: yc: Add DMI quirk for Lenovo Ideapad Pro 5 16ARP8 · fcf62f94
      Mario Limonciello authored
      commit 61001073
      
       upstream.
      
      The laptop requires a quirk ID to enable its internal microphone. Add
      it to the DMI quirk table.
      
      Reported-by: default avatarStanislav Petrov <stanislav.i.petrov@gmail.com>
      Closes: https://bugzilla.kernel.org/show_bug.cgi?id=216925
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
      Link: https://lore.kernel.org/r/20240205214853.2689-1-mario.limonciello@amd.com
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fcf62f94
    • Fred Ai's avatar
      mmc: sdhci-pci-o2micro: Fix a warm reboot issue that disk can't be detected by BIOS · 00f9fcc0
      Fred Ai authored
      commit 58aeb562
      
       upstream.
      
      Driver shall switch clock source from DLL clock to
      OPE clock when power off card to ensure that card
      can be identified with OPE clock by BIOS.
      
      Signed-off-by: default avatarFred Ai <fred.ai@bayhubtech.com>
      Fixes:4be33cf1
      
       ("mmc: sdhci-pci-o2micro: Improve card input timing at SDR104/HS200 mode")
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20240203102908.4683-1-fredaibayhubtech@126.com
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      00f9fcc0
    • Damien Le Moal's avatar
      zonefs: Improve error handling · 09fad23a
      Damien Le Moal authored
      commit 14db5f64
      
       upstream.
      
      Write error handling is racy and can sometime lead to the error recovery
      path wrongly changing the inode size of a sequential zone file to an
      incorrect value  which results in garbage data being readable at the end
      of a file. There are 2 problems:
      
      1) zonefs_file_dio_write() updates a zone file write pointer offset
         after issuing a direct IO with iomap_dio_rw(). This update is done
         only if the IO succeed for synchronous direct writes. However, for
         asynchronous direct writes, the update is done without waiting for
         the IO completion so that the next asynchronous IO can be
         immediately issued. However, if an asynchronous IO completes with a
         failure right before the i_truncate_mutex lock protecting the update,
         the update may change the value of the inode write pointer offset
         that was corrected by the error path (zonefs_io_error() function).
      
      2) zonefs_io_error() is called when a read or write error occurs. This
         function executes a report zone operation using the callback function
         zonefs_io_error_cb(), which does all the error recovery handling
         based on the current zone condition, write pointer position and
         according to the mount options being used. However, depending on the
         zoned device being used, a report zone callback may be executed in a
         context that is different from the context of __zonefs_io_error(). As
         a result, zonefs_io_error_cb() may be executed without the inode
         truncate mutex lock held, which can lead to invalid error processing.
      
      Fix both problems as follows:
      - Problem 1: Perform the inode write pointer offset update before a
        direct write is issued with iomap_dio_rw(). This is safe to do as
        partial direct writes are not supported (IOMAP_DIO_PARTIAL is not
        set) and any failed IO will trigger the execution of zonefs_io_error()
        which will correct the inode write pointer offset to reflect the
        current state of the one on the device.
      - Problem 2: Change zonefs_io_error_cb() into zonefs_handle_io_error()
        and call this function directly from __zonefs_io_error() after
        obtaining the zone information using blkdev_report_zones() with a
        simple callback function that copies to a local stack variable the
        struct blk_zone obtained from the device. This ensures that error
        handling is performed holding the inode truncate mutex.
        This change also simplifies error handling for conventional zone files
        by bypassing the execution of report zones entirely. This is safe to
        do because the condition of conventional zones cannot be read-only or
        offline and conventional zone files are always fully mapped with a
        constant file size.
      
      Reported-by: default avatarShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
      Fixes: 8dcc1a9d
      
       ("fs: New zonefs file system")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
      Tested-by: default avatarShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Reviewed-by: default avatarHimanshu Madhani <himanshu.madhani@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      09fad23a
    • Marc Zyngier's avatar
      irqchip/gic-v3-its: Fix GICv4.1 VPE affinity update · ce2b8265
      Marc Zyngier authored
      commit af9acbfc upstream.
      
      When updating the affinity of a VPE, the VMOVP command is currently skipped
      if the two CPUs are part of the same VPE affinity.
      
      But this is wrong, as the doorbell corresponding to this VPE is still
      delivered on the 'old' CPU, which screws up the balancing.  Furthermore,
      offlining that 'old' CPU results in doorbell interrupts generated for this
      VPE being discarded.
      
      The harsh reality is that VMOVP cannot be elided when a set_affinity()
      request occurs. It needs to be obeyed, and if an optimisation is to be
      made, it is at the point where the affinity change request is made (such as
      in KVM).
      
      Drop the VMOVP elision altogether, and only use the vpe_table_mask
      to try and stay within the same ITS affinity group if at all possible.
      
      Fixes: dd3f050a
      
       (irqchip/gic-v4.1: Implement the v4.1 flavour of VMOVP)
      Reported-by: default avatarKunkun Jiang <jiangkunkun@huawei.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20240213101206.2137483-4-maz@kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ce2b8265
    • Doug Berger's avatar
      irqchip/irq-brcmstb-l2: Add write memory barrier before exit · 659311f5
      Doug Berger authored
      commit b0344d68 upstream.
      
      It was observed on Broadcom devices that use GIC v3 architecture L1
      interrupt controllers as the parent of brcmstb-l2 interrupt controllers
      that the deactivation of the parent interrupt could happen before the
      brcmstb-l2 deasserted its output. This would lead the GIC to reactivate the
      interrupt only to find that no L2 interrupt was pending. The result was a
      spurious interrupt invoking handle_bad_irq() with its associated
      messaging. While this did not create a functional problem it is a waste of
      cycles.
      
      The hazard exists because the memory mapped bus writes to the brcmstb-l2
      registers are buffered and the GIC v3 architecture uses a very efficient
      system register write to deactivate the interrupt.
      
      Add a write memory barrier prior to invoking chained_irq_exit() to
      introduce a dsb(st) on those systems to ensure the system register write
      cannot be executed until the memory mapped writes are visible to the
      system.
      
      [ florian: Added Fixes tag ]
      
      Fixes: 7f646e92
      
       ("irqchip: brcmstb-l2: Add Broadcom Set Top Box  Level-2 interrupt controller")
      Signed-off-by: default avatarDoug Berger <opendmb@gmail.com>
      Signed-off-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
      Acked-by: default avatarMarc Zyngier <maz@kernel.org>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20240210012449.3009125-1-florian.fainelli@broadcom.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      659311f5
    • Johannes Berg's avatar
      wifi: mac80211: reload info pointer in ieee80211_tx_dequeue() · 783912cb
      Johannes Berg authored
      commit c98d8836 upstream.
      
      This pointer can change here since the SKB can change, so we
      actually later open-coded IEEE80211_SKB_CB() again. Reload
      the pointer where needed, so the monitor-mode case using it
      gets fixed, and then use info-> later as well.
      
      Cc: stable@vger.kernel.org
      Fixes: 53168215
      
       ("mac80211: fix VLAN handling with TXQs")
      Link: https://msgid.link/20240131164910.b54c28d583bc.I29450cec84ea6773cff5d9c16ff92b836c331471@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      783912cb
    • Johannes Berg's avatar
      wifi: cfg80211: fix wiphy delayed work queueing · 6c84dbe8
      Johannes Berg authored
      commit b743287d
      
       upstream.
      
      When a wiphy work is queued with timer, and then again
      without a delay, it's started immediately but *also*
      started again after the timer expires. This can lead,
      for example, to warnings in mac80211's offchannel code
      as reported by Jouni. Running the same work twice isn't
      expected, of course. Fix this by deleting the timer at
      this point, when queuing immediately due to delay=0.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarJouni Malinen <j@w1.fi>
      Fixes: a3ee4dc8
      
       ("wifi: cfg80211: add a work abstraction with special semantics")
      Link: https://msgid.link/20240125095108.2feb0eaaa446.I4617f3210ed0e7f252290d5970dac6a876aa595b@changeid
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6c84dbe8
    • Daniel de Villiers's avatar
      nfp: flower: prevent re-adding mac index for bonded port · 685fc171
      Daniel de Villiers authored
      commit 1a1c1330 upstream.
      
      When physical ports are reset (either through link failure or manually
      toggled down and up again) that are slaved to a Linux bond with a tunnel
      endpoint IP address on the bond device, not all tunnel packets arriving
      on the bond port are decapped as expected.
      
      The bond dev assigns the same MAC address to itself and each of its
      slaves. When toggling a slave device, the same MAC address is therefore
      offloaded to the NFP multiple times with different indexes.
      
      The issue only occurs when re-adding the shared mac. The
      nfp_tunnel_add_shared_mac() function has a conditional check early on
      that checks if a mac entry already exists and if that mac entry is
      global: (entry && nfp_tunnel_is_mac_idx_global(entry->index)). In the
      case of a bonded device (For example br-ex), the mac index is obtained,
      and no new index is assigned.
      
      We therefore modify the conditional in nfp_tunnel_add_shared_mac() to
      check if the port belongs to the LAG along with the existing checks to
      prevent a new global mac index from being re-assigned to the slave port.
      
      Fixes: 20cce886
      
       ("nfp: flower: enable MAC address sharing for offloadable devs")
      CC: stable@vger.kernel.org # 5.1+
      Signed-off-by: default avatarDaniel de Villiers <daniel.devilliers@corigine.com>
      Signed-off-by: default avatarLouis Peens <louis.peens@corigine.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      685fc171
    • Daniel Basilio's avatar
      nfp: use correct macro for LengthSelect in BAR config · 57b8478c
      Daniel Basilio authored
      commit b3d4f7f2 upstream.
      
      The 1st and 2nd expansion BAR configuration registers are configured,
      when the driver starts up, in variables 'barcfg_msix_general' and
      'barcfg_msix_xpb', respectively. The 'LengthSelect' field is ORed in
      from bit 0, which is incorrect. The 'LengthSelect' field should
      start from bit 27.
      
      This has largely gone un-noticed because
      NFP_PCIE_BAR_PCIE2CPP_LengthSelect_32BIT happens to be 0.
      
      Fixes: 4cb584e0
      
       ("nfp: add CPP access core")
      Cc: stable@vger.kernel.org # 4.11+
      Signed-off-by: default avatarDaniel Basilio <daniel.basilio@corigine.com>
      Signed-off-by: default avatarLouis Peens <louis.peens@corigine.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      57b8478c
    • Kim Phillips's avatar
      crypto: ccp - Fix null pointer dereference in __sev_platform_shutdown_locked · 8731fe00
      Kim Phillips authored
      commit ccb88e95 upstream.
      
      The SEV platform device can be shutdown with a null psp_master,
      e.g., using DEBUG_TEST_DRIVER_REMOVE.  Found using KASAN:
      
      [  137.148210] ccp 0000:23:00.1: enabling device (0000 -> 0002)
      [  137.162647] ccp 0000:23:00.1: no command queues available
      [  137.170598] ccp 0000:23:00.1: sev enabled
      [  137.174645] ccp 0000:23:00.1: psp enabled
      [  137.178890] general protection fault, probably for non-canonical address 0xdffffc000000001e: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC KASAN NOPTI
      [  137.182693] KASAN: null-ptr-deref in range [0x00000000000000f0-0x00000000000000f7]
      [  137.182693] CPU: 93 PID: 1 Comm: swapper/0 Not tainted 6.8.0-rc1+ #311
      [  137.182693] RIP: 0010:__sev_platform_shutdown_locked+0x51/0x180
      [  137.182693] Code: 08 80 3c 08 00 0f 85 0e 01 00 00 48 8b 1d 67 b6 01 08 48 b8 00 00 00 00 00 fc ff df 48 8d bb f0 00 00 00 48 89 f9 48 c1 e9 03 <80> 3c 01 00 0f 85 fe 00 00 00 48 8b 9b f0 00 00 00 48 85 db 74 2c
      [  137.182693] RSP: 0018:ffffc900000cf9b0 EFLAGS: 00010216
      [  137.182693] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 000000000000001e
      [  137.182693] RDX: 0000000000000000 RSI: 0000000000000008 RDI: 00000000000000f0
      [  137.182693] RBP: ffffc900000cf9c8 R08: 0000000000000000 R09: fffffbfff58f5a66
      [  137.182693] R10: ffffc900000cf9c8 R11: ffffffffac7ad32f R12: ffff8881e5052c28
      [  137.182693] R13: ffff8881e5052c28 R14: ffff8881758e43e8 R15: ffffffffac64abf8
      [  137.182693] FS:  0000000000000000(0000) GS:ffff889de7000000(0000) knlGS:0000000000000000
      [  137.182693] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  137.182693] CR2: 0000000000000000 CR3: 0000001cf7c7e000 CR4: 0000000000350ef0
      [  137.182693] Call Trace:
      [  137.182693]  <TASK>
      [  137.182693]  ? show_regs+0x6c/0x80
      [  137.182693]  ? __die_body+0x24/0x70
      [  137.182693]  ? die_addr+0x4b/0x80
      [  137.182693]  ? exc_general_protection+0x126/0x230
      [  137.182693]  ? asm_exc_general_protection+0x2b/0x30
      [  137.182693]  ? __sev_platform_shutdown_locked+0x51/0x180
      [  137.182693]  sev_firmware_shutdown.isra.0+0x1e/0x80
      [  137.182693]  sev_dev_destroy+0x49/0x100
      [  137.182693]  psp_dev_destroy+0x47/0xb0
      [  137.182693]  sp_destroy+0xbb/0x240
      [  137.182693]  sp_pci_remove+0x45/0x60
      [  137.182693]  pci_device_remove+0xaa/0x1d0
      [  137.182693]  device_remove+0xc7/0x170
      [  137.182693]  really_probe+0x374/0xbe0
      [  137.182693]  ? srso_return_thunk+0x5/0x5f
      [  137.182693]  __driver_probe_device+0x199/0x460
      [  137.182693]  driver_probe_device+0x4e/0xd0
      [  137.182693]  __driver_attach+0x191/0x3d0
      [  137.182693]  ? __pfx___driver_attach+0x10/0x10
      [  137.182693]  bus_for_each_dev+0x100/0x190
      [  137.182693]  ? __pfx_bus_for_each_dev+0x10/0x10
      [  137.182693]  ? __kasan_check_read+0x15/0x20
      [  137.182693]  ? srso_return_thunk+0x5/0x5f
      [  137.182693]  ? _raw_spin_unlock+0x27/0x50
      [  137.182693]  driver_attach+0x41/0x60
      [  137.182693]  bus_add_driver+0x2a8/0x580
      [  137.182693]  driver_register+0x141/0x480
      [  137.182693]  __pci_register_driver+0x1d6/0x2a0
      [  137.182693]  ? srso_return_thunk+0x5/0x5f
      [  137.182693]  ? esrt_sysfs_init+0x1cd/0x5d0
      [  137.182693]  ? __pfx_sp_mod_init+0x10/0x10
      [  137.182693]  sp_pci_init+0x22/0x30
      [  137.182693]  sp_mod_init+0x14/0x30
      [  137.182693]  ? __pfx_sp_mod_init+0x10/0x10
      [  137.182693]  do_one_initcall+0xd1/0x470
      [  137.182693]  ? __pfx_do_one_initcall+0x10/0x10
      [  137.182693]  ? parameq+0x80/0xf0
      [  137.182693]  ? srso_return_thunk+0x5/0x5f
      [  137.182693]  ? __kmalloc+0x3b0/0x4e0
      [  137.182693]  ? kernel_init_freeable+0x92d/0x1050
      [  137.182693]  ? kasan_populate_vmalloc_pte+0x171/0x190
      [  137.182693]  ? srso_return_thunk+0x5/0x5f
      [  137.182693]  kernel_init_freeable+0xa64/0x1050
      [  137.182693]  ? __pfx_kernel_init+0x10/0x10
      [  137.182693]  kernel_init+0x24/0x160
      [  137.182693]  ? __switch_to_asm+0x3e/0x70
      [  137.182693]  ret_from_fork+0x40/0x80
      [  137.182693]  ? __pfx_kernel_init+0x10/0x10
      [  137.182693]  ret_from_fork_asm+0x1b/0x30
      [  137.182693]  </TASK>
      [  137.182693] Modules linked in:
      [  137.538483] ---[ end trace 0000000000000000 ]---
      
      Fixes: 1b05ece0
      
       ("crypto: ccp - During shutdown, check SEV data pointer before using")
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
      Signed-off-by: default avatarKim Phillips <kim.phillips@amd.com>
      Reviewed-by: default avatarLiam Merwick <liam.merwick@oracle.com>
      Acked-by: default avatarJohn Allen <john.allen@amd.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8731fe00
    • Ryusuke Konishi's avatar
      nilfs2: fix hang in nilfs_lookup_dirty_data_buffers() · 8494ba2c
      Ryusuke Konishi authored
      commit 38296afe upstream.
      
      Syzbot reported a hang issue in migrate_pages_batch() called by mbind()
      and nilfs_lookup_dirty_data_buffers() called in the log writer of nilfs2.
      
      While migrate_pages_batch() locks a folio and waits for the writeback to
      complete, the log writer thread that should bring the writeback to
      completion picks up the folio being written back in
      nilfs_lookup_dirty_data_buffers() that it calls for subsequent log
      creation and was trying to lock the folio.  Thus causing a deadlock.
      
      In the first place, it is unexpected that folios/pages in the middle of
      writeback will be updated and become dirty.  Nilfs2 adds a checksum to
      verify the validity of the log being written and uses it for recovery at
      mount, so data changes during writeback are suppressed.  Since this is
      broken, an unclean shutdown could potentially cause recovery to fail.
      
      Investigation revealed that the root cause is that the wait for writeback
      completion in nilfs_page_mkwrite() is conditional, and if the backing
      device does not require stable writes, data may be modified without
      waiting.
      
      Fix these issues by making nilfs_page_mkwrite() wait for writeback to
      finish regardless of the stable write requirement of the backing device.
      
      Link: https://lkml.kernel.org/r/20240131145657.4209-1-konishi.ryusuke@gmail.com
      Fixes: 1d1d1a76
      
       ("mm: only enforce stable page writes if the backing device requires it")
      Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
      Reported-by: default avatar <syzbot+ee2ae68da3b22d04cd8d@syzkaller.appspotmail.com>
      Closes: https://lkml.kernel.org/r/00000000000047d819061004ad6c@google.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>
      8494ba2c
    • Ryusuke Konishi's avatar
      nilfs2: fix data corruption in dsync block recovery for small block sizes · 9c9c68d6
      Ryusuke Konishi authored
      commit 67b8bcba
      
       upstream.
      
      The helper function nilfs_recovery_copy_block() of
      nilfs_recovery_dsync_blocks(), which recovers data from logs created by
      data sync writes during a mount after an unclean shutdown, incorrectly
      calculates the on-page offset when copying repair data to the file's page
      cache.  In environments where the block size is smaller than the page
      size, this flaw can cause data corruption and leak uninitialized memory
      bytes during the recovery process.
      
      Fix these issues by correcting this byte offset calculation on the page.
      
      Link: https://lkml.kernel.org/r/20240124121936.10575-1-konishi.ryusuke@gmail.com
      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>
      9c9c68d6
    • bo liu's avatar
      ALSA: hda/conexant: Add quirk for SWS JS201D · 35076e3f
      bo liu authored
      commit 4639c502
      
       upstream.
      
      The SWS JS201D need a different pinconfig from windows driver.
      Add a quirk to use a specific pinconfig to SWS JS201D.
      
      Signed-off-by: default avatarbo liu <bo.liu@senarytech.com>
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20240205013802.51907-1-bo.liu@senarytech.com
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      35076e3f
    • Eniac Zhang's avatar
      ALSA: hda/realtek: fix mute/micmute LED For HP mt645 · 53e8abc1
      Eniac Zhang authored
      commit 32f03f40
      
       upstream.
      
      The HP mt645 G7 Thin Client uses an ALC236 codec and needs the
      ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF quirk to make the mute and
      micmute LEDs work.
      
      There are two variants of the USB-C PD chip on this device. Each uses
      a different BIOS and board ID, hence the two entries.
      
      Signed-off-by: default avatarEniac Zhang <eniac-xw.zhang@hp.com>
      Signed-off-by: default avatarAlexandru Gagniuc <alexandru.gagniuc@hp.com>
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20240215154922.778394-1-alexandru.gagniuc@hp.com
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      53e8abc1
    • Alexander Stein's avatar
      mmc: slot-gpio: Allow non-sleeping GPIO ro · a943c7fb
      Alexander Stein authored
      commit cc9432c4 upstream.
      
      This change uses the appropriate _cansleep or non-sleeping API for
      reading GPIO read-only state. This allows users with GPIOs that
      never sleepbeing called in atomic context.
      
      Implement the same mechanism as in commit 52af318c
      
       ("mmc: Allow
      non-sleeping GPIO cd").
      
      Signed-off-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20240206083912.2543142-1-alexander.stein@ew.tq-group.com
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a943c7fb
    • Jens Axboe's avatar
      io_uring/net: fix multishot accept overflow handling · eae748df
      Jens Axboe authored
      commit a37ee9e1 upstream.
      
      If we hit CQ ring overflow when attempting to post a multishot accept
      completion, we don't properly save the result or return code. This
      results in losing the accepted fd value.
      
      Instead, we return the result from the poll operation that triggered
      the accept retry. This is generally POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND
      which is 0xc3, or 195, which looks like a valid file descriptor, but it
      really has no connection to that.
      
      Handle this like we do for other multishot completions - assign the
      result, and return IOU_STOP_MULTISHOT to cancel any further completions
      from this request when overflow is hit. This preserves the result, as we
      should, and tells the application that the request needs to be re-armed.
      
      Cc: stable@vger.kernel.org
      Fixes: 515e2696
      
       ("io_uring: revert "io_uring fix multishot accept ordering"")
      Link: https://github.com/axboe/liburing/issues/1062
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      eae748df
    • Steve Wahl's avatar
      x86/mm/ident_map: Use gbpages only where full GB page should be mapped. · aedcefae
      Steve Wahl authored
      commit d794734c
      
       upstream.
      
      When ident_pud_init() uses only gbpages to create identity maps, large
      ranges of addresses not actually requested can be included in the
      resulting table; a 4K request will map a full GB.  On UV systems, this
      ends up including regions that will cause hardware to halt the system
      if accessed (these are marked "reserved" by BIOS).  Even processor
      speculation into these regions is enough to trigger the system halt.
      
      Only use gbpages when map creation requests include the full GB page
      of space.  Fall back to using smaller 2M pages when only portions of a
      GB page are included in the request.
      
      No attempt is made to coalesce mapping requests. If a request requires
      a map entry at the 2M (pmd) level, subsequent mapping requests within
      the same 1G region will also be at the pmd level, even if adjacent or
      overlapping such requests could have been combined to map a full
      gbpage.  Existing usage starts with larger regions and then adds
      smaller regions, so this should not have any great consequence.
      
      [ dhansen: fix up comment formatting, simplifty changelog ]
      
      Signed-off-by: default avatarSteve Wahl <steve.wahl@hpe.com>
      Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/all/20240126164841.170866-1-steve.wahl%40hpe.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      aedcefae
    • Mingwei Zhang's avatar
      KVM: x86/pmu: Fix type length error when reading pmu->fixed_ctr_ctrl · 3863ca05
      Mingwei Zhang authored
      commit 05519c86 upstream.
      
      Use a u64 instead of a u8 when taking a snapshot of pmu->fixed_ctr_ctrl
      when reprogramming fixed counters, as truncating the value results in KVM
      thinking fixed counter 2 is already disabled (the bug also affects fixed
      counters 3+, but KVM doesn't yet support those).  As a result, if the
      guest disables fixed counter 2, KVM will get a false negative and fail to
      reprogram/disable emulation of the counter, which can leads to incorrect
      counts and spurious PMIs in the guest.
      
      Fixes: 76d287b2
      
       ("KVM: x86/pmu: Drop "u8 ctrl, int idx" for reprogram_fixed_counter()")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMingwei Zhang <mizhang@google.com>
      Link: https://lore.kernel.org/r/20240123221220.3911317-1-mizhang@google.com
      [sean: rewrite changelog to call out the effects of the bug]
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3863ca05