1. Sep 18, 2023
    • Bob Peterson's avatar
      gfs2: Fix quota=quiet oversight · fb95d536
      Bob Peterson authored
      Patch eef46ab7 introduced a new gfs2 quota=quiet mount option.
      Checks for the new option were added to quota.c, but a check in
      gfs2_quota_lock_check() was overlooked.  This patch adds the missing
      check.
      
      Fixes: eef46ab7
      
       ("gfs2: Introduce new quota=quiet mount option")
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      fb95d536
    • Bob Peterson's avatar
      gfs2: fix glock shrinker ref issues · 62862485
      Bob Peterson authored
      
      
      Before this patch, function gfs2_scan_glock_lru would only try to free
      glocks that had a reference count of 0. But if the reference count ever
      got to 0, the glock should have already been freed.
      
      Shrinker function gfs2_dispose_glock_lru checks whether glocks on the
      LRU are demote_ok, and if so, tries to demote them. But that's only
      possible if the reference count is at least 1.
      
      This patch changes gfs2_scan_glock_lru so it will try to demote and/or
      dispose of glocks that have a reference count of 1 and which are either
      demotable, or are already unlocked.
      
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      62862485
    • Andreas Gruenbacher's avatar
      gfs2: Fix another freeze/thaw hang · 52954b75
      Andreas Gruenbacher authored
      On a thawed filesystem, the freeze glock is held in shared mode.  In
      order to initiate a cluster-wide freeze, the node initiating the freeze
      drops the freeze glock and grabs it in exclusive mode.  The other nodes
      recognize this as contention on the freeze glock; function
      freeze_go_callback is invoked.  This indicates to them that they must
      freeze the filesystem locally, drop the freeze glock, and then
      re-acquire it in shared mode before being able to unfreeze the
      filesystem locally.
      
      While a node is trying to re-acquire the freeze glock in shared mode,
      additional contention can occur.  In that case, the node must behave in
      the same way as above.
      
      Unfortunately, freeze_go_callback() contains a check that causes it to
      bail out when the freeze glock isn't held in shared mode.  Fix that to
      allow the glock to be unlocked or held in shared mode.
      
      In addition, update a reference to trylock_super() which has been
      renamed to super_trylock_shared() in the meantime.
      
      Fixes: b77b4a48
      
       ("gfs2: Rework freeze / thaw logic")
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      52954b75
  2. Sep 06, 2023
    • Linus Torvalds's avatar
      Merge tag 'gfs2-v6.5-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 · 65d6e954
      Linus Torvalds authored
      Pull gfs2 updates from Andreas Gruenbacher:
      
       - Fix a glock state (non-)transition bug when a dlm request times out
         and is canceled, and we have locking requests that can now be granted
         immediately
      
       - Various fixes and cleanups in how the logd and quotad daemons are
         woken up and terminated
      
       - Fix several bugs in the quota data reference counting and shrinking.
         Free quota data objects synchronously in put_super() instead of
         letting call_rcu() run wild
      
       - Make sure not to deallocate quota data during a withdraw; rather,
         defer quota data deallocation to put_super(). Withdraws can happen in
         contexts in which callers on the stack are holding quota data
         references
      
       - Many minor quota fixes and cleanups by Bob
      
       - Update the the mailing list address for gfs2 and dlm. (It's the same
         list for both and we are moving it to gfs2@lists.linux.dev)
      
       - Various other minor cleanups
      
      * tag 'gfs2-v6.5-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2: (51 commits)
        MAINTAINERS: Update dlm mailing list
        MAINTAINERS: Update gfs2 mailing list
        gfs2: change qd_slot_count to qd_slot_ref
        gfs2: check for no eligible quota changes
        gfs2: Remove useless assignment
        gfs2: simplify slot_get
        gfs2: Simplify qd2offset
        gfs2: introduce qd_bh_get_or_undo
        gfs2: Remove quota allocation info from quota file
        gfs2: use constant for array size
        gfs2: Set qd_sync_gen in do_sync
        gfs2: Remove useless err set
        gfs2: Small gfs2_quota_lock cleanup
        gfs2: move qdsb_put and reduce redundancy
        gfs2: improvements to sysfs status
        gfs2: Don't try to sync non-changes
        gfs2: Simplify function need_sync
        gfs2: remove unneeded pg_oflow variable
        gfs2: remove unneeded variable done
        gfs2: pass sdp to gfs2_write_buf_to_page
        ...
      65d6e954
    • Linus Torvalds's avatar
      Merge tag 'fuse-update-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse · 9e310ea5
      Linus Torvalds authored
      Pull fuse updates from Miklos Szeredi:
      
       - Revert non-waiting FLUSH due to a regression
      
       - Fix a lookup counter leak in readdirplus
      
       - Add an option to allow shared mmaps in no-cache mode
      
       - Add btime support and statx intrastructure to the protocol
      
       - Invalidate positive/negative dentry on failed create/delete
      
      * tag 'fuse-update-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
        fuse: conditionally fill kstat in fuse_do_statx()
        fuse: invalidate dentry on EEXIST creates or ENOENT deletes
        fuse: cache btime
        fuse: implement statx
        fuse: add ATTR_TIMEOUT macro
        fuse: add STATX request
        fuse: handle empty request_mask in statx
        fuse: write back dirty pages before direct write in direct_io_relax mode
        fuse: add a new fuse init flag to relax restrictions in no cache mode
        fuse: invalidate page cache pages before direct write
        fuse: nlookup missing decrement in fuse_direntplus_link
        Revert "fuse: in fuse_flush only wait if someone wants the return code"
      9e310ea5
    • Linus Torvalds's avatar
      Merge tag 'ata-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata · 4b3d6e0c
      Linus Torvalds authored
      Pull ata updates from Damien Le Moal:
      
       - Fix OF include file for ata platform drivers (Rob)
      
       - Simplify various ahci, sata and pata platform drivers using the
         function devm_platform_ioremap_resource() (Yangtao)
      
       - Cleanup libata time related argument types (e.g. timeouts values)
         (Sergey)
      
       - Cleanup libata code around error handling as all ata drivers now
         define a error_handler operation (Hannes and Niklas)
      
       - Remove functions intended for libsas that are in fact unused (Niklas)
      
       - Change the remove device callback of platform drivers to a null
         function (Uwe)
      
       - Simplify the pata_imx driver using devm_clk_get_enabled() (Li)
      
       - Remove old and uinused remnants of the ide code in arm, parisc,
         powerpc, sparc and m68k architectures and associated drivers
         (pata_buddha, pata_falcon and pata_gayle) (Geert)
      
       - Add missing MODULE_DESCRIPTION() in the sata_gemini and pata_ftide010
         drivers (me)
      
       - Sev...
      4b3d6e0c
    • Linus Torvalds's avatar
      Merge tag 'mailbox-v6.6' of git://git.linaro.org/landing-teams/working/fujitsu/integration · 77331719
      Linus Torvalds authored
      Pull mailbox updates from Jassi Brar:
      
       - qcom: fix incorrect num_chans counting
      
       - mhu: Remove redundant dev_err
      
       - bcm: fix comments
      
       - common changes:
          - convert to use devm_platform_get_and_ioremap_resource
          - correct DT includes
      
      * tag 'mailbox-v6.6' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
        mailbox: qcom-ipcc: fix incorrect num_chans counting
        mailbox: Explicitly include correct DT includes
        mailbox: ti-msgmgr: Use devm_platform_ioremap_resource_byname()
        mailbox: platform-mhu: Remove redundant dev_err()
        mailbox: bcm-pdc: Fix some kernel-doc comments
        mailbox: mailbox-test: Fix an error check in mbox_test_probe()
        mailbox: tegra-hsp: Convert to devm_platform_ioremap_resource()
        mailbox: rockchip: Use devm_platform_get_and_ioremap_resource()
        mailbox: mailbox-test: Use devm_platform_get_and_ioremap_resource()
        mailbox: bcm-pdc: Use devm_platform_get_and_ioremap_resource()
        mailbox: bcm-ferxrm-mailbox: Use devm_platform_get_and_ioremap_resource()
      77331719
    • Linus Torvalds's avatar
      Merge tag 'mm-hotfixes-stable-2023-09-05-11-51' of... · 3c5c9b7c
      Linus Torvalds authored
      Merge tag 'mm-hotfixes-stable-2023-09-05-11-51' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
      
      Pull misc fixes from Andrew Morton:
       "Seven hotfixes. Four are cc:stable and the remainder pertain to issues
        which were introduced in the current merge window"
      
      * tag 'mm-hotfixes-stable-2023-09-05-11-51' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
        sparc64: add missing initialization of folio in tlb_batch_add()
        mm: memory-failure: use rcu lock instead of tasklist_lock when collect_procs()
        revert "memfd: improve userspace warnings for missing exec-related flags".
        rcu: dump vmalloc memory info safely
        mm/vmalloc: add a safer version of find_vm_area() for debug
        tools/mm: fix undefined reference to pthread_once
        memcontrol: ensure memcg acquired by id is properly set up
      3c5c9b7c
    • Linus Torvalds's avatar
      Merge tag 'tpmdd-v6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd · 6155a3b8
      Linus Torvalds authored
      Pull more tpm updates from Jarkko Sakkinen:
       "Two more bug fixes for tpm_crb, categorically disabling rng for AMD
        CPU's in the tpm_crb driver, discarding the earlier probing approach"
      
      * tag 'tpmdd-v6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd:
        tpm: Enable hwrng only for Pluton on AMD CPUs
        tpm_crb: Fix an error handling path in crb_acpi_add()
      6155a3b8
    • Mike Rapoport (IBM)'s avatar
      sparc64: add missing initialization of folio in tlb_batch_add() · f4b4f3ec
      Mike Rapoport (IBM) authored
      Commit 1a10a44d ("sparc64: implement the new page table range API")
      missed initialization of folio variable in tlb_batch_add() which causes
      boot tests to crash.
      
      Add missing initialization.
      
      Link: https://lkml.kernel.org/r/20230904174350.GF3223@kernel.org
      Fixes: 1a10a44d
      
       ("sparc64: implement the new page table range API")
      Signed-off-by: default avatarMike Rapoport (IBM) <rppt@kernel.org>
      Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      f4b4f3ec
    • Tong Tiangen's avatar
      mm: memory-failure: use rcu lock instead of tasklist_lock when collect_procs() · d256d1cd
      Tong Tiangen authored
      We found a softlock issue in our test, analyzed the logs, and found that
      the relevant CPU call trace as follows:
      
      CPU0:
        _do_fork
          -> copy_process()
            -> write_lock_irq(&tasklist_lock)  //Disable irq,waiting for
            					 //tasklist_lock
      
      CPU1:
        wp_page_copy()
          ->pte_offset_map_lock()
            -> spin_lock(&page->ptl);        //Hold page->ptl
          -> ptep_clear_flush()
            -> flush_tlb_others() ...
              -> smp_call_function_many()
                -> arch_send_call_function_ipi_mask()
                  -> csd_lock_wait()         //Waiting for other CPUs respond
      	                               //IPI
      
      CPU2:
        collect_procs_anon()
          -> read_lock(&tasklist_lock)       //Hold tasklist_lock
            ->for_each_process(tsk)
              -> page_mapped_in_vma()
                -> page_vma_mapped_walk()
      	    -> map_pte()
                    ->spin_lock(&page->ptl)  //Waiting for page->ptl
      
      We can see that CPU1 waiting for CPU0 respond IPI,CPU0 waiting for CPU2
      unlock tasklist_lock, CPU2 waiting for CPU1 unlock page->ptl. As a result,
      softlockup is triggered.
      
      For collect_procs_anon(), what we're doing is task list iteration, during
      the iteration, with the help of call_rcu(), the task_struct object is freed
      only after one or more grace periods elapse. the logic as follows:
      
      release_task()
        -> __exit_signal()
          -> __unhash_process()
            -> list_del_rcu()
      
        -> put_task_struct_rcu_user()
          -> call_rcu(&task->rcu, delayed_put_task_struct)
      
      delayed_put_task_struct()
        -> put_task_struct()
        -> if (refcount_sub_and_test())
           	__put_task_struct()
                -> free_task()
      
      Therefore, under the protection of the rcu lock, we can safely use
      get_task_struct() to ensure a safe reference to task_struct during the
      iteration.
      
      By removing the use of tasklist_lock in task list iteration, we can break
      the softlock chain above.
      
      The same logic can also be applied to:
       - collect_procs_file()
       - collect_procs_fsdax()
       - collect_procs_ksm()
      
      Link: https://lkml.kernel.org/r/20230828022527.241693-1-tongtiangen@huawei.com
      
      
      Signed-off-by: default avatarTong Tiangen <tongtiangen@huawei.com>
      Acked-by: default avatarNaoya Horiguchi <naoya.horiguchi@nec.com>
      Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
      Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
      Cc: Miaohe Lin <linmiaohe@huawei.com>
      Cc: Paul E. McKenney <paulmck@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      d256d1cd
    • Andrew Morton's avatar
      revert "memfd: improve userspace warnings for missing exec-related flags". · 2562d67b
      Andrew Morton authored
      This warning is telling userspace developers to pass MFD_EXEC and
      MFD_NOEXEC_SEAL to memfd_create().  Commit 434ed335 ("memfd: improve
      userspace warnings for missing exec-related flags") made the warning more
      frequent and visible in the hope that this would accelerate the fixing of
      errant userspace.
      
      But the overall effect is to generate far too much dmesg noise.
      
      Fixes: 434ed335
      
       ("memfd: improve userspace warnings for missing exec-related flags")
      Reported-by: default avatarDamian Tometzki <dtometzki@fedoraproject.org>
      Closes: https://lkml.kernel.org/r/ZPFzCSIgZ4QuHsSC@fedora.fritz.box
      
      
      Cc: Aleksa Sarai <cyphar@cyphar.com>
      Cc: Christian Brauner <brauner@kernel.org>
      Cc: Daniel Verkamp <dverkamp@chromium.org>
      Cc: Jeff Xu <jeffxu@google.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Shuah Khan <shuah@kernel.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      2562d67b
    • Linus Torvalds's avatar
      Merge tag 'kbuild-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild · 61401a87
      Linus Torvalds authored
      Pull Kbuild updates from Masahiro Yamada:
      
       - Enable -Wenum-conversion warning option
      
       - Refactor the rpm-pkg target
      
       - Fix scripts/setlocalversion to consider annotated tags for rt-kernel
      
       - Add a jump key feature for the search menu of 'make nconfig'
      
       - Support Qt6 for 'make xconfig'
      
       - Enable -Wformat-overflow, -Wformat-truncation, -Wstringop-overflow,
         and -Wrestrict warnings for W=1 builds
      
       - Replace <asm/export.h> with <linux/export.h> for alpha, ia64, and
         sparc
      
       - Support DEB_BUILD_OPTIONS=parallel=N for the debian source package
      
       - Refactor scripts/Makefile.modinst and fix some modules_sign issues
      
       - Add a new Kconfig env variable to warn symbols that are not defined
         anywhere
      
       - Show help messages of config fragments in 'make help'
      
      * tag 'kbuild-v6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (62 commits)
        kconfig: fix possible buffer overflow
        kbuild: Show marked Kconfig fragments in "help"
        kconfig: add warn-unknown-symbols sanity check
        kbuild: dummy-tools: make MPROFILE_KERNEL checks work on BE
        Documentation/llvm: refresh docs
        modpost: Skip .llvm.call-graph-profile section check
        kbuild: support modules_sign for external modules as well
        kbuild: support 'make modules_sign' with CONFIG_MODULE_SIG_ALL=n
        kbuild: move more module installation code to scripts/Makefile.modinst
        kbuild: reduce the number of mkdir calls during modules_install
        kbuild: remove $(MODLIB)/source symlink
        kbuild: move depmod rule to scripts/Makefile.modinst
        kbuild: add modules_sign to no-{compiler,sync-config}-targets
        kbuild: do not run depmod for 'make modules_sign'
        kbuild: deb-pkg: support DEB_BUILD_OPTIONS=parallel=N in debian/rules
        alpha: remove <asm/export.h>
        alpha: replace #include <asm/export.h> with #include <linux/export.h>
        ia64: remove <asm/export.h>
        ia64: replace #include <asm/export.h> with #include <linux/export.h>
        sparc: remove <asm/export.h>
        ...
      61401a87
    • Linus Torvalds's avatar
      Merge tag 'mm-stable-2023-09-04-14-00' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm · 5eea5820
      Linus Torvalds authored
      Pull more MM updates from Andrew Morton:
      
       - Stefan Roesch has added ksm statistics to /proc/pid/smaps
      
       - Also a number of singleton patches, mainly cleanups and leftovers
      
      * tag 'mm-stable-2023-09-04-14-00' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
        mm/kmemleak: move up cond_resched() call in page scanning loop
        mm: page_alloc: remove stale CMA guard code
        MAINTAINERS: add rmap.h to mm entry
        rmap: remove anon_vma_link() nommu stub
        proc/ksm: add ksm stats to /proc/pid/smaps
        mm/hwpoison: rename hwp_walk* to hwpoison_walk*
        mm: memory-failure: add PageOffline() check
      5eea5820
    • Linus Torvalds's avatar
      Merge tag 'microblaze-v6.6' of git://git.monstr.eu/linux-2.6-microblaze · 893a259c
      Linus Torvalds authored
      Pull microblaze updates from Michal Simek:
      
       - Cleanup DT headers
      
       - Remove unused zalloc_maybe_bootmem()
      
       - Make virt_to_pfn() a static inline
      
      * tag 'microblaze-v6.6' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Make virt_to_pfn() a static inline
        microblaze: Remove zalloc_maybe_bootmem()
        microblaze: Explicitly include correct DT includes
      893a259c
    • Zqiang's avatar
      rcu: dump vmalloc memory info safely · c83ad36a
      Zqiang authored
      Currently, for double invoke call_rcu(), will dump rcu_head objects memory
      info, if the objects is not allocated from the slab allocator, the
      vmalloc_dump_obj() will be invoke and the vmap_area_lock spinlock need to
      be held, since the call_rcu() can be invoked in interrupt context,
      therefore, there is a possibility of spinlock deadlock scenarios.
      
      And in Preempt-RT kernel, the rcutorture test also trigger the following
      lockdep warning:
      
      BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
      in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 1, name: swapper/0
      preempt_count: 1, expected: 0
      RCU nest depth: 1, expected: 1
      3 locks held by swapper/0/1:
       #0: ffffffffb534ee80 (fullstop_mutex){+.+.}-{4:4}, at: torture_init_begin+0x24/0xa0
       #1: ffffffffb5307940 (rcu_read_lock){....}-{1:3}, at: rcu_torture_init+0x1ec7/0x2370
       #2: ffffffffb536af40 (vmap_area_lock){+.+.}-{3:3}, at: find_vmap_area+0x1f/0x70
      irq event stamp: 565512
      hardirqs last  e...
      c83ad36a
    • Joel Fernandes (Google)'s avatar
      mm/vmalloc: add a safer version of find_vm_area() for debug · 0818e739
      Joel Fernandes (Google) authored
      It is unsafe to dump vmalloc area information when trying to do so from
      some contexts.  Add a safer trylock version of the same function to do a
      best-effort VMA finding and use it from vmalloc_dump_obj().
      
      [applied test robot feedback on unused function fix.]
      [applied Uladzislau feedback on locking.]
      Link: https://lkml.kernel.org/r/20230904180806.1002832-1-joel@joelfernandes.org
      Fixes: 98f18083
      
       ("mm: Make mem_dump_obj() handle vmalloc() memory")
      Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      Reviewed-by: default avatarUladzislau Rezki (Sony) <urezki@gmail.com>
      Reported-by: default avatarZhen Lei <thunder.leizhen@huaweicloud.com>
      Cc: Paul E. McKenney <paulmck@kernel.org>
      Cc: Zqiang <qiang.zhang1211@gmail.com>
      Cc: <stable@vger.kernel.org>
      Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      0818e739
    • Xie XiuQi's avatar
      tools/mm: fix undefined reference to pthread_once · 7f33105c
      Xie XiuQi authored
      Commit 97d5f2e9 ("tools api fs: More thread safety for global
      filesystem variables") introduces pthread_once, so the libpthread
      should be added at link time, or we'll meet the following compile
      error when 'make -C tools/mm':
      
        gcc -Wall -Wextra -I../lib/ -o page-types page-types.c ../lib/api/libapi.a
        ~/linux/tools/lib/api/fs/fs.c:146: undefined reference to `pthread_once'
        ~/linux/tools/lib/api/fs/fs.c:147: undefined reference to `pthread_once'
        ~/linux/tools/lib/api/fs/fs.c:148: undefined reference to `pthread_once'
        ~/linux/tools/lib/api/fs/fs.c:149: undefined reference to `pthread_once'
        ~/linux/tools/lib/api/fs/fs.c:150: undefined reference to `pthread_once'
        /usr/bin/ld: ../lib/api/libapi.a(libapi-in.o):~/linux/tools/lib/api/fs/fs.c:151:
        more undefined references to `pthread_once' follow
        collect2: error: ld returned 1 exit status
        make: *** [Makefile:22: page-types] Error 1
      
      Link: https://lkml.kernel.org/r/20230831034205.2376653-1-xie...
      7f33105c
    • Johannes Weiner's avatar
      memcontrol: ensure memcg acquired by id is properly set up · 6f0df8e1
      Johannes Weiner authored
      In the eviction recency check, we attempt to retrieve the memcg to which
      the folio belonged when it was evicted, by the memcg id stored in the
      shadow entry.  However, there is a chance that the retrieved memcg is not
      the original memcg that has been killed, but a new one which happens to
      have the same id.
      
      This is a somewhat unfortunate, but acceptable and rare inaccuracy in the
      heuristics.  However, if we retrieve this new memcg between its allocation
      and when it is properly attached to the memcg hierarchy, we could run into
      the following NULL pointer exception during the memcg hierarchy traversal
      done in mem_cgroup_get_nr_swap_pages():
      
      [ 155757.793456] BUG: kernel NULL pointer dereference, address: 00000000000000c0
      [ 155757.807568] #PF: supervisor read access in kernel mode
      [ 155757.818024] #PF: error_code(0x0000) - not-present page
      [ 155757.828482] PGD 401f77067 P4D 401f77067 PUD 401f76067 PMD 0
      [ 155757.839985] Oops: 0000 [#1] SMP
      [ 155757.887870] RIP: 0010:mem_cgroup_get_nr_swap_pages+0x3d/0xb0
      [ 155757.899377] Code: 29 19 4a 02 48 39 f9 74 63 48 8b 97 c0 00 00 00 48 8b b7 58 02 00 00 48 2b b7 c0 01 00 00 48 39 f0 48 0f 4d c6 48 39 d1 74 42 <48> 8b b2 c0 00 00 00 48 8b ba 58 02 00 00 48 2b ba c0 01 00 00 48
      [ 155757.937125] RSP: 0018:ffffc9002ecdfbc8 EFLAGS: 00010286
      [ 155757.947755] RAX: 00000000003a3b1c RBX: 000007ffffffffff RCX: ffff888280183000
      [ 155757.962202] RDX: 0000000000000000 RSI: 0007ffffffffffff RDI: ffff888bbc2d1000
      [ 155757.976648] RBP: 0000000000000001 R08: 000000000000000b R09: ffff888ad9cedba0
      [ 155757.991094] R10: ffffea0039c07900 R11: 0000000000000010 R12: ffff888b23a7b000
      [ 155758.005540] R13: 0000000000000000 R14: ffff888bbc2d1000 R15: 000007ffffc71354
      [ 155758.019991] FS:  00007f6234c68640(0000) GS:ffff88903f9c0000(0000) knlGS:0000000000000000
      [ 155758.036356] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 155758.048023] CR2: 00000000000000c0 CR3: 0000000a83eb8004 CR4: 00000000007706e0
      [ 155758.062473] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [ 155758.076924] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [ 155758.091376] PKRU: 55555554
      [ 155758.096957] Call Trace:
      [ 155758.102016]  <TASK>
      [ 155758.106502]  ? __die+0x78/0xc0
      [ 155758.112793]  ? page_fault_oops+0x286/0x380
      [ 155758.121175]  ? exc_page_fault+0x5d/0x110
      [ 155758.129209]  ? asm_exc_page_fault+0x22/0x30
      [ 155758.137763]  ? mem_cgroup_get_nr_swap_pages+0x3d/0xb0
      [ 155758.148060]  workingset_test_recent+0xda/0x1b0
      [ 155758.157133]  workingset_refault+0xca/0x1e0
      [ 155758.165508]  filemap_add_folio+0x4d/0x70
      [ 155758.173538]  page_cache_ra_unbounded+0xed/0x190
      [ 155758.182919]  page_cache_sync_ra+0xd6/0x1e0
      [ 155758.191738]  filemap_read+0x68d/0xdf0
      [ 155758.199495]  ? mlx5e_napi_poll+0x123/0x940
      [ 155758.207981]  ? __napi_schedule+0x55/0x90
      [ 155758.216095]  __x64_sys_pread64+0x1d6/0x2c0
      [ 155758.224601]  do_syscall_64+0x3d/0x80
      [ 155758.232058]  entry_SYSCALL_64_after_hwframe+0x46/0xb0
      [ 155758.242473] RIP: 0033:0x7f62c29153b5
      [ 155758.249938] Code: e8 48 89 75 f0 89 7d f8 48 89 4d e0 e8 b4 e6 f7 ff 41 89 c0 4c 8b 55 e0 48 8b 55 e8 48 8b 75 f0 8b 7d f8 b8 11 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 33 44 89 c7 48 89 45 f8 e8 e7 e6 f7 ff 48 8b
      [ 155758.288005] RSP: 002b:00007f6234c5ffd0 EFLAGS: 00000293 ORIG_RAX: 0000000000000011
      [ 155758.303474] RAX: ffffffffffffffda RBX: 00007f628c4e70c0 RCX: 00007f62c29153b5
      [ 155758.318075] RDX: 000000000003c041 RSI: 00007f61d2986000 RDI: 0000000000000076
      [ 155758.332678] RBP: 00007f6234c5fff0 R08: 0000000000000000 R09: 0000000064d5230c
      [ 155758.347452] R10: 000000000027d450 R11: 0000000000000293 R12: 000000000003c041
      [ 155758.362044] R13: 00007f61d2986000 R14: 00007f629e11b060 R15: 000000000027d450
      [ 155758.376661]  </TASK>
      
      This patch fixes the issue by moving the memcg's id publication from the
      alloc stage to online stage, ensuring that any memcg acquired via id must
      be connected to the memcg tree.
      
      Link: https://lkml.kernel.org/r/20230823225430.166925-1-nphamcs@gmail.com
      Fixes: f78dfc7b
      
       ("workingset: fix confusion around eviction vs refault container")
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Co-developed-by: default avatarNhat Pham <nphamcs@gmail.com>
      Signed-off-by: default avatarNhat Pham <nphamcs@gmail.com>
      Acked-by: default avatarShakeel Butt <shakeelb@google.com>
      Cc: Yosry Ahmed <yosryahmed@google.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Roman Gushchin <roman.gushchin@linux.dev>
      Cc: Muchun Song <songmuchun@bytedance.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      6f0df8e1
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of https://github.com/openrisc/linux · 3dceb8a9
      Linus Torvalds authored
      Pull OpenRISC updates from Stafford Horne:
      
       - Fixes from me to cleanup all compiler warnings reported under
         arch/openrisc
      
       - One cleanup from Linus Walleij to convert pfn macros to static
         inlines
      
      * tag 'for-linus' of https://github.com/openrisc/linux:
        openrisc: Remove kernel-doc marker from ioremap comment
        openrisc: Remove unused tlb_init function
        openriac: Remove unused nommu_dump_state function
        openrisc: Include cpu.h and switch_to.h for prototypes
        openrisc: Add prototype for die to bug.h
        openrisc: Add prototype for show_registers to processor.h
        openrisc: Declare do_signal function as static
        openrisc: Add missing prototypes for assembly called fnctions
        openrisc: Make pfn accessors statics inlines
      3dceb8a9
    • Konstantin Meskhidze's avatar
      kconfig: fix possible buffer overflow · a3b7039b
      Konstantin Meskhidze authored
      Buffer 'new_argv' is accessed without bound check after accessing with
      bound check via 'new_argc' index.
      
      Fixes: e298f3b4
      
       ("kconfig: add built-in function support")
      Co-developed-by: default avatarIvanov Mikhail <ivanov.mikhail1@huawei-partners.com>
      Signed-off-by: default avatarKonstantin Meskhidze <konstantin.meskhidze@huawei.com>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      a3b7039b
  3. Sep 05, 2023