* incoming
@ 2022-02-12 0:27 Andrew Morton
2022-02-12 2:02 ` incoming Linus Torvalds
0 siblings, 1 reply; 57+ messages in thread
From: Andrew Morton @ 2022-02-12 0:27 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-mm, mm-commits, patches
5 patches, based on f1baf68e1383f6ed93eb9cff2866d46562607a43.
Subsystems affected by this patch series:
binfmt
procfs
mm/vmscan
mm/memcg
mm/kfence
Subsystem: binfmt
Mike Rapoport <rppt@linux.ibm.com>:
fs/binfmt_elf: fix PT_LOAD p_align values for loaders
Subsystem: procfs
Yang Shi <shy828301@gmail.com>:
fs/proc: task_mmu.c: don't read mapcount for migration entry
Subsystem: mm/vmscan
Mel Gorman <mgorman@suse.de>:
mm: vmscan: remove deadlock due to throttling failing to make progress
Subsystem: mm/memcg
Roman Gushchin <guro@fb.com>:
mm: memcg: synchronize objcg lists with a dedicated spinlock
Subsystem: mm/kfence
Peng Liu <liupeng256@huawei.com>:
kfence: make test case compatible with run time set sample interval
fs/binfmt_elf.c | 2 +-
fs/proc/task_mmu.c | 40 +++++++++++++++++++++++++++++++---------
include/linux/kfence.h | 2 ++
include/linux/memcontrol.h | 5 +++--
mm/kfence/core.c | 3 ++-
mm/kfence/kfence_test.c | 8 ++++----
mm/memcontrol.c | 10 +++++-----
mm/vmscan.c | 4 +++-
8 files changed, 51 insertions(+), 23 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: incoming
2022-02-12 0:27 incoming Andrew Morton
@ 2022-02-12 2:02 ` Linus Torvalds
2022-02-12 5:24 ` incoming Andrew Morton
0 siblings, 1 reply; 57+ messages in thread
From: Linus Torvalds @ 2022-02-12 2:02 UTC (permalink / raw)
To: Andrew Morton; +Cc: Linux-MM, mm-commits, patches
On Fri, Feb 11, 2022 at 4:27 PM Andrew Morton <akpm@linux-foundation.org> wrote:
>
> 5 patches, based on f1baf68e1383f6ed93eb9cff2866d46562607a43.
So this *completely* flummoxed 'b4', because you first sent the wrong
series, and then sent the right one in the same thread.
I fetched the emails manually, but honestly, this was confusing even
then, with two "[PATCH x/5]" series where the only way to tell the
right one was basically by date of email. They did arrive in the same
order in my mailbox, but even that wouldn't have been guaranteed if
there had been some mailer delays somewhere..
So next time when you mess up, resend it all as a completely new
series and completely new threading - so with a new header email too.
Please?
And since I'm here, let me just verify that yes, the series you
actually want me to apply is this one (as described by the head
email):
Subject: [patch 1/5] fs/binfmt_elf: fix PT_LOAD p_align values ..
Subject: [patch 2/5] fs/proc: task_mmu.c: don't read mapcount f..
Subject: [patch 3/5] mm: vmscan: remove deadlock due to throttl..
Subject: [patch 4/5] mm: memcg: synchronize objcg lists with a ..
Subject: [patch 5/5] kfence: make test case compatible with run..
and not the other one with GUP patches?
Linus
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: incoming
2022-02-12 2:02 ` incoming Linus Torvalds
@ 2022-02-12 5:24 ` Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-02-12 5:24 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Linux-MM, mm-commits, patches
On Fri, 11 Feb 2022 18:02:53 -0800 Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Fri, Feb 11, 2022 at 4:27 PM Andrew Morton <akpm@linux-foundation.org> wrote:
> >
> > 5 patches, based on f1baf68e1383f6ed93eb9cff2866d46562607a43.
>
> So this *completely* flummoxed 'b4', because you first sent the wrong
> series, and then sent the right one in the same thread.
>
> I fetched the emails manually, but honestly, this was confusing even
> then, with two "[PATCH x/5]" series where the only way to tell the
> right one was basically by date of email. They did arrive in the same
> order in my mailbox, but even that wouldn't have been guaranteed if
> there had been some mailer delays somewhere..
Yes, I wondered. Sorry bout that.
> So next time when you mess up, resend it all as a completely new
> series and completely new threading - so with a new header email too.
> Please?
Wilco.
> And since I'm here, let me just verify that yes, the series you
> actually want me to apply is this one (as described by the head
> email):
>
> Subject: [patch 1/5] fs/binfmt_elf: fix PT_LOAD p_align values ..
> Subject: [patch 2/5] fs/proc: task_mmu.c: don't read mapcount f..
> Subject: [patch 3/5] mm: vmscan: remove deadlock due to throttl..
> Subject: [patch 4/5] mm: memcg: synchronize objcg lists with a ..
> Subject: [patch 5/5] kfence: make test case compatible with run..
>
> and not the other one with GUP patches?
Those are the ones. Five fixes, three with cc:stable.
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-02-26 3:10 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-02-26 3:10 UTC (permalink / raw)
To: Linus Torvalds; +Cc: mm-commits, linux-mm, patches
12 patches, based on c47658311d60be064b839f329c0e4d34f5f0735b.
Subsystems affected by this patch series:
MAINTAINERS
mm/hugetlb
mm/kasan
mm/hugetlbfs
mm/pagemap
mm/selftests
mm/memcg
m/slab
mailmap
memfd
Subsystem: MAINTAINERS
Luis Chamberlain <mcgrof@kernel.org>:
MAINTAINERS: add sysctl-next git tree
Subsystem: mm/hugetlb
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>:
mm/hugetlb: fix kernel crash with hugetlb mremap
Subsystem: mm/kasan
Andrey Konovalov <andreyknvl@google.com>:
kasan: test: prevent cache merging in kmem_cache_double_destroy
Subsystem: mm/hugetlbfs
Liu Yuntao <liuyuntao10@huawei.com>:
hugetlbfs: fix a truncation issue in hugepages parameter
Subsystem: mm/pagemap
Suren Baghdasaryan <surenb@google.com>:
mm: fix use-after-free bug when mm->mmap is reused after being freed
Subsystem: mm/selftests
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>:
selftest/vm: fix map_fixed_noreplace test failure
Subsystem: mm/memcg
Roman Gushchin <roman.gushchin@linux.dev>:
MAINTAINERS: add Roman as a memcg co-maintainer
Vladimir Davydov <vdavydov.dev@gmail.com>:
MAINTAINERS: remove Vladimir from memcg maintainers
Shakeel Butt <shakeelb@google.com>:
MAINTAINERS: add Shakeel as a memcg co-maintainer
Subsystem: m/slab
Vlastimil Babka <vbabka@suse.cz>:
MAINTAINERS, SLAB: add Roman as reviewer, git tree
Subsystem: mailmap
Roman Gushchin <roman.gushchin@linux.dev>:
mailmap: update Roman Gushchin's email
Subsystem: memfd
Mike Kravetz <mike.kravetz@oracle.com>:
selftests/memfd: clean up mapping in mfd_fail_write
.mailmap | 3 +
MAINTAINERS | 6 ++
lib/test_kasan.c | 5 +-
mm/hugetlb.c | 11 ++---
mm/mmap.c | 1
tools/testing/selftests/memfd/memfd_test.c | 1
tools/testing/selftests/vm/map_fixed_noreplace.c | 49 +++++++++++++++++------
7 files changed, 56 insertions(+), 20 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-03-05 4:28 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-05 4:28 UTC (permalink / raw)
To: Linus Torvalds; +Cc: mm-commits, linux-mm, patches
8 patches, based on 07ebd38a0da24d2534da57b4841346379db9f354.
Subsystems affected by this patch series:
mm/hugetlb
mm/pagemap
memfd
selftests
mm/userfaultfd
kconfig
Subsystem: mm/hugetlb
Mike Kravetz <mike.kravetz@oracle.com>:
selftests/vm: cleanup hugetlb file after mremap test
Subsystem: mm/pagemap
Suren Baghdasaryan <surenb@google.com>:
mm: refactor vm_area_struct::anon_vma_name usage code
mm: prevent vm_area_struct::anon_name refcount saturation
mm: fix use-after-free when anon vma name is used after vma is freed
Subsystem: memfd
Hugh Dickins <hughd@google.com>:
memfd: fix F_SEAL_WRITE after shmem huge page allocated
Subsystem: selftests
Chengming Zhou <zhouchengming@bytedance.com>:
kselftest/vm: fix tests build with old libc
Subsystem: mm/userfaultfd
Yun Zhou <yun.zhou@windriver.com>:
proc: fix documentation and description of pagemap
Subsystem: kconfig
Qian Cai <quic_qiancai@quicinc.com>:
configs/debug: set CONFIG_DEBUG_INFO=y properly
Documentation/admin-guide/mm/pagemap.rst | 2
fs/proc/task_mmu.c | 9 +-
fs/userfaultfd.c | 6 -
include/linux/mm.h | 7 +
include/linux/mm_inline.h | 105 ++++++++++++++++++---------
include/linux/mm_types.h | 5 +
kernel/configs/debug.config | 2
kernel/fork.c | 4 -
kernel/sys.c | 19 +++-
mm/madvise.c | 98 +++++++++----------------
mm/memfd.c | 40 +++++++---
mm/mempolicy.c | 2
mm/mlock.c | 2
mm/mmap.c | 12 +--
mm/mprotect.c | 2
tools/testing/selftests/vm/hugepage-mremap.c | 26 ++++--
tools/testing/selftests/vm/run_vmtests.sh | 3
tools/testing/selftests/vm/userfaultfd.c | 1
18 files changed, 201 insertions(+), 144 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-03-16 23:14 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-16 23:14 UTC (permalink / raw)
To: Linus Torvalds; +Cc: mm-commits, linux-mm, patches
4 patches, based on 56e337f2cf1326323844927a04e9dbce9a244835.
Subsystems affected by this patch series:
mm/swap
kconfig
ocfs2
selftests
Subsystem: mm/swap
Guo Ziliang <guo.ziliang@zte.com.cn>:
mm: swap: get rid of deadloop in swapin readahead
Subsystem: kconfig
Qian Cai <quic_qiancai@quicinc.com>:
configs/debug: restore DEBUG_INFO=y for overriding
Subsystem: ocfs2
Joseph Qi <joseph.qi@linux.alibaba.com>:
ocfs2: fix crash when initialize filecheck kobj fails
Subsystem: selftests
Yosry Ahmed <yosryahmed@google.com>:
selftests: vm: fix clang build error multiple output files
fs/ocfs2/super.c | 22 +++++++++++-----------
kernel/configs/debug.config | 1 +
mm/swap_state.c | 2 +-
tools/testing/selftests/vm/Makefile | 6 ++----
4 files changed, 15 insertions(+), 16 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-03-22 21:38 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-22 21:38 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-mm, mm-commits, patches
- A few misc subsystems
- There is a lot of MM material in Willy's tree. Folio work and
non-folio patches which depended on that work.
Here I send almost all the MM patches which precede the patches in
Willy's tree. The remaining ~100 MM patches are staged on Willy's
tree and I'll send those along once Willy is merged up.
I tried this batch against your current tree (as of
51912904076680281) and a couple need some extra persuasion to apply,
but all looks OK otherwise.
227 patches, based on f443e374ae131c168a065ea1748feac6b2e76613
Subsystems affected by this patch series:
kthread
scripts
ntfs
ocfs2
block
vfs
mm/kasan
mm/pagecache
mm/gup
mm/swap
mm/shmem
mm/memcg
mm/selftests
mm/pagemap
mm/mremap
mm/sparsemem
mm/vmalloc
mm/pagealloc
mm/memory-failure
mm/mlock
mm/hugetlb
mm/userfaultfd
mm/vmscan
mm/compaction
mm/mempolicy
mm/oom-kill
mm/migration
mm/thp
mm/cma
mm/autonuma
mm/psi
mm/ksm
mm/page-poison
mm/madvise
mm/memory-hotplug
mm/rmap
mm/zswap
mm/uaccess
mm/ioremap
mm/highmem
mm/cleanups
mm/kfence
mm/hmm
mm/damon
Subsystem: kthread
Rasmus Villemoes <linux@rasmusvillemoes.dk>:
linux/kthread.h: remove unused macros
Subsystem: scripts
Colin Ian King <colin.i.king@gmail.com>:
scripts/spelling.txt: add more spellings to spelling.txt
Subsystem: ntfs
Dongliang Mu <mudongliangabcd@gmail.com>:
ntfs: add sanity check on allocation size
Subsystem: ocfs2
Joseph Qi <joseph.qi@linux.alibaba.com>:
ocfs2: cleanup some return variables
hongnanli <hongnan.li@linux.alibaba.com>:
fs/ocfs2: fix comments mentioning i_mutex
Subsystem: block
NeilBrown <neilb@suse.de>:
Patch series "Remove remaining parts of congestion tracking code", v2:
doc: convert 'subsection' to 'section' in gfp.h
mm: document and polish read-ahead code
mm: improve cleanup when ->readpages doesn't process all pages
fuse: remove reliance on bdi congestion
nfs: remove reliance on bdi congestion
ceph: remove reliance on bdi congestion
remove inode_congested()
remove bdi_congested() and wb_congested() and related functions
f2fs: replace congestion_wait() calls with io_schedule_timeout()
block/bfq-iosched.c: use "false" rather than "BLK_RW_ASYNC"
remove congestion tracking framework
Subsystem: vfs
Anthony Iliopoulos <ailiop@suse.com>:
mount: warn only once about timestamp range expiration
Subsystem: mm/kasan
Miaohe Lin <linmiaohe@huawei.com>:
mm/memremap: avoid calling kasan_remove_zero_shadow() for device private memory
Subsystem: mm/pagecache
Miaohe Lin <linmiaohe@huawei.com>:
filemap: remove find_get_pages()
mm/writeback: minor clean up for highmem_dirtyable_memory
Minchan Kim <minchan@kernel.org>:
mm: fs: fix lru_cache_disabled race in bh_lru
Subsystem: mm/gup
Peter Xu <peterx@redhat.com>:
Patch series "mm/gup: some cleanups", v5:
mm: fix invalid page pointer returned with FOLL_PIN gups
John Hubbard <jhubbard@nvidia.com>:
mm/gup: follow_pfn_pte(): -EEXIST cleanup
mm/gup: remove unused pin_user_pages_locked()
mm: change lookup_node() to use get_user_pages_fast()
mm/gup: remove unused get_user_pages_locked()
Subsystem: mm/swap
Bang Li <libang.linuxer@gmail.com>:
mm/swap: fix confusing comment in folio_mark_accessed
Subsystem: mm/shmem
Xavier Roche <xavier.roche@algolia.com>:
tmpfs: support for file creation time
Hugh Dickins <hughd@google.com>:
shmem: mapping_set_exiting() to help mapped resilience
tmpfs: do not allocate pages on read
Miaohe Lin <linmiaohe@huawei.com>:
mm: shmem: use helper macro __ATTR_RW
Subsystem: mm/memcg
Shakeel Butt <shakeelb@google.com>:
memcg: replace in_interrupt() with !in_task()
Yosry Ahmed <yosryahmed@google.com>:
memcg: add per-memcg total kernel memory stat
Wei Yang <richard.weiyang@gmail.com>:
mm/memcg: mem_cgroup_per_node is already set to 0 on allocation
mm/memcg: retrieve parent memcg from css.parent
Shakeel Butt <shakeelb@google.com>:
Patch series "memcg: robust enforcement of memory.high", v2:
memcg: refactor mem_cgroup_oom
memcg: unify force charging conditions
selftests: memcg: test high limit for single entry allocation
memcg: synchronously enforce memory.high for large overcharges
Randy Dunlap <rdunlap@infradead.org>:
mm/memcontrol: return 1 from cgroup.memory __setup() handler
Michal Hocko <mhocko@suse.com>:
Patch series "mm/memcg: Address PREEMPT_RT problems instead of disabling it", v5:
mm/memcg: revert ("mm/memcg: optimize user context object stock access")
Sebastian Andrzej Siewior <bigeasy@linutronix.de>:
mm/memcg: disable threshold event handlers on PREEMPT_RT
mm/memcg: protect per-CPU counter by disabling preemption on PREEMPT_RT where needed.
Johannes Weiner <hannes@cmpxchg.org>:
mm/memcg: opencode the inner part of obj_cgroup_uncharge_pages() in drain_obj_stock()
Sebastian Andrzej Siewior <bigeasy@linutronix.de>:
mm/memcg: protect memcg_stock with a local_lock_t
mm/memcg: disable migration instead of preemption in drain_all_stock().
Muchun Song <songmuchun@bytedance.com>:
Patch series "Optimize list lru memory consumption", v6:
mm: list_lru: transpose the array of per-node per-memcg lru lists
mm: introduce kmem_cache_alloc_lru
fs: introduce alloc_inode_sb() to allocate filesystems specific inode
fs: allocate inode by using alloc_inode_sb()
f2fs: allocate inode by using alloc_inode_sb()
mm: dcache: use kmem_cache_alloc_lru() to allocate dentry
xarray: use kmem_cache_alloc_lru to allocate xa_node
mm: memcontrol: move memcg_online_kmem() to mem_cgroup_css_online()
mm: list_lru: allocate list_lru_one only when needed
mm: list_lru: rename memcg_drain_all_list_lrus to memcg_reparent_list_lrus
mm: list_lru: replace linear array with xarray
mm: memcontrol: reuse memory cgroup ID for kmem ID
mm: memcontrol: fix cannot alloc the maximum memcg ID
mm: list_lru: rename list_lru_per_memcg to list_lru_memcg
mm: memcontrol: rename memcg_cache_id to memcg_kmem_id
Vasily Averin <vvs@virtuozzo.com>:
memcg: enable accounting for tty-related objects
Subsystem: mm/selftests
Guillaume Tucker <guillaume.tucker@collabora.com>:
selftests, x86: fix how check_cc.sh is being invoked
Subsystem: mm/pagemap
Anshuman Khandual <anshuman.khandual@arm.com>:
mm: merge pte_mkhuge() call into arch_make_huge_pte()
Stafford Horne <shorne@gmail.com>:
mm: remove mmu_gathers storage from remaining architectures
Muchun Song <songmuchun@bytedance.com>:
Patch series "Fix some cache flush bugs", v5:
mm: thp: fix wrong cache flush in remove_migration_pmd()
mm: fix missing cache flush for all tail pages of compound page
mm: hugetlb: fix missing cache flush in copy_huge_page_from_user()
mm: hugetlb: fix missing cache flush in hugetlb_mcopy_atomic_pte()
mm: shmem: fix missing cache flush in shmem_mfill_atomic_pte()
mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and __mcopy_atomic()
mm: replace multiple dcache flush with flush_dcache_folio()
Peter Xu <peterx@redhat.com>:
Patch series "mm: Rework zap ptes on swap entries", v5:
mm: don't skip swap entry even if zap_details specified
mm: rename zap_skip_check_mapping() to should_zap_page()
mm: change zap_details.zap_mapping into even_cows
mm: rework swap handling of zap_pte_range
Randy Dunlap <rdunlap@infradead.org>:
mm/mmap: return 1 from stack_guard_gap __setup() handler
Miaohe Lin <linmiaohe@huawei.com>:
mm/memory.c: use helper function range_in_vma()
mm/memory.c: use helper macro min and max in unmap_mapping_range_tree()
Hugh Dickins <hughd@google.com>:
mm: _install_special_mapping() apply VM_LOCKED_CLEAR_MASK
Miaohe Lin <linmiaohe@huawei.com>:
mm/mmap: remove obsolete comment in ksys_mmap_pgoff
Subsystem: mm/mremap
Miaohe Lin <linmiaohe@huawei.com>:
mm/mremap:: use vma_lookup() instead of find_vma()
Subsystem: mm/sparsemem
Miaohe Lin <linmiaohe@huawei.com>:
mm/sparse: make mminit_validate_memmodel_limits() static
Subsystem: mm/vmalloc
Miaohe Lin <linmiaohe@huawei.com>:
mm/vmalloc: remove unneeded function forward declaration
"Uladzislau Rezki (Sony)" <urezki@gmail.com>:
mm/vmalloc: Move draining areas out of caller context
Uladzislau Rezki <uladzislau.rezki@sony.com>:
mm/vmalloc: add adjust_search_size parameter
"Uladzislau Rezki (Sony)" <urezki@gmail.com>:
mm/vmalloc: eliminate an extra orig_gfp_mask
Jiapeng Chong <jiapeng.chong@linux.alibaba.com>:
mm/vmalloc.c: fix "unused function" warning
Bang Li <libang.linuxer@gmail.com>:
mm/vmalloc: fix comments about vmap_area struct
Subsystem: mm/pagealloc
Zi Yan <ziy@nvidia.com>:
mm: page_alloc: avoid merging non-fallbackable pageblocks with others
Peter Collingbourne <pcc@google.com>:
mm/mmzone.c: use try_cmpxchg() in page_cpupid_xchg_last()
Miaohe Lin <linmiaohe@huawei.com>:
mm/mmzone.h: remove unused macros
Nicolas Saenz Julienne <nsaenzju@redhat.com>:
mm/page_alloc: don't pass pfn to free_unref_page_commit()
David Hildenbrand <david@redhat.com>:
Patch series "mm: enforce pageblock_order < MAX_ORDER":
cma: factor out minimum alignment requirement
mm: enforce pageblock_order < MAX_ORDER
Nathan Chancellor <nathan@kernel.org>:
mm/page_alloc: mark pagesets as __maybe_unused
Alistair Popple <apopple@nvidia.com>:
mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node
Mel Gorman <mgorman@techsingularity.net>:
Patch series "Follow-up on high-order PCP caching", v2:
mm/page_alloc: fetch the correct pcp buddy during bulk free
mm/page_alloc: track range of active PCP lists during bulk free
mm/page_alloc: simplify how many pages are selected per pcp list during bulk free
mm/page_alloc: drain the requested list first during bulk free
mm/page_alloc: free pages in a single pass during bulk free
mm/page_alloc: limit number of high-order pages on PCP during bulk free
mm/page_alloc: do not prefetch buddies during bulk free
Oscar Salvador <osalvador@suse.de>:
arch/x86/mm/numa: Do not initialize nodes twice
Suren Baghdasaryan <surenb@google.com>:
mm: count time in drain_all_pages during direct reclaim as memory pressure
Eric Dumazet <edumazet@google.com>:
mm/page_alloc: call check_new_pages() while zone spinlock is not held
Mel Gorman <mgorman@techsingularity.net>:
mm/page_alloc: check high-order pages for corruption during PCP operations
Subsystem: mm/memory-failure
Naoya Horiguchi <naoya.horiguchi@nec.com>:
mm/memory-failure.c: remove obsolete comment
mm/hwpoison: fix error page recovered but reported "not recovered"
Rik van Riel <riel@surriel.com>:
mm: invalidate hwpoison page cache page in fault path
Miaohe Lin <linmiaohe@huawei.com>:
Patch series "A few cleanup and fixup patches for memory failure", v3:
mm/memory-failure.c: minor clean up for memory_failure_dev_pagemap
mm/memory-failure.c: catch unexpected -EFAULT from vma_address()
mm/memory-failure.c: rework the signaling logic in kill_proc
mm/memory-failure.c: fix race with changing page more robustly
mm/memory-failure.c: remove PageSlab check in hwpoison_filter_dev
mm/memory-failure.c: rework the try_to_unmap logic in hwpoison_user_mappings()
mm/memory-failure.c: remove obsolete comment in __soft_offline_page
mm/memory-failure.c: remove unnecessary PageTransTail check
mm/hwpoison-inject: support injecting hwpoison to free page
luofei <luofei@unicloud.com>:
mm/hwpoison: avoid the impact of hwpoison_filter() return value on mce handler
mm/hwpoison: add in-use hugepage hwpoison filter judgement
Miaohe Lin <linmiaohe@huawei.com>:
Patch series "A few fixup patches for memory failure", v2:
mm/memory-failure.c: fix race with changing page compound again
mm/memory-failure.c: avoid calling invalidate_inode_page() with unexpected pages
mm/memory-failure.c: make non-LRU movable pages unhandlable
Vlastimil Babka <vbabka@suse.cz>:
mm, fault-injection: declare should_fail_alloc_page()
Subsystem: mm/mlock
Miaohe Lin <linmiaohe@huawei.com>:
mm/mlock: fix potential imbalanced rlimit ucounts adjustment
Subsystem: mm/hugetlb
Muchun Song <songmuchun@bytedance.com>:
Patch series "Free the 2nd vmemmap page associated with each HugeTLB page", v7:
mm: hugetlb: free the 2nd vmemmap page associated with each HugeTLB page
mm: hugetlb: replace hugetlb_free_vmemmap_enabled with a static_key
mm: sparsemem: use page table lock to protect kernel pmd operations
selftests: vm: add a hugetlb test case
mm: sparsemem: move vmemmap related to HugeTLB to CONFIG_HUGETLB_PAGE_FREE_VMEMMAP
Anshuman Khandual <anshuman.khandual@arm.com>:
mm/hugetlb: generalize ARCH_WANT_GENERAL_HUGETLB
Mike Kravetz <mike.kravetz@oracle.com>:
hugetlb: clean up potential spectre issue warnings
Miaohe Lin <linmiaohe@huawei.com>:
mm/hugetlb: use helper macro __ATTR_RW
David Howells <dhowells@redhat.com>:
mm/hugetlb.c: export PageHeadHuge()
Miaohe Lin <linmiaohe@huawei.com>:
mm: remove unneeded local variable follflags
Subsystem: mm/userfaultfd
Nadav Amit <namit@vmware.com>:
userfaultfd: provide unmasked address on page-fault
Guo Zhengkui <guozhengkui@vivo.com>:
userfaultfd/selftests: fix uninitialized_var.cocci warning
Subsystem: mm/vmscan
Hugh Dickins <hughd@google.com>:
mm/fs: delete PF_SWAPWRITE
mm: __isolate_lru_page_prepare() in isolate_migratepages_block()
Waiman Long <longman@redhat.com>:
mm/list_lru: optimize memcg_reparent_list_lru_node()
Marcelo Tosatti <mtosatti@redhat.com>:
mm: lru_cache_disable: replace work queue synchronization with synchronize_rcu
Sebastian Andrzej Siewior <bigeasy@linutronix.de>:
mm: workingset: replace IRQ-off check with a lockdep assert.
Charan Teja Kalla <quic_charante@quicinc.com>:
mm: vmscan: fix documentation for page_check_references()
Subsystem: mm/compaction
Baolin Wang <baolin.wang@linux.alibaba.com>:
mm: compaction: cleanup the compaction trace events
Subsystem: mm/mempolicy
Hugh Dickins <hughd@google.com>:
mempolicy: mbind_range() set_policy() after vma_merge()
Subsystem: mm/oom-kill
Miaohe Lin <linmiaohe@huawei.com>:
mm/oom_kill: remove unneeded is_memcg_oom check
Subsystem: mm/migration
Huang Ying <ying.huang@intel.com>:
mm,migrate: fix establishing demotion target
"andrew.yang" <andrew.yang@mediatek.com>:
mm/migrate: fix race between lock page and clear PG_Isolated
Subsystem: mm/thp
Hugh Dickins <hughd@google.com>:
mm/thp: refix __split_huge_pmd_locked() for migration PMD
Subsystem: mm/cma
Hari Bathini <hbathini@linux.ibm.com>:
Patch series "powerpc/fadump: handle CMA activation failure appropriately", v3:
mm/cma: provide option to opt out from exposing pages on activation failure
powerpc/fadump: opt out from freeing pages on cma activation failure
Subsystem: mm/autonuma
Huang Ying <ying.huang@intel.com>:
Patch series "NUMA balancing: optimize memory placement for memory tiering system", v13:
NUMA Balancing: add page promotion counter
NUMA balancing: optimize page placement for memory tiering system
memory tiering: skip to scan fast memory
Subsystem: mm/psi
Johannes Weiner <hannes@cmpxchg.org>:
mm: page_io: fix psi memory pressure error on cold swapins
Subsystem: mm/ksm
Yang Yang <yang.yang29@zte.com.cn>:
mm/vmstat: add event for ksm swapping in copy
Miaohe Lin <linmiaohe@huawei.com>:
mm/ksm: use helper macro __ATTR_RW
Subsystem: mm/page-poison
"Matthew Wilcox (Oracle)" <willy@infradead.org>:
mm/hwpoison: check the subpage, not the head page
Subsystem: mm/madvise
Miaohe Lin <linmiaohe@huawei.com>:
mm/madvise: use vma_lookup() instead of find_vma()
Charan Teja Kalla <quic_charante@quicinc.com>:
Patch series "mm: madvise: return correct bytes processed with:
mm: madvise: return correct bytes advised with process_madvise
mm: madvise: skip unmapped vma holes passed to process_madvise
Subsystem: mm/memory-hotplug
Michal Hocko <mhocko@suse.com>:
Patch series "mm, memory_hotplug: handle unitialized numa node gracefully":
mm, memory_hotplug: make arch_alloc_nodedata independent on CONFIG_MEMORY_HOTPLUG
mm: handle uninitialized numa nodes gracefully
mm, memory_hotplug: drop arch_free_nodedata
mm, memory_hotplug: reorganize new pgdat initialization
mm: make free_area_init_node aware of memory less nodes
Wei Yang <richard.weiyang@gmail.com>:
memcg: do not tweak node in alloc_mem_cgroup_per_node_info
David Hildenbrand <david@redhat.com>:
drivers/base/memory: add memory block to memory group after registration succeeded
drivers/base/node: consolidate node device subsystem initialization in node_dev_init()
Miaohe Lin <linmiaohe@huawei.com>:
Patch series "A few cleanup patches around memory_hotplug":
mm/memory_hotplug: remove obsolete comment of __add_pages
mm/memory_hotplug: avoid calling zone_intersects() for ZONE_NORMAL
mm/memory_hotplug: clean up try_offline_node
mm/memory_hotplug: fix misplaced comment in offline_pages
David Hildenbrand <david@redhat.com>:
Patch series "drivers/base/memory: determine and store zone for single-zone memory blocks", v2:
drivers/base/node: rename link_mem_sections() to register_memory_block_under_node()
drivers/base/memory: determine and store zone for single-zone memory blocks
drivers/base/memory: clarify adding and removing of memory blocks
Oscar Salvador <osalvador@suse.de>:
mm: only re-generate demotion targets when a numa node changes its N_CPU state
Subsystem: mm/rmap
Hugh Dickins <hughd@google.com>:
mm/thp: ClearPageDoubleMap in first page_add_file_rmap()
Subsystem: mm/zswap
"Maciej S. Szmigiero" <maciej.szmigiero@oracle.com>:
mm/zswap.c: allow handling just same-value filled pages
Subsystem: mm/uaccess
Christophe Leroy <christophe.leroy@csgroup.eu>:
mm: remove usercopy_warn()
mm: uninline copy_overflow()
Randy Dunlap <rdunlap@infradead.org>:
mm/usercopy: return 1 from hardened_usercopy __setup() handler
Subsystem: mm/ioremap
Vlastimil Babka <vbabka@suse.cz>:
mm/early_ioremap: declare early_memremap_pgprot_adjust()
Subsystem: mm/highmem
Ira Weiny <ira.weiny@intel.com>:
highmem: document kunmap_local()
Miaohe Lin <linmiaohe@huawei.com>:
mm/highmem: remove unnecessary done label
Subsystem: mm/cleanups
"Dr. David Alan Gilbert" <linux@treblig.org>:
mm/page_table_check.c: use strtobool for param parsing
Subsystem: mm/kfence
tangmeng <tangmeng@uniontech.com>:
mm/kfence: remove unnecessary CONFIG_KFENCE option
Tianchen Ding <dtcccc@linux.alibaba.com>:
Patch series "provide the flexibility to enable KFENCE", v3:
kfence: allow re-enabling KFENCE after system startup
kfence: alloc kfence_pool after system startup
Peng Liu <liupeng256@huawei.com>:
Patch series "kunit: fix a UAF bug and do some optimization", v2:
kunit: fix UAF when run kfence test case test_gfpzero
kunit: make kunit_test_timeout compatible with comment
kfence: test: try to avoid test_gfpzero trigger rcu_stall
Marco Elver <elver@google.com>:
kfence: allow use of a deferrable timer
Subsystem: mm/hmm
Miaohe Lin <linmiaohe@huawei.com>:
mm/hmm.c: remove unneeded local variable ret
Subsystem: mm/damon
SeongJae Park <sj@kernel.org>:
Patch series "Remove the type-unclear target id concept":
mm/damon/dbgfs/init_regions: use target index instead of target id
Docs/admin-guide/mm/damon/usage: update for changed initail_regions file input
mm/damon/core: move damon_set_targets() into dbgfs
mm/damon: remove the target id concept
Baolin Wang <baolin.wang@linux.alibaba.com>:
mm/damon: remove redundant page validation
SeongJae Park <sj@kernel.org>:
Patch series "Allow DAMON user code independent of monitoring primitives":
mm/damon: rename damon_primitives to damon_operations
mm/damon: let monitoring operations can be registered and selected
mm/damon/paddr,vaddr: register themselves to DAMON in subsys_initcall
mm/damon/reclaim: use damon_select_ops() instead of damon_{v,p}a_set_operations()
mm/damon/dbgfs: use damon_select_ops() instead of damon_{v,p}a_set_operations()
mm/damon/dbgfs: use operations id for knowing if the target has pid
mm/damon/dbgfs-test: fix is_target_id() change
mm/damon/paddr,vaddr: remove damon_{p,v}a_{target_valid,set_operations}()
tangmeng <tangmeng@uniontech.com>:
mm/damon: remove unnecessary CONFIG_DAMON option
SeongJae Park <sj@kernel.org>:
Patch series "Docs/damon: Update documents for better consistency":
Docs/vm/damon: call low level monitoring primitives the operations
Docs/vm/damon/design: update DAMON-Idle Page Tracking interference handling
Docs/damon: update outdated term 'regions update interval'
Patch series "Introduce DAMON sysfs interface", v3:
mm/damon/core: allow non-exclusive DAMON start/stop
mm/damon/core: add number of each enum type values
mm/damon: implement a minimal stub for sysfs-based DAMON interface
mm/damon/sysfs: link DAMON for virtual address spaces monitoring
mm/damon/sysfs: support the physical address space monitoring
mm/damon/sysfs: support DAMON-based Operation Schemes
mm/damon/sysfs: support DAMOS quotas
mm/damon/sysfs: support schemes prioritization
mm/damon/sysfs: support DAMOS watermarks
mm/damon/sysfs: support DAMOS stats
selftests/damon: add a test for DAMON sysfs interface
Docs/admin-guide/mm/damon/usage: document DAMON sysfs interface
Docs/ABI/testing: add DAMON sysfs interface ABI document
Xin Hao <xhao@linux.alibaba.com>:
mm/damon/sysfs: remove repeat container_of() in damon_sysfs_kdamond_release()
Documentation/ABI/testing/sysfs-kernel-mm-damon | 274 ++
Documentation/admin-guide/cgroup-v1/memory.rst | 2
Documentation/admin-guide/cgroup-v2.rst | 5
Documentation/admin-guide/kernel-parameters.txt | 2
Documentation/admin-guide/mm/damon/usage.rst | 380 +++
Documentation/admin-guide/mm/zswap.rst | 22
Documentation/admin-guide/sysctl/kernel.rst | 31
Documentation/core-api/mm-api.rst | 19
Documentation/dev-tools/kfence.rst | 12
Documentation/filesystems/porting.rst | 6
Documentation/filesystems/vfs.rst | 16
Documentation/vm/damon/design.rst | 43
Documentation/vm/damon/faq.rst | 2
MAINTAINERS | 1
arch/arm/Kconfig | 4
arch/arm64/kernel/setup.c | 3
arch/arm64/mm/hugetlbpage.c | 1
arch/hexagon/mm/init.c | 2
arch/ia64/kernel/topology.c | 10
arch/ia64/mm/discontig.c | 11
arch/mips/kernel/topology.c | 5
arch/nds32/mm/init.c | 1
arch/openrisc/mm/init.c | 2
arch/powerpc/include/asm/fadump-internal.h | 5
arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h | 4
arch/powerpc/kernel/fadump.c | 8
arch/powerpc/kernel/sysfs.c | 17
arch/riscv/Kconfig | 4
arch/riscv/kernel/setup.c | 3
arch/s390/kernel/numa.c | 7
arch/sh/kernel/topology.c | 5
arch/sparc/kernel/sysfs.c | 12
arch/sparc/mm/hugetlbpage.c | 1
arch/x86/Kconfig | 4
arch/x86/kernel/cpu/mce/core.c | 8
arch/x86/kernel/topology.c | 5
arch/x86/mm/numa.c | 33
block/bdev.c | 2
block/bfq-iosched.c | 2
drivers/base/init.c | 1
drivers/base/memory.c | 149 +
drivers/base/node.c | 48
drivers/block/drbd/drbd_int.h | 3
drivers/block/drbd/drbd_req.c | 3
drivers/dax/super.c | 2
drivers/of/of_reserved_mem.c | 9
drivers/tty/tty_io.c | 2
drivers/virtio/virtio_mem.c | 9
fs/9p/vfs_inode.c | 2
fs/adfs/super.c | 2
fs/affs/super.c | 2
fs/afs/super.c | 2
fs/befs/linuxvfs.c | 2
fs/bfs/inode.c | 2
fs/btrfs/inode.c | 2
fs/buffer.c | 8
fs/ceph/addr.c | 22
fs/ceph/inode.c | 2
fs/ceph/super.c | 1
fs/ceph/super.h | 1
fs/cifs/cifsfs.c | 2
fs/coda/inode.c | 2
fs/dcache.c | 3
fs/ecryptfs/super.c | 2
fs/efs/super.c | 2
fs/erofs/super.c | 2
fs/exfat/super.c | 2
fs/ext2/ialloc.c | 5
fs/ext2/super.c | 2
fs/ext4/super.c | 2
fs/f2fs/compress.c | 4
fs/f2fs/data.c | 3
fs/f2fs/f2fs.h | 6
fs/f2fs/segment.c | 8
fs/f2fs/super.c | 14
fs/fat/inode.c | 2
fs/freevxfs/vxfs_super.c | 2
fs/fs-writeback.c | 40
fs/fuse/control.c | 17
fs/fuse/dev.c | 8
fs/fuse/file.c | 17
fs/fuse/inode.c | 2
fs/gfs2/super.c | 2
fs/hfs/super.c | 2
fs/hfsplus/super.c | 2
fs/hostfs/hostfs_kern.c | 2
fs/hpfs/super.c | 2
fs/hugetlbfs/inode.c | 2
fs/inode.c | 2
fs/isofs/inode.c | 2
fs/jffs2/super.c | 2
fs/jfs/super.c | 2
fs/minix/inode.c | 2
fs/namespace.c | 2
fs/nfs/inode.c | 2
fs/nfs/write.c | 14
fs/nilfs2/segbuf.c | 16
fs/nilfs2/super.c | 2
fs/ntfs/inode.c | 6
fs/ntfs3/super.c | 2
fs/ocfs2/alloc.c | 2
fs/ocfs2/aops.c | 2
fs/ocfs2/cluster/nodemanager.c | 2
fs/ocfs2/dir.c | 4
fs/ocfs2/dlmfs/dlmfs.c | 2
fs/ocfs2/file.c | 13
fs/ocfs2/inode.c | 2
fs/ocfs2/localalloc.c | 6
fs/ocfs2/namei.c | 2
fs/ocfs2/ocfs2.h | 4
fs/ocfs2/quota_global.c | 2
fs/ocfs2/stack_user.c | 18
fs/ocfs2/super.c | 2
fs/ocfs2/xattr.c | 2
fs/openpromfs/inode.c | 2
fs/orangefs/super.c | 2
fs/overlayfs/super.c | 2
fs/proc/inode.c | 2
fs/qnx4/inode.c | 2
fs/qnx6/inode.c | 2
fs/reiserfs/super.c | 2
fs/romfs/super.c | 2
fs/squashfs/super.c | 2
fs/sysv/inode.c | 2
fs/ubifs/super.c | 2
fs/udf/super.c | 2
fs/ufs/super.c | 2
fs/userfaultfd.c | 5
fs/vboxsf/super.c | 2
fs/xfs/libxfs/xfs_btree.c | 2
fs/xfs/xfs_buf.c | 3
fs/xfs/xfs_icache.c | 2
fs/zonefs/super.c | 2
include/linux/backing-dev-defs.h | 8
include/linux/backing-dev.h | 50
include/linux/cma.h | 14
include/linux/damon.h | 95
include/linux/fault-inject.h | 2
include/linux/fs.h | 21
include/linux/gfp.h | 10
include/linux/highmem-internal.h | 10
include/linux/hugetlb.h | 8
include/linux/kthread.h | 22
include/linux/list_lru.h | 45
include/linux/memcontrol.h | 46
include/linux/memory.h | 12
include/linux/memory_hotplug.h | 132 -
include/linux/migrate.h | 8
include/linux/mm.h | 11
include/linux/mmzone.h | 22
include/linux/nfs_fs_sb.h | 1
include/linux/node.h | 25
include/linux/page-flags.h | 96
include/linux/pageblock-flags.h | 7
include/linux/pagemap.h | 7
include/linux/sched.h | 1
include/linux/sched/sysctl.h | 10
include/linux/shmem_fs.h | 1
include/linux/slab.h | 3
include/linux/swap.h | 6
include/linux/thread_info.h | 5
include/linux/uaccess.h | 2
include/linux/vm_event_item.h | 3
include/linux/vmalloc.h | 4
include/linux/xarray.h | 9
include/ras/ras_event.h | 1
include/trace/events/compaction.h | 26
include/trace/events/writeback.h | 28
include/uapi/linux/userfaultfd.h | 8
ipc/mqueue.c | 2
kernel/dma/contiguous.c | 4
kernel/sched/core.c | 21
kernel/sysctl.c | 2
lib/Kconfig.kfence | 12
lib/kunit/try-catch.c | 3
lib/xarray.c | 10
mm/Kconfig | 6
mm/backing-dev.c | 57
mm/cma.c | 31
mm/cma.h | 1
mm/compaction.c | 60
mm/damon/Kconfig | 19
mm/damon/Makefile | 7
mm/damon/core-test.h | 23
mm/damon/core.c | 190 +
mm/damon/dbgfs-test.h | 103
mm/damon/dbgfs.c | 264 +-
mm/damon/ops-common.c | 133 +
mm/damon/ops-common.h | 16
mm/damon/paddr.c | 62
mm/damon/prmtv-common.c | 133 -
mm/damon/prmtv-common.h | 16
mm/damon/reclaim.c | 11
mm/damon/sysfs.c | 2632 ++++++++++++++++++++++-
mm/damon/vaddr-test.h | 8
mm/damon/vaddr.c | 67
mm/early_ioremap.c | 1
mm/fadvise.c | 5
mm/filemap.c | 17
mm/gup.c | 103
mm/highmem.c | 9
mm/hmm.c | 3
mm/huge_memory.c | 41
mm/hugetlb.c | 23
mm/hugetlb_vmemmap.c | 74
mm/hwpoison-inject.c | 7
mm/internal.h | 19
mm/kfence/Makefile | 2
mm/kfence/core.c | 147 +
mm/kfence/kfence_test.c | 3
mm/ksm.c | 6
mm/list_lru.c | 690 ++----
mm/maccess.c | 6
mm/madvise.c | 18
mm/memcontrol.c | 549 ++--
mm/memory-failure.c | 148 -
mm/memory.c | 116 -
mm/memory_hotplug.c | 136 -
mm/mempolicy.c | 29
mm/memremap.c | 3
mm/migrate.c | 128 -
mm/mlock.c | 1
mm/mmap.c | 5
mm/mmzone.c | 7
mm/mprotect.c | 13
mm/mremap.c | 4
mm/oom_kill.c | 3
mm/page-writeback.c | 12
mm/page_alloc.c | 429 +--
mm/page_io.c | 7
mm/page_table_check.c | 10
mm/ptdump.c | 16
mm/readahead.c | 124 +
mm/rmap.c | 15
mm/shmem.c | 46
mm/slab.c | 39
mm/slab.h | 25
mm/slob.c | 6
mm/slub.c | 42
mm/sparse-vmemmap.c | 70
mm/sparse.c | 2
mm/swap.c | 25
mm/swapfile.c | 1
mm/usercopy.c | 16
mm/userfaultfd.c | 3
mm/vmalloc.c | 102
mm/vmscan.c | 138 -
mm/vmstat.c | 19
mm/workingset.c | 7
mm/zswap.c | 15
net/socket.c | 2
net/sunrpc/rpc_pipe.c | 2
scripts/spelling.txt | 16
tools/testing/selftests/cgroup/cgroup_util.c | 15
tools/testing/selftests/cgroup/cgroup_util.h | 1
tools/testing/selftests/cgroup/test_memcontrol.c | 78
tools/testing/selftests/damon/Makefile | 1
tools/testing/selftests/damon/sysfs.sh | 306 ++
tools/testing/selftests/vm/.gitignore | 1
tools/testing/selftests/vm/Makefile | 7
tools/testing/selftests/vm/hugepage-vmemmap.c | 144 +
tools/testing/selftests/vm/run_vmtests.sh | 11
tools/testing/selftests/vm/userfaultfd.c | 2
tools/testing/selftests/x86/Makefile | 6
264 files changed, 7205 insertions(+), 3090 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-03-23 23:04 Andrew Morton
2022-03-23 23:05 ` [patch 01/41] proc: alloc PATH_MAX bytes for /proc/${pid}/fd/ symlinks Andrew Morton
` (40 more replies)
0 siblings, 41 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:04 UTC (permalink / raw)
To: Linus Torvalds; +Cc: mm-commits, linux-mm, patches
Various misc subsystems, before getting into the post-linux-next material.
This is all based on v5.17. I tested applying and compiling against
today's 1bc191051dca28fa6. One patch required an extra whack, all
looks good.
41 patches, based on f443e374ae131c168a065ea1748feac6b2e76613.
Subsystems affected by this patch series:
procfs
misc
core-kernel
lib
checkpatch
init
pipe
minix
fat
cgroups
kexec
kdump
taskstats
panic
kcov
resource
ubsan
Subsystem: procfs
Hao Lee <haolee.swjtu@gmail.com>:
proc: alloc PATH_MAX bytes for /proc/${pid}/fd/ symlinks
David Hildenbrand <david@redhat.com>:
proc/vmcore: fix possible deadlock on concurrent mmap and read
Yang Li <yang.lee@linux.alibaba.com>:
proc/vmcore: fix vmcore_alloc_buf() kernel-doc comment
Subsystem: misc
Bjorn Helgaas <bhelgaas@google.com>:
linux/types.h: remove unnecessary __bitwise__
Documentation/sparse: add hints about __CHECKER__
Subsystem: core-kernel
Miaohe Lin <linmiaohe@huawei.com>:
kernel/ksysfs.c: use helper macro __ATTR_RW
Subsystem: lib
Kees Cook <keescook@chromium.org>:
Kconfig.debug: make DEBUG_INFO selectable from a choice
Rasmus Villemoes <linux@rasmusvillemoes.dk>:
include: drop pointless __compiler_offsetof indirection
Christophe Leroy <christophe.leroy@csgroup.eu>:
ilog2: force inlining of __ilog2_u32() and __ilog2_u64()
Andy Shevchenko <andriy.shevchenko@linux.intel.com>:
bitfield: add explicit inclusions to the example
Feng Tang <feng.tang@intel.com>:
lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option
Randy Dunlap <rdunlap@infradead.org>:
lib: bitmap: fix many kernel-doc warnings
Subsystem: checkpatch
Joe Perches <joe@perches.com>:
checkpatch: prefer MODULE_LICENSE("GPL") over MODULE_LICENSE("GPL v2")
checkpatch: add --fix option for some TRAILING_STATEMENTS
checkpatch: add early_param exception to blank line after struct/function test
Sagar Patel <sagarmp@cs.unc.edu>:
checkpatch: use python3 to find codespell dictionary
Subsystem: init
Mark-PK Tsai <mark-pk.tsai@mediatek.com>:
init: use ktime_us_delta() to make initcall_debug log more precise
Randy Dunlap <rdunlap@infradead.org>:
init.h: improve __setup and early_param documentation
init/main.c: return 1 from handled __setup() functions
Subsystem: pipe
Andrei Vagin <avagin@gmail.com>:
fs/pipe: use kvcalloc to allocate a pipe_buffer array
fs/pipe.c: local vars have to match types of proper pipe_inode_info fields
Subsystem: minix
Qinghua Jin <qhjin.dev@gmail.com>:
minix: fix bug when opening a file with O_DIRECT
Subsystem: fat
Helge Deller <deller@gmx.de>:
fat: use pointer to simple type in put_user()
Subsystem: cgroups
Sebastian Andrzej Siewior <bigeasy@linutronix.de>:
cgroup: use irqsave in cgroup_rstat_flush_locked().
cgroup: add a comment to cgroup_rstat_flush_locked().
Subsystem: kexec
Jisheng Zhang <jszhang@kernel.org>:
Patch series "kexec: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef", v2:
kexec: make crashk_res, crashk_low_res and crash_notes symbols always visible
riscv: mm: init: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
x86/setup: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
arm64: mm: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
Subsystem: kdump
Tiezhu Yang <yangtiezhu@loongson.cn>:
Patch series "Update doc and fix some issues about kdump", v2:
docs: kdump: update description about sysfs file system support
docs: kdump: add scp example to write out the dump file
panic: unset panic_on_warn inside panic()
ubsan: no need to unset panic_on_warn in ubsan_epilogue()
kasan: no need to unset panic_on_warn in end_report()
Subsystem: taskstats
Lukas Bulwahn <lukas.bulwahn@gmail.com>:
taskstats: remove unneeded dead assignment
Subsystem: panic
"Guilherme G. Piccoli" <gpiccoli@igalia.com>:
Patch series "Some improvements on panic_print":
docs: sysctl/kernel: add missing bit to panic_print
panic: add option to dump all CPUs backtraces in panic_print
panic: move panic_print before kmsg dumpers
Subsystem: kcov
Aleksandr Nogikh <nogikh@google.com>:
Patch series "kcov: improve mmap processing", v3:
kcov: split ioctl handling into locked and unlocked parts
kcov: properly handle subsequent mmap calls
Subsystem: resource
Miaohe Lin <linmiaohe@huawei.com>:
kernel/resource: fix kfree() of bootmem memory again
Subsystem: ubsan
Marco Elver <elver@google.com>:
Revert "ubsan, kcsan: Don't combine sanitizer with kcov on clang"
Documentation/admin-guide/kdump/kdump.rst | 10 +
Documentation/admin-guide/kernel-parameters.txt | 5
Documentation/admin-guide/sysctl/kernel.rst | 2
Documentation/dev-tools/sparse.rst | 2
arch/arm64/mm/init.c | 9 -
arch/riscv/mm/init.c | 6 -
arch/x86/kernel/setup.c | 10 -
fs/fat/dir.c | 2
fs/minix/inode.c | 3
fs/pipe.c | 13 +-
fs/proc/base.c | 8 -
fs/proc/vmcore.c | 43 +++----
include/linux/bitfield.h | 3
include/linux/compiler_types.h | 3
include/linux/init.h | 11 +
include/linux/kexec.h | 12 +-
include/linux/log2.h | 4
include/linux/stddef.h | 6 -
include/uapi/linux/types.h | 6 -
init/main.c | 14 +-
kernel/cgroup/rstat.c | 13 +-
kernel/kcov.c | 102 ++++++++---------
kernel/ksysfs.c | 3
kernel/panic.c | 37 ++++--
kernel/resource.c | 41 +-----
kernel/taskstats.c | 5
lib/Kconfig.debug | 142 ++++++++++++------------
lib/Kconfig.kcsan | 11 -
lib/Kconfig.ubsan | 12 --
lib/bitmap.c | 24 ++--
lib/ubsan.c | 10 -
mm/kasan/report.c | 10 -
scripts/checkpatch.pl | 31 ++++-
tools/include/linux/types.h | 5
34 files changed, 313 insertions(+), 305 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 01/41] proc: alloc PATH_MAX bytes for /proc/${pid}/fd/ symlinks
2022-03-23 23:04 incoming Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 02/41] proc/vmcore: fix possible deadlock on concurrent mmap and read Andrew Morton
` (39 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: keescook, jamorris, christian.brauner, adobriyan, haolee.swjtu,
akpm, patches, linux-mm, mm-commits, torvalds, akpm
From: Hao Lee <haolee.swjtu@gmail.com>
Subject: proc: alloc PATH_MAX bytes for /proc/${pid}/fd/ symlinks
It's not a standard approach that use __get_free_page() to alloc path
buffer directly. We'd better use kmalloc and PATH_MAX.
PAGE_SIZE is different on different archs. An unlinked file
with very long canonical pathname will readlink differently
because "(deleted)" eats into a buffer. --adobriyan
[akpm@linux-foundation.org: remove now-unneeded cast]
Link: https://lkml.kernel.org/r/Ye1fCxyZZ0I5lgOL@localhost.localdomain
Signed-off-by: Hao Lee <haolee.swjtu@gmail.com>
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Christian Brauner <christian.brauner@ubuntu.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: James Morris <jamorris@linux.microsoft.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/proc/base.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- a/fs/proc/base.c~proc-alloc-path_max-bytes-for-proc-pid-fd-symlinks
+++ a/fs/proc/base.c
@@ -1764,25 +1764,25 @@ out:
static int do_proc_readlink(struct path *path, char __user *buffer, int buflen)
{
- char *tmp = (char *)__get_free_page(GFP_KERNEL);
+ char *tmp = kmalloc(PATH_MAX, GFP_KERNEL);
char *pathname;
int len;
if (!tmp)
return -ENOMEM;
- pathname = d_path(path, tmp, PAGE_SIZE);
+ pathname = d_path(path, tmp, PATH_MAX);
len = PTR_ERR(pathname);
if (IS_ERR(pathname))
goto out;
- len = tmp + PAGE_SIZE - 1 - pathname;
+ len = tmp + PATH_MAX - 1 - pathname;
if (len > buflen)
len = buflen;
if (copy_to_user(buffer, pathname, len))
len = -EFAULT;
out:
- free_page((unsigned long)tmp);
+ kfree(tmp);
return len;
}
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 02/41] proc/vmcore: fix possible deadlock on concurrent mmap and read
2022-03-23 23:04 incoming Andrew Morton
2022-03-23 23:05 ` [patch 01/41] proc: alloc PATH_MAX bytes for /proc/${pid}/fd/ symlinks Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 03/41] proc/vmcore: fix vmcore_alloc_buf() kernel-doc comment Andrew Morton
` (38 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: vgoyal, stable, peterz, paulmck, josh, dyoung, boqun.feng, bhe,
david, akpm, patches, linux-mm, mm-commits, torvalds, akpm
From: David Hildenbrand <david@redhat.com>
Subject: proc/vmcore: fix possible deadlock on concurrent mmap and read
Lockdep noticed that there is chance for a deadlock if we have concurrent
mmap, concurrent read, and the addition/removal of a callback.
As nicely explained by Boqun:
"
Lockdep warned about the above sequences because rw_semaphore is a fair
read-write lock, and the following can cause a deadlock:
TASK 1 TASK 2 TASK 3
====== ====== ======
down_write(mmap_lock);
down_read(vmcore_cb_rwsem)
down_write(vmcore_cb_rwsem); // blocked
down_read(vmcore_cb_rwsem); // cannot get the lock because of the fairness
down_read(mmap_lock); // blocked
IOW, a reader can block another read if there is a writer queued by the
second reader and the lock is fair.
"
To fix, convert to srcu to make this deadlock impossible. We need srcu as
our callbacks can sleep. With this change, I cannot trigger any lockdep
warnings.
[ 6.386519] ======================================================
[ 6.387203] WARNING: possible circular locking dependency detected
[ 6.387965] 5.17.0-0.rc0.20220117git0c947b893d69.68.test.fc36.x86_64 #1 Not tainted
[ 6.388899] ------------------------------------------------------
[ 6.389657] makedumpfile/542 is trying to acquire lock:
[ 6.390308] ffffffff832d2eb8 (vmcore_cb_rwsem){.+.+}-{3:3}, at: mmap_vmcore+0x340/0x580
[ 6.391290]
[ 6.391290] but task is already holding lock:
[ 6.391978] ffff8880af226438 (&mm->mmap_lock#2){++++}-{3:3}, at: vm_mmap_pgoff+0x84/0x150
[ 6.392898]
[ 6.392898] which lock already depends on the new lock.
[ 6.392898]
[ 6.393866]
[ 6.393866] the existing dependency chain (in reverse order) is:
[ 6.394762]
[ 6.394762] -> #1 (&mm->mmap_lock#2){++++}-{3:3}:
[ 6.395530] lock_acquire+0xc3/0x1a0
[ 6.396047] __might_fault+0x4e/0x70
[ 6.396562] _copy_to_user+0x1f/0x90
[ 6.397093] __copy_oldmem_page+0x72/0xc0
[ 6.397663] read_from_oldmem+0x77/0x1e0
[ 6.398229] read_vmcore+0x2c2/0x310
[ 6.398742] proc_reg_read+0x47/0xa0
[ 6.399265] vfs_read+0x101/0x340
[ 6.399751] __x64_sys_pread64+0x5d/0xa0
[ 6.400314] do_syscall_64+0x43/0x90
[ 6.400778] entry_SYSCALL_64_after_hwframe+0x44/0xae
[ 6.401390]
[ 6.401390] -> #0 (vmcore_cb_rwsem){.+.+}-{3:3}:
[ 6.402063] validate_chain+0x9f4/0x2670
[ 6.402560] __lock_acquire+0x8f7/0xbc0
[ 6.403054] lock_acquire+0xc3/0x1a0
[ 6.403509] down_read+0x4a/0x140
[ 6.403948] mmap_vmcore+0x340/0x580
[ 6.404403] proc_reg_mmap+0x3e/0x90
[ 6.404866] mmap_region+0x504/0x880
[ 6.405322] do_mmap+0x38a/0x520
[ 6.405744] vm_mmap_pgoff+0xc1/0x150
[ 6.406258] ksys_mmap_pgoff+0x178/0x200
[ 6.406823] do_syscall_64+0x43/0x90
[ 6.407339] entry_SYSCALL_64_after_hwframe+0x44/0xae
[ 6.407975]
[ 6.407975] other info that might help us debug this:
[ 6.407975]
[ 6.408945] Possible unsafe locking scenario:
[ 6.408945]
[ 6.409684] CPU0 CPU1
[ 6.410196] ---- ----
[ 6.410703] lock(&mm->mmap_lock#2);
[ 6.411121] lock(vmcore_cb_rwsem);
[ 6.411792] lock(&mm->mmap_lock#2);
[ 6.412465] lock(vmcore_cb_rwsem);
[ 6.412873]
[ 6.412873] *** DEADLOCK ***
[ 6.412873]
[ 6.413522] 1 lock held by makedumpfile/542:
[ 6.414006] #0: ffff8880af226438 (&mm->mmap_lock#2){++++}-{3:3}, at: vm_mmap_pgoff+0x84/0x150
[ 6.414944]
[ 6.414944] stack backtrace:
[ 6.415432] CPU: 0 PID: 542 Comm: makedumpfile Not tainted 5.17.0-0.rc0.20220117git0c947b893d69.68.test.fc36.x86_64 #1
[ 6.416581] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
[ 6.417272] Call Trace:
[ 6.417593] <TASK>
[ 6.417882] dump_stack_lvl+0x5d/0x78
[ 6.418346] print_circular_bug+0x5d7/0x5f0
[ 6.418821] ? stack_trace_save+0x3a/0x50
[ 6.419273] ? save_trace+0x3d/0x330
[ 6.419681] check_noncircular+0xd1/0xe0
[ 6.420217] validate_chain+0x9f4/0x2670
[ 6.420715] ? __lock_acquire+0x8f7/0xbc0
[ 6.421234] ? __lock_acquire+0x8f7/0xbc0
[ 6.421685] __lock_acquire+0x8f7/0xbc0
[ 6.422127] lock_acquire+0xc3/0x1a0
[ 6.422535] ? mmap_vmcore+0x340/0x580
[ 6.422965] ? lock_is_held_type+0xe2/0x140
[ 6.423432] ? mmap_vmcore+0x340/0x580
[ 6.423893] down_read+0x4a/0x140
[ 6.424321] ? mmap_vmcore+0x340/0x580
[ 6.424800] mmap_vmcore+0x340/0x580
[ 6.425237] ? vm_area_alloc+0x1c/0x60
[ 6.425661] ? trace_kmem_cache_alloc+0x30/0xe0
[ 6.426174] ? kmem_cache_alloc+0x1e0/0x2f0
[ 6.426641] proc_reg_mmap+0x3e/0x90
[ 6.427052] mmap_region+0x504/0x880
[ 6.427462] do_mmap+0x38a/0x520
[ 6.427842] vm_mmap_pgoff+0xc1/0x150
[ 6.428260] ksys_mmap_pgoff+0x178/0x200
[ 6.428701] do_syscall_64+0x43/0x90
[ 6.429126] entry_SYSCALL_64_after_hwframe+0x44/0xae
[ 6.429745] RIP: 0033:0x7fc7359b8fc7
[ 6.430157] Code: 00 00 00 89 ef e8 69 b3 ff ff eb e4 e8 c2 64 01 00 66 90 f3 0f 1e fa 41 89 ca 41 f7 c1 ff 0f 00 00 75 10 b8 09 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 21 c3 48 8b 05 21 7e 0e 00 64 c7 00 16 00 00
[ 6.432147] RSP: 002b:00007fff35b4c208 EFLAGS: 00000246 ORIG_RAX: 0000000000000009
[ 6.432970] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007fc7359b8fc7
[ 6.433746] RDX: 0000000000000001 RSI: 0000000000400000 RDI: 0000000000000000
[ 6.434529] RBP: 000055a1125ecf10 R08: 0000000000000003 R09: 0000000000002000
[ 6.435310] R10: 0000000000000002 R11: 0000000000000246 R12: 0000000000002000
[ 6.436093] R13: 0000000000400000 R14: 000055a1124269e2 R15: 0000000000000000
[ 6.436887] </TASK>
Link: https://lkml.kernel.org/r/20220119193417.100385-1-david@redhat.com
Fixes: cc5f2704c934 ("proc/vmcore: convert oldmem_pfn_is_ram callback to more generic vmcore callbacks")
Signed-off-by: David Hildenbrand <david@redhat.com>
Reported-by: Baoquan He <bhe@redhat.com>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: "Paul E. McKenney" <paulmck@kernel.org>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/proc/vmcore.c | 41 ++++++++++++++++++++++-------------------
1 file changed, 22 insertions(+), 19 deletions(-)
--- a/fs/proc/vmcore.c~proc-vmcore-fix-possible-deadlock-on-concurrent-mmap-and-read
+++ a/fs/proc/vmcore.c
@@ -62,7 +62,8 @@ core_param(novmcoredd, vmcoredd_disabled
/* Device Dump Size */
static size_t vmcoredd_orig_sz;
-static DECLARE_RWSEM(vmcore_cb_rwsem);
+static DEFINE_SPINLOCK(vmcore_cb_lock);
+DEFINE_STATIC_SRCU(vmcore_cb_srcu);
/* List of registered vmcore callbacks. */
static LIST_HEAD(vmcore_cb_list);
/* Whether the vmcore has been opened once. */
@@ -70,8 +71,8 @@ static bool vmcore_opened;
void register_vmcore_cb(struct vmcore_cb *cb)
{
- down_write(&vmcore_cb_rwsem);
INIT_LIST_HEAD(&cb->next);
+ spin_lock(&vmcore_cb_lock);
list_add_tail(&cb->next, &vmcore_cb_list);
/*
* Registering a vmcore callback after the vmcore was opened is
@@ -79,14 +80,14 @@ void register_vmcore_cb(struct vmcore_cb
*/
if (vmcore_opened)
pr_warn_once("Unexpected vmcore callback registration\n");
- up_write(&vmcore_cb_rwsem);
+ spin_unlock(&vmcore_cb_lock);
}
EXPORT_SYMBOL_GPL(register_vmcore_cb);
void unregister_vmcore_cb(struct vmcore_cb *cb)
{
- down_write(&vmcore_cb_rwsem);
- list_del(&cb->next);
+ spin_lock(&vmcore_cb_lock);
+ list_del_rcu(&cb->next);
/*
* Unregistering a vmcore callback after the vmcore was opened is
* very unusual (e.g., forced driver removal), but we cannot stop
@@ -94,7 +95,9 @@ void unregister_vmcore_cb(struct vmcore_
*/
if (vmcore_opened)
pr_warn_once("Unexpected vmcore callback unregistration\n");
- up_write(&vmcore_cb_rwsem);
+ spin_unlock(&vmcore_cb_lock);
+
+ synchronize_srcu(&vmcore_cb_srcu);
}
EXPORT_SYMBOL_GPL(unregister_vmcore_cb);
@@ -103,9 +106,8 @@ static bool pfn_is_ram(unsigned long pfn
struct vmcore_cb *cb;
bool ret = true;
- lockdep_assert_held_read(&vmcore_cb_rwsem);
-
- list_for_each_entry(cb, &vmcore_cb_list, next) {
+ list_for_each_entry_srcu(cb, &vmcore_cb_list, next,
+ srcu_read_lock_held(&vmcore_cb_srcu)) {
if (unlikely(!cb->pfn_is_ram))
continue;
ret = cb->pfn_is_ram(cb, pfn);
@@ -118,9 +120,9 @@ static bool pfn_is_ram(unsigned long pfn
static int open_vmcore(struct inode *inode, struct file *file)
{
- down_read(&vmcore_cb_rwsem);
+ spin_lock(&vmcore_cb_lock);
vmcore_opened = true;
- up_read(&vmcore_cb_rwsem);
+ spin_unlock(&vmcore_cb_lock);
return 0;
}
@@ -133,6 +135,7 @@ ssize_t read_from_oldmem(char *buf, size
unsigned long pfn, offset;
size_t nr_bytes;
ssize_t read = 0, tmp;
+ int idx;
if (!count)
return 0;
@@ -140,7 +143,7 @@ ssize_t read_from_oldmem(char *buf, size
offset = (unsigned long)(*ppos % PAGE_SIZE);
pfn = (unsigned long)(*ppos / PAGE_SIZE);
- down_read(&vmcore_cb_rwsem);
+ idx = srcu_read_lock(&vmcore_cb_srcu);
do {
if (count > (PAGE_SIZE - offset))
nr_bytes = PAGE_SIZE - offset;
@@ -165,7 +168,7 @@ ssize_t read_from_oldmem(char *buf, size
offset, userbuf);
}
if (tmp < 0) {
- up_read(&vmcore_cb_rwsem);
+ srcu_read_unlock(&vmcore_cb_srcu, idx);
return tmp;
}
@@ -176,8 +179,8 @@ ssize_t read_from_oldmem(char *buf, size
++pfn;
offset = 0;
} while (count);
+ srcu_read_unlock(&vmcore_cb_srcu, idx);
- up_read(&vmcore_cb_rwsem);
return read;
}
@@ -568,18 +571,18 @@ static int vmcore_remap_oldmem_pfn(struc
unsigned long from, unsigned long pfn,
unsigned long size, pgprot_t prot)
{
- int ret;
+ int ret, idx;
/*
- * Check if oldmem_pfn_is_ram was registered to avoid
- * looping over all pages without a reason.
+ * Check if a callback was registered to avoid looping over all
+ * pages without a reason.
*/
- down_read(&vmcore_cb_rwsem);
+ idx = srcu_read_lock(&vmcore_cb_srcu);
if (!list_empty(&vmcore_cb_list))
ret = remap_oldmem_pfn_checked(vma, from, pfn, size, prot);
else
ret = remap_oldmem_pfn_range(vma, from, pfn, size, prot);
- up_read(&vmcore_cb_rwsem);
+ srcu_read_unlock(&vmcore_cb_srcu, idx);
return ret;
}
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 03/41] proc/vmcore: fix vmcore_alloc_buf() kernel-doc comment
2022-03-23 23:04 incoming Andrew Morton
2022-03-23 23:05 ` [patch 01/41] proc: alloc PATH_MAX bytes for /proc/${pid}/fd/ symlinks Andrew Morton
2022-03-23 23:05 ` [patch 02/41] proc/vmcore: fix possible deadlock on concurrent mmap and read Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 04/41] linux/types.h: remove unnecessary __bitwise__ Andrew Morton
` (37 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: bhe, abaci, yang.lee, akpm, patches, linux-mm, mm-commits,
torvalds, akpm
From: Yang Li <yang.lee@linux.alibaba.com>
Subject: proc/vmcore: fix vmcore_alloc_buf() kernel-doc comment
Fix a spelling problem to remove warnings found by running
scripts/kernel-doc, which is caused by using 'make W=1'.
fs/proc/vmcore.c:492: warning: Function parameter or member 'size' not
described in 'vmcore_alloc_buf'
fs/proc/vmcore.c:492: warning: Excess function parameter 'sizez'
description in 'vmcore_alloc_buf'
Link: https://lkml.kernel.org/r/20220129011449.105278-1-yang.lee@linux.alibaba.com
Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Acked-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/proc/vmcore.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/fs/proc/vmcore.c~proc-vmcore-fix-vmcore_alloc_buf-kernel-doc-comment
+++ a/fs/proc/vmcore.c
@@ -480,7 +480,7 @@ static const struct vm_operations_struct
/**
* vmcore_alloc_buf - allocate buffer in vmalloc memory
- * @sizez: size of buffer
+ * @size: size of buffer
*
* If CONFIG_MMU is defined, use vmalloc_user() to allow users to mmap
* the buffer to user-space by means of remap_vmalloc_range().
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 04/41] linux/types.h: remove unnecessary __bitwise__
2022-03-23 23:04 incoming Andrew Morton
` (2 preceding siblings ...)
2022-03-23 23:05 ` [patch 03/41] proc/vmcore: fix vmcore_alloc_buf() kernel-doc comment Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 05/41] Documentation/sparse: add hints about __CHECKER__ Andrew Morton
` (36 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: ndesaulniers, nathan, mst, corbet, bhelgaas, akpm, patches,
linux-mm, mm-commits, torvalds, akpm
From: Bjorn Helgaas <bhelgaas@google.com>
Subject: linux/types.h: remove unnecessary __bitwise__
There are no users of "__bitwise__" except the definition of "__bitwise".
Remove __bitwise__ and define __bitwise directly.
This is a follow-up to 05de97003c77 ("linux/types.h: enable endian checks
for all sparse builds").
[akpm@linux-foundation.org: change the tools/include/linux/types.h definition also]
Link: https://lkml.kernel.org/r/20220310220927.245704-2-helgaas@kernel.org
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/uapi/linux/types.h | 5 ++---
tools/include/linux/types.h | 5 ++---
2 files changed, 4 insertions(+), 6 deletions(-)
--- a/include/uapi/linux/types.h~linux-typesh-remove-unnecessary-__bitwise__
+++ a/include/uapi/linux/types.h
@@ -20,11 +20,10 @@
*/
#ifdef __CHECKER__
-#define __bitwise__ __attribute__((bitwise))
+#define __bitwise __attribute__((bitwise))
#else
-#define __bitwise__
+#define __bitwise
#endif
-#define __bitwise __bitwise__
typedef __u16 __bitwise __le16;
typedef __u16 __bitwise __be16;
--- a/tools/include/linux/types.h~linux-typesh-remove-unnecessary-__bitwise__
+++ a/tools/include/linux/types.h
@@ -43,11 +43,10 @@ typedef __u8 u8;
typedef __s8 s8;
#ifdef __CHECKER__
-#define __bitwise__ __attribute__((bitwise))
+#define __bitwise __attribute__((bitwise))
#else
-#define __bitwise__
+#define __bitwise
#endif
-#define __bitwise __bitwise__
#define __force
#define __user
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 05/41] Documentation/sparse: add hints about __CHECKER__
2022-03-23 23:04 incoming Andrew Morton
` (3 preceding siblings ...)
2022-03-23 23:05 ` [patch 04/41] linux/types.h: remove unnecessary __bitwise__ Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 06/41] kernel/ksysfs.c: use helper macro __ATTR_RW Andrew Morton
` (35 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: ndesaulniers, nathan, mst, corbet, bhelgaas, akpm, patches,
linux-mm, mm-commits, torvalds, akpm
From: Bjorn Helgaas <bhelgaas@google.com>
Subject: Documentation/sparse: add hints about __CHECKER__
Several attributes depend on __CHECKER__, but previously there was no clue
in the tree about when __CHECKER__ might be defined. Add hints at the
most common places (__kernel, __user, __iomem, __bitwise) and in the
sparse documentation.
Link: https://lkml.kernel.org/r/20220310220927.245704-3-helgaas@kernel.org
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: "Michael S . Tsirkin" <mst@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/dev-tools/sparse.rst | 2 ++
include/linux/compiler_types.h | 1 +
include/uapi/linux/types.h | 1 +
3 files changed, 4 insertions(+)
--- a/Documentation/dev-tools/sparse.rst~documentation-sparse-add-hints-about-__checker__
+++ a/Documentation/dev-tools/sparse.rst
@@ -100,3 +100,5 @@ have already built it.
The optional make variable CF can be used to pass arguments to sparse. The
build system passes -Wbitwise to sparse automatically.
+
+Note that sparse defines the __CHECKER__ preprocessor symbol.
--- a/include/linux/compiler_types.h~documentation-sparse-add-hints-about-__checker__
+++ a/include/linux/compiler_types.h
@@ -4,6 +4,7 @@
#ifndef __ASSEMBLY__
+/* sparse defines __CHECKER__; see Documentation/dev-tools/sparse.rst */
#ifdef __CHECKER__
/* address spaces */
# define __kernel __attribute__((address_space(0)))
--- a/include/uapi/linux/types.h~documentation-sparse-add-hints-about-__checker__
+++ a/include/uapi/linux/types.h
@@ -19,6 +19,7 @@
* any application/library that wants linux/types.h.
*/
+/* sparse defines __CHECKER__; see Documentation/dev-tools/sparse.rst */
#ifdef __CHECKER__
#define __bitwise __attribute__((bitwise))
#else
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 06/41] kernel/ksysfs.c: use helper macro __ATTR_RW
2022-03-23 23:04 incoming Andrew Morton
` (4 preceding siblings ...)
2022-03-23 23:05 ` [patch 05/41] Documentation/sparse: add hints about __CHECKER__ Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 07/41] Kconfig.debug: make DEBUG_INFO selectable from a choice Andrew Morton
` (34 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: gregkh, linmiaohe, akpm, patches, linux-mm, mm-commits, torvalds,
akpm
From: Miaohe Lin <linmiaohe@huawei.com>
Subject: kernel/ksysfs.c: use helper macro __ATTR_RW
Use helper macro __ATTR_RW to define kobj_attribute to make code more
clear. Minor readability improvement.
Link: https://lkml.kernel.org/r/20220222112034.48298-1-linmiaohe@huawei.com
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
kernel/ksysfs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/kernel/ksysfs.c~kernel-ksysfsc-use-helper-macro-__attr_rw
+++ a/kernel/ksysfs.c
@@ -24,8 +24,7 @@
static struct kobj_attribute _name##_attr = __ATTR_RO(_name)
#define KERNEL_ATTR_RW(_name) \
-static struct kobj_attribute _name##_attr = \
- __ATTR(_name, 0644, _name##_show, _name##_store)
+static struct kobj_attribute _name##_attr = __ATTR_RW(_name)
/* current uevent sequence number */
static ssize_t uevent_seqnum_show(struct kobject *kobj,
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 07/41] Kconfig.debug: make DEBUG_INFO selectable from a choice
2022-03-23 23:04 incoming Andrew Morton
` (5 preceding siblings ...)
2022-03-23 23:05 ` [patch 06/41] kernel/ksysfs.c: use helper macro __ATTR_RW Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 08/41] include: drop pointless __compiler_offsetof indirection Andrew Morton
` (33 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: penguin-kernel, ndesaulniers, nathan, masahiroy, arnd, keescook,
akpm, patches, linux-mm, mm-commits, torvalds, akpm
From: Kees Cook <keescook@chromium.org>
Subject: Kconfig.debug: make DEBUG_INFO selectable from a choice
Currently it's not possible to enable DEBUG_INFO for an all*config build,
since it is marked as "depends on !COMPILE_TEST". This generally makes
sense because a debug build of an all*config target ends up taking much
longer and the output is much larger. Having this be "default off" makes
sense. However, there are cases where enabling DEBUG_INFO for such builds
is useful for doing treewide A/B comparisons of build options, etc.
Make DEBUG_INFO selectable from any of the DWARF version choice options,
with DEBUG_INFO_NONE being the default for COMPILE_TEST. The mutually
exclusive relationship between DWARF5 and BTF must be inverted, but the
result remains the same. Additionally moves DEBUG_KERNEL and DEBUG_MISC
up to the top of the menu because they were enabling features _above_ it,
making it weird to navigate menuconfig.
[keescook@chromium.org: make DEBUG_INFO always default=n]
Link: https://lkml.kernel.org/r/20220128214131.580131-1-keescook@chromium.org
Link: https://lore.kernel.org/lkml/YfRY6+CaQxX7O8vF@dev-arch.archlinux-ax161
Link: https://lkml.kernel.org/r/20220125075126.891825-1-keescook@chromium.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
lib/Kconfig.debug | 139 +++++++++++++++++++++++---------------------
1 file changed, 74 insertions(+), 65 deletions(-)
--- a/lib/Kconfig.debug~kconfigdebug-make-debug_info-selectable-from-a-choice
+++ a/lib/Kconfig.debug
@@ -208,20 +208,87 @@ config DEBUG_BUGVERBOSE
endmenu # "printk and dmesg options"
+config DEBUG_KERNEL
+ bool "Kernel debugging"
+ help
+ Say Y here if you are developing drivers or trying to debug and
+ identify kernel problems.
+
+config DEBUG_MISC
+ bool "Miscellaneous debug code"
+ default DEBUG_KERNEL
+ depends on DEBUG_KERNEL
+ help
+ Say Y here if you need to enable miscellaneous debug code that should
+ be under a more specific debug option but isn't.
+
menu "Compile-time checks and compiler options"
config DEBUG_INFO
- bool "Compile the kernel with debug info"
- depends on DEBUG_KERNEL && !COMPILE_TEST
+ bool
help
- If you say Y here the resulting kernel image will include
- debugging info resulting in a larger kernel image.
+ A kernel debug info option other than "None" has been selected
+ in the "Debug information" choice below, indicating that debug
+ information will be generated for build targets.
+
+choice
+ prompt "Debug information"
+ depends on DEBUG_KERNEL
+ help
+ Selecting something other than "None" results in a kernel image
+ that will include debugging info resulting in a larger kernel image.
This adds debug symbols to the kernel and modules (gcc -g), and
is needed if you intend to use kernel crashdump or binary object
tools like crash, kgdb, LKCD, gdb, etc on the kernel.
- Say Y here only if you plan to debug the kernel.
- If unsure, say N.
+ Choose which version of DWARF debug info to emit. If unsure,
+ select "Toolchain default".
+
+config DEBUG_INFO_NONE
+ bool "Disable debug information"
+ help
+ Do not build the kernel with debugging information, which will
+ result in a faster and smaller build.
+
+config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
+ bool "Rely on the toolchain's implicit default DWARF version"
+ select DEBUG_INFO
+ help
+ The implicit default version of DWARF debug info produced by a
+ toolchain changes over time.
+
+ This can break consumers of the debug info that haven't upgraded to
+ support newer revisions, and prevent testing newer versions, but
+ those should be less common scenarios.
+
+config DEBUG_INFO_DWARF4
+ bool "Generate DWARF Version 4 debuginfo"
+ select DEBUG_INFO
+ help
+ Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+.
+
+ If you have consumers of DWARF debug info that are not ready for
+ newer revisions of DWARF, you may wish to choose this or have your
+ config select this.
+
+config DEBUG_INFO_DWARF5
+ bool "Generate DWARF Version 5 debuginfo"
+ select DEBUG_INFO
+ depends on !CC_IS_CLANG || (CC_IS_CLANG && (AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)))
+ help
+ Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc
+ 5.0+ accepts the -gdwarf-5 flag but only had partial support for some
+ draft features until 7.0), and gdb 8.0+.
+
+ Changes to the structure of debug info in Version 5 allow for around
+ 15-18% savings in resulting image and debug info section sizes as
+ compared to DWARF Version 4. DWARF Version 5 standardizes previous
+ extensions such as accelerators for symbol indexing and the format
+ for fission (.dwo/.dwp) files. Users may not want to select this
+ config if they rely on tooling that has not yet been updated to
+ support DWARF Version 5.
+
+endchoice # "Debug information"
if DEBUG_INFO
@@ -267,56 +334,12 @@ config DEBUG_INFO_SPLIT
to know about the .dwo files and include them.
Incompatible with older versions of ccache.
-choice
- prompt "DWARF version"
- help
- Which version of DWARF debug info to emit.
-
-config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
- bool "Rely on the toolchain's implicit default DWARF version"
- help
- The implicit default version of DWARF debug info produced by a
- toolchain changes over time.
-
- This can break consumers of the debug info that haven't upgraded to
- support newer revisions, and prevent testing newer versions, but
- those should be less common scenarios.
-
- If unsure, say Y.
-
-config DEBUG_INFO_DWARF4
- bool "Generate DWARF Version 4 debuginfo"
- help
- Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+.
-
- If you have consumers of DWARF debug info that are not ready for
- newer revisions of DWARF, you may wish to choose this or have your
- config select this.
-
-config DEBUG_INFO_DWARF5
- bool "Generate DWARF Version 5 debuginfo"
- depends on !CC_IS_CLANG || (CC_IS_CLANG && (AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)))
- depends on !DEBUG_INFO_BTF
- help
- Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc
- 5.0+ accepts the -gdwarf-5 flag but only had partial support for some
- draft features until 7.0), and gdb 8.0+.
-
- Changes to the structure of debug info in Version 5 allow for around
- 15-18% savings in resulting image and debug info section sizes as
- compared to DWARF Version 4. DWARF Version 5 standardizes previous
- extensions such as accelerators for symbol indexing and the format
- for fission (.dwo/.dwp) files. Users may not want to select this
- config if they rely on tooling that has not yet been updated to
- support DWARF Version 5.
-
-endchoice # "DWARF version"
-
config DEBUG_INFO_BTF
bool "Generate BTF typeinfo"
depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
depends on BPF_SYSCALL
+ depends on !DEBUG_INFO_DWARF5
help
Generate deduplicated BTF type information from DWARF debug info.
Turning this on expects presence of pahole tool, which will convert
@@ -585,20 +608,6 @@ source "lib/Kconfig.kcsan"
endmenu
-config DEBUG_KERNEL
- bool "Kernel debugging"
- help
- Say Y here if you are developing drivers or trying to debug and
- identify kernel problems.
-
-config DEBUG_MISC
- bool "Miscellaneous debug code"
- default DEBUG_KERNEL
- depends on DEBUG_KERNEL
- help
- Say Y here if you need to enable miscellaneous debug code that should
- be under a more specific debug option but isn't.
-
menu "Networking Debugging"
source "net/Kconfig.debug"
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 08/41] include: drop pointless __compiler_offsetof indirection
2022-03-23 23:04 incoming Andrew Morton
` (6 preceding siblings ...)
2022-03-23 23:05 ` [patch 07/41] Kconfig.debug: make DEBUG_INFO selectable from a choice Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 09/41] ilog2: force inlining of __ilog2_u32() and __ilog2_u64() Andrew Morton
` (32 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: ojeda, ndesaulniers, nathan, keescook, linux, akpm, patches,
linux-mm, mm-commits, torvalds, akpm
From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Subject: include: drop pointless __compiler_offsetof indirection
(1) compiler_types.h is unconditionally included via an -include flag
(see scripts/Makefile.lib), and it defines __compiler_offsetof
unconditionally. So testing for definedness of __compiler_offsetof is
mostly pointless.
(2) Every relevant compiler provides __builtin_offsetof (even sparse
has had that for 14 years), and if for whatever reason one would end
up picking up the poor man's fallback definition (C file compiler with
completely custom CFLAGS?), newer clang versions won't treat the
result as an Integer Constant Expression, so if used in place where
such is required (static initializer or static_assert), one would get
errors like
t.c:11:16: error: static_assert expression is not an integral constant expression
t.c:11:16: note: cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression
t.c:4:33: note: expanded from macro 'offsetof'
#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER)
So just define offsetof unconditionally and directly in terms of
__builtin_offsetof.
Link: https://lkml.kernel.org/r/20220202102147.326672-1-linux@rasmusvillemoes.dk
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/compiler_types.h | 2 --
include/linux/stddef.h | 6 +-----
2 files changed, 1 insertion(+), 7 deletions(-)
--- a/include/linux/compiler_types.h~include-drop-pointless-__compiler_offsetof-indirection
+++ a/include/linux/compiler_types.h
@@ -138,8 +138,6 @@ struct ftrace_likely_data {
*/
#define __naked __attribute__((__naked__)) notrace
-#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
-
/*
* Prefer gnu_inline, so that extern inline functions do not emit an
* externally visible function. This makes extern inline behave as per gnu89
--- a/include/linux/stddef.h~include-drop-pointless-__compiler_offsetof-indirection
+++ a/include/linux/stddef.h
@@ -13,11 +13,7 @@ enum {
};
#undef offsetof
-#ifdef __compiler_offsetof
-#define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER)
-#else
-#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER)
-#endif
+#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
/**
* sizeof_field() - Report the size of a struct field in bytes
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 09/41] ilog2: force inlining of __ilog2_u32() and __ilog2_u64()
2022-03-23 23:04 incoming Andrew Morton
` (7 preceding siblings ...)
2022-03-23 23:05 ` [patch 08/41] include: drop pointless __compiler_offsetof indirection Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 10/41] bitfield: add explicit inclusions to the example Andrew Morton
` (31 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: christophe.leroy, akpm, patches, linux-mm, mm-commits, torvalds,
akpm
From: Christophe Leroy <christophe.leroy@csgroup.eu>
Subject: ilog2: force inlining of __ilog2_u32() and __ilog2_u64()
Building a kernel with CONFIG_CC_OPTIMISE_FOR_SIZE leads to __ilog2_u32()
being duplicated 50 times and __ilog2_u64() 3 times in vmlinux on a tiny
powerpc32 config.
__ilog2_u32() being 2 instructions it is not worth being kept out of line,
so force inlining. Allthough the u64 version is a bit bigger, there is
still a small benefit in keeping it inlined. On a 64 bits config there's
a real benefit.
With this change the size of vmlinux text is reduced by 1 kbytes, which is
approx 50% more than the size of the removed functions.
Before the patch there is for instance:
c00d2a94 <__ilog2_u32>:
c00d2a94: 7c 63 00 34 cntlzw r3,r3
c00d2a98: 20 63 00 1f subfic r3,r3,31
c00d2a9c: 4e 80 00 20 blr
c00d36d8 <__order_base_2>:
c00d36d8: 28 03 00 01 cmplwi r3,1
c00d36dc: 40 81 00 2c ble c00d3708 <__order_base_2+0x30>
c00d36e0: 94 21 ff f0 stwu r1,-16(r1)
c00d36e4: 7c 08 02 a6 mflr r0
c00d36e8: 38 63 ff ff addi r3,r3,-1
c00d36ec: 90 01 00 14 stw r0,20(r1)
c00d36f0: 4b ff f3 a5 bl c00d2a94 <__ilog2_u32>
c00d36f4: 80 01 00 14 lwz r0,20(r1)
c00d36f8: 38 63 00 01 addi r3,r3,1
c00d36fc: 7c 08 03 a6 mtlr r0
c00d3700: 38 21 00 10 addi r1,r1,16
c00d3704: 4e 80 00 20 blr
c00d3708: 38 60 00 00 li r3,0
c00d370c: 4e 80 00 20 blr
With the patch it has become:
c00d356c <__order_base_2>:
c00d356c: 28 03 00 01 cmplwi r3,1
c00d3570: 40 81 00 14 ble c00d3584 <__order_base_2+0x18>
c00d3574: 38 63 ff ff addi r3,r3,-1
c00d3578: 7c 63 00 34 cntlzw r3,r3
c00d357c: 20 63 00 20 subfic r3,r3,32
c00d3580: 4e 80 00 20 blr
c00d3584: 38 60 00 00 li r3,0
c00d3588: 4e 80 00 20 blr
No more need for __order_base_2() to setup a stack frame and
save/restore caller address. And the following 'add 1' is
merged in the subtract.
Another typical use of it:
c080ff28 <hugepagesz_setup>:
...
c080fff8: 7f c3 f3 78 mr r3,r30
c080fffc: 4b 8f 81 f1 bl c01081ec <__ilog2_u32>
c0810000: 38 63 ff f2 addi r3,r3,-14
...
Becomes
c080ff1c <hugepagesz_setup>:
...
c080ffec: 7f c3 00 34 cntlzw r3,r30
c080fff0: 20 63 00 11 subfic r3,r3,17
...
Here no need to move r30 argument to r3 then substract 14 to result. Just
work on r30 and merge the 'sub 14' with the 'sub from 31'.
Link: https://lkml.kernel.org/r/803a2ac3d923ebcfd0dd40f5886b05cae7bb0aba.1644243860.git.christophe.leroy@csgroup.eu
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/log2.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/include/linux/log2.h~ilog2-force-inlining-of-__ilog2_u32-and-__ilog2_u64
+++ a/include/linux/log2.h
@@ -18,7 +18,7 @@
* - the arch is not required to handle n==0 if implementing the fallback
*/
#ifndef CONFIG_ARCH_HAS_ILOG2_U32
-static inline __attribute__((const))
+static __always_inline __attribute__((const))
int __ilog2_u32(u32 n)
{
return fls(n) - 1;
@@ -26,7 +26,7 @@ int __ilog2_u32(u32 n)
#endif
#ifndef CONFIG_ARCH_HAS_ILOG2_U64
-static inline __attribute__((const))
+static __always_inline __attribute__((const))
int __ilog2_u64(u64 n)
{
return fls64(n) - 1;
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 10/41] bitfield: add explicit inclusions to the example
2022-03-23 23:04 incoming Andrew Morton
` (8 preceding siblings ...)
2022-03-23 23:05 ` [patch 09/41] ilog2: force inlining of __ilog2_u32() and __ilog2_u64() Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 11/41] lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option Andrew Morton
` (30 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: peterz, jsd, andriy.shevchenko, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1306 bytes --]
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: bitfield: add explicit inclusions to the example
It's not obvious that bitfield.h doesn't guarantee the bits.h inclusion
and the example in the former is confusing. Some developers think that
it's okay to just include bitfield.h to get it working. Change example to
explicitly include necessary headers in order to avoid confusion.
Link: https://lkml.kernel.org/r/20220207123341.47533-1-andriy.shevchenko@linux.intel.com
Fixes: 3e9b3112ec74 ("add basic register-field manipulation macros")
Depends-on: 8bd9cb51daac ("locking/atomics, asm-generic: Move some macros from <linux/bitops.h> to a new <linux/bits.h> file")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reported-by: Jan Dąbroś <jsd@semihalf.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/bitfield.h | 3 +++
1 file changed, 3 insertions(+)
--- a/include/linux/bitfield.h~bitfield-add-explicit-inclusions-to-the-example
+++ a/include/linux/bitfield.h
@@ -19,6 +19,9 @@
*
* Example:
*
+ * #include <linux/bitfield.h>
+ * #include <linux/bits.h>
+ *
* #define REG_FIELD_A GENMASK(6, 0)
* #define REG_FIELD_B BIT(7)
* #define REG_FIELD_C GENMASK(15, 8)
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 11/41] lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option
2022-03-23 23:04 incoming Andrew Morton
` (9 preceding siblings ...)
2022-03-23 23:05 ` [patch 10/41] bitfield: add explicit inclusions to the example Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 12/41] lib: bitmap: fix many kernel-doc warnings Andrew Morton
` (29 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: lkp, guoren, feng.tang, akpm, patches, linux-mm, mm-commits,
torvalds, akpm
From: Feng Tang <feng.tang@intel.com>
Subject: lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option
0Day robots reported there is compiling issue for 'csky' ARCH
when CONFIG_DEBUG_FORCE_DATA_SECTION_ALIGNED is enabled [1]:
All errors (new ones prefixed by >>):
{standard input}: Assembler messages:
>> {standard input}:2277: Error: pcrel offset for branch to .LS000B too far (0x3c)
Which was discussed in [2]. And as there is no solution for csky yet, add
some dependency for this config to limit it to several ARCHs which have no
compiling issue so far.
[1]. https://lore.kernel.org/lkml/202202271612.W32UJAj2-lkp@intel.com/
[2]. https://www.spinics.net/lists/linux-kbuild/msg30298.html
Link: https://lkml.kernel.org/r/20220304021100.GN4548@shbuild999.sh.intel.com
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Feng Tang <feng.tang@intel.com>
Cc: Guo Ren <guoren@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
lib/Kconfig.debug | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/lib/Kconfig.debug~lib-kconfigdebug-add-arch-dependency-for-function_align-option
+++ a/lib/Kconfig.debug
@@ -439,7 +439,8 @@ config SECTION_MISMATCH_WARN_ONLY
If unsure, say Y.
config DEBUG_FORCE_FUNCTION_ALIGN_64B
- bool "Force all function address 64B aligned" if EXPERT
+ bool "Force all function address 64B aligned"
+ depends on EXPERT && (X86_64 || ARM64 || PPC32 || PPC64 || ARC)
help
There are cases that a commit from one domain changes the function
address alignment of other domains, and cause magic performance
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 12/41] lib: bitmap: fix many kernel-doc warnings
2022-03-23 23:04 incoming Andrew Morton
` (10 preceding siblings ...)
2022-03-23 23:05 ` [patch 11/41] lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 13/41] checkpatch: prefer MODULE_LICENSE("GPL") over MODULE_LICENSE("GPL v2") Andrew Morton
` (28 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: yury.norov, tiantao6, mike.travis, linux, gregkh,
andriy.shevchenko, rdunlap, akpm, patches, linux-mm, mm-commits,
torvalds, akpm
From: Randy Dunlap <rdunlap@infradead.org>
Subject: lib: bitmap: fix many kernel-doc warnings
Fix kernel-doc warings in lib/bitmap.c:
../lib/bitmap.c:498: warning: Function parameter or member 'buf' not described in 'bitmap_print_to_buf'
../lib/bitmap.c:498: warning: Function parameter or member 'maskp' not described in 'bitmap_print_to_buf'
../lib/bitmap.c:498: warning: Function parameter or member 'nmaskbits' not described in 'bitmap_print_to_buf'
../lib/bitmap.c:498: warning: Function parameter or member 'off' not described in 'bitmap_print_to_buf'
../lib/bitmap.c:498: warning: Function parameter or member 'count' not described in 'bitmap_print_to_buf'
../lib/bitmap.c:561: warning: contents before sections
../lib/bitmap.c:606: warning: Function parameter or member 'buf' not described in 'bitmap_print_list_to_buf'
../lib/bitmap.c:606: warning: Function parameter or member 'maskp' not described in 'bitmap_print_list_to_buf'
../lib/bitmap.c:606: warning: Function parameter or member 'nmaskbits' not described in 'bitmap_print_list_to_buf'
../lib/bitmap.c:606: warning: Function parameter or member 'off' not described in 'bitmap_print_list_to_buf'
../lib/bitmap.c:606: warning: Function parameter or member 'count' not described in 'bitmap_print_list_to_buf'
../lib/bitmap.c:819: warning: missing initial short description on line:
* bitmap_parselist_user()
This still leaves 15 warnings for function return values not described,
similar to this one:
bitmap.c:890: warning: No description found for return value of 'bitmap_parse'
Link: https://lkml.kernel.org/r/20220306065823.5153-1-rdunlap@infradead.org
Fixes: 1fae562983ca ("cpumask: introduce cpumap_print_list/bitmask_to_buf to support large bitmask and list")
Fixes: 4b060420a596 ("bitmap, irq: add smp_affinity_list interface to /proc/irq")
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Yury Norov <yury.norov@gmail.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Tian Tao <tiantao6@hisilicon.com>
Cc: Mike Travis <mike.travis@hpe.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
lib/bitmap.c | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
--- a/lib/bitmap.c~lib-bitmap-fix-many-kernel-doc-warnings
+++ a/lib/bitmap.c
@@ -492,6 +492,11 @@ EXPORT_SYMBOL(bitmap_print_to_pagebuf);
* @list: indicates whether the bitmap must be list
* true: print in decimal list format
* false: print in hexadecimal bitmask format
+ * @buf: buffer into which string is placed
+ * @maskp: pointer to bitmap to convert
+ * @nmaskbits: size of bitmap, in bits
+ * @off: in the string from which we are copying, We copy to @buf
+ * @count: the maximum number of bytes to print
*/
static int bitmap_print_to_buf(bool list, char *buf, const unsigned long *maskp,
int nmaskbits, loff_t off, size_t count)
@@ -512,6 +517,11 @@ static int bitmap_print_to_buf(bool list
/**
* bitmap_print_bitmask_to_buf - convert bitmap to hex bitmask format ASCII string
+ * @buf: buffer into which string is placed
+ * @maskp: pointer to bitmap to convert
+ * @nmaskbits: size of bitmap, in bits
+ * @off: in the string from which we are copying, We copy to @buf
+ * @count: the maximum number of bytes to print
*
* The bitmap_print_to_pagebuf() is used indirectly via its cpumap wrapper
* cpumap_print_to_pagebuf() or directly by drivers to export hexadecimal
@@ -553,12 +563,6 @@ static int bitmap_print_to_buf(bool list
* move to use bin_attribute. In result, we have to pass the corresponding
* parameters such as off, count from bin_attribute show entry to this API.
*
- * @buf: buffer into which string is placed
- * @maskp: pointer to bitmap to convert
- * @nmaskbits: size of bitmap, in bits
- * @off: in the string from which we are copying, We copy to @buf
- * @count: the maximum number of bytes to print
- *
* The role of cpumap_print_bitmask_to_buf() and cpumap_print_list_to_buf()
* is similar with cpumap_print_to_pagebuf(), the difference is that
* bitmap_print_to_pagebuf() mainly serves sysfs attribute with the assumption
@@ -597,6 +601,11 @@ EXPORT_SYMBOL(bitmap_print_bitmask_to_bu
/**
* bitmap_print_list_to_buf - convert bitmap to decimal list format ASCII string
+ * @buf: buffer into which string is placed
+ * @maskp: pointer to bitmap to convert
+ * @nmaskbits: size of bitmap, in bits
+ * @off: in the string from which we are copying, We copy to @buf
+ * @count: the maximum number of bytes to print
*
* Everything is same with the above bitmap_print_bitmask_to_buf() except
* the print format.
@@ -807,7 +816,8 @@ EXPORT_SYMBOL(bitmap_parselist);
/**
- * bitmap_parselist_user()
+ * bitmap_parselist_user() - convert user buffer's list format ASCII
+ * string to bitmap
*
* @ubuf: pointer to user buffer containing string.
* @ulen: buffer size in bytes. If string is smaller than this
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 13/41] checkpatch: prefer MODULE_LICENSE("GPL") over MODULE_LICENSE("GPL v2")
2022-03-23 23:04 incoming Andrew Morton
` (11 preceding siblings ...)
2022-03-23 23:05 ` [patch 12/41] lib: bitmap: fix many kernel-doc warnings Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:05 ` [patch 14/41] checkpatch: add --fix option for some TRAILING_STATEMENTS Andrew Morton
` (27 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: lukas.bulwahn, dwaipayanray1, joe, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
From: Joe Perches <joe@perches.com>
Subject: checkpatch: prefer MODULE_LICENSE("GPL") over MODULE_LICENSE("GPL v2")
There is no effective difference.
Given the large number of uses of "GPL v2", emit this message only for
patches as a trivial treeside sed could be done one day.
Ref: commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity")
Link: https://lkml.kernel.org/r/20220128185924.80137-1-joe@perches.com
Signed-off-by: Joe Perches <joe@perches.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
scripts/checkpatch.pl | 7 +++++++
1 file changed, 7 insertions(+)
--- a/scripts/checkpatch.pl~checkpatch-prefer-module_licensegpl-over-module_licensegpl-v2
+++ a/scripts/checkpatch.pl
@@ -7418,6 +7418,13 @@ sub process {
WARN("MODULE_LICENSE",
"unknown module license " . $extracted_string . "\n" . $herecurr);
}
+ if (!$file && $extracted_string eq '"GPL v2"') {
+ if (WARN("MODULE_LICENSE",
+ "Prefer \"GPL\" over \"GPL v2\" - see commit bf7fbeeae6db (\"module: Cure the MODULE_LICENSE \"GPL\" vs. \"GPL v2\" bogosity\")\n" . $herecurr) &&
+ $fix) {
+ $fixed[$fixlinenr] =~ s/\bMODULE_LICENSE\s*\(\s*"GPL v2"\s*\)/MODULE_LICENSE("GPL")/;
+ }
+ }
}
# check for sysctl duplicate constants
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 14/41] checkpatch: add --fix option for some TRAILING_STATEMENTS
2022-03-23 23:04 incoming Andrew Morton
` (12 preceding siblings ...)
2022-03-23 23:05 ` [patch 13/41] checkpatch: prefer MODULE_LICENSE("GPL") over MODULE_LICENSE("GPL v2") Andrew Morton
@ 2022-03-23 23:05 ` Andrew Morton
2022-03-23 23:06 ` [patch 15/41] checkpatch: add early_param exception to blank line after struct/function test Andrew Morton
` (26 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:05 UTC (permalink / raw)
To: lukas.bulwahn, dwaipayanray1, joe, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
From: Joe Perches <joe@perches.com>
Subject: checkpatch: add --fix option for some TRAILING_STATEMENTS
Single line code like:
if (foo) bar;
should generally be written:
if (foo)
bar;
Add a --fix test to do so.
This fix is not done when an ASSIGN_IN_IF in the same line exists.
Link: https://lkml.kernel.org/r/20220128185924.80137-2-joe@perches.com
Signed-off-by: Joe Perches <joe@perches.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
scripts/checkpatch.pl | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
--- a/scripts/checkpatch.pl~checkpatch-add-fix-option-for-some-trailing_statements
+++ a/scripts/checkpatch.pl
@@ -5551,6 +5551,7 @@ sub process {
defined($stat) && defined($cond) &&
$line =~ /\b(?:if|while|for)\s*\(/ && $line !~ /^.\s*#/) {
my ($s, $c) = ($stat, $cond);
+ my $fixed_assign_in_if = 0;
if ($c =~ /\bif\s*\(.*[^<>!=]=[^=].*/s) {
if (ERROR("ASSIGN_IN_IF",
@@ -5575,6 +5576,7 @@ sub process {
$newline .= ')';
$newline .= " {" if (defined($brace));
fix_insert_line($fixlinenr + 1, $newline);
+ $fixed_assign_in_if = 1;
}
}
}
@@ -5598,8 +5600,20 @@ sub process {
$stat_real = "[...]\n$stat_real";
}
- ERROR("TRAILING_STATEMENTS",
- "trailing statements should be on next line\n" . $herecurr . $stat_real);
+ if (ERROR("TRAILING_STATEMENTS",
+ "trailing statements should be on next line\n" . $herecurr . $stat_real) &&
+ !$fixed_assign_in_if &&
+ $cond_lines == 0 &&
+ $fix && $perl_version_ok &&
+ $fixed[$fixlinenr] =~ /^\+(\s*)((?:if|while|for)\s*$balanced_parens)\s*(.*)$/) {
+ my $indent = $1;
+ my $test = $2;
+ my $rest = rtrim($4);
+ if ($rest =~ /;$/) {
+ $fixed[$fixlinenr] = "\+$indent$test";
+ fix_insert_line($fixlinenr + 1, "$indent\t$rest");
+ }
+ }
}
}
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 15/41] checkpatch: add early_param exception to blank line after struct/function test
2022-03-23 23:04 incoming Andrew Morton
` (13 preceding siblings ...)
2022-03-23 23:05 ` [patch 14/41] checkpatch: add --fix option for some TRAILING_STATEMENTS Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 16/41] checkpatch: use python3 to find codespell dictionary Andrew Morton
` (25 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: lukas.bulwahn, dwaipayanray1, joe, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
From: Joe Perches <joe@perches.com>
Subject: checkpatch: add early_param exception to blank line after struct/function test
Add early_param as another exception to the blank line preferred after
function/struct/union declaration or definition test.
Link: https://lkml.kernel.org/r/3bd6ada59f411a7685d7e64eeb670540d4bfdcde.camel@perches.com
Signed-off-by: Joe Perches <joe@perches.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
scripts/checkpatch.pl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/scripts/checkpatch.pl~checkpatch-add-early_param-exception-to-blank-line-after-struct-function-test
+++ a/scripts/checkpatch.pl
@@ -3926,7 +3926,7 @@ sub process {
if ($prevline =~ /^[\+ ]};?\s*$/ &&
$line =~ /^\+/ &&
!($line =~ /^\+\s*$/ ||
- $line =~ /^\+\s*EXPORT_SYMBOL/ ||
+ $line =~ /^\+\s*(?:EXPORT_SYMBOL|early_param)/ ||
$line =~ /^\+\s*MODULE_/i ||
$line =~ /^\+\s*\#\s*(?:end|elif|else)/ ||
$line =~ /^\+[a-z_]*init/ ||
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 16/41] checkpatch: use python3 to find codespell dictionary
2022-03-23 23:04 incoming Andrew Morton
` (14 preceding siblings ...)
2022-03-23 23:06 ` [patch 15/41] checkpatch: add early_param exception to blank line after struct/function test Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 17/41] init: use ktime_us_delta() to make initcall_debug log more precise Andrew Morton
` (24 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: peter.ujfalusi, joe, sagarmp, akpm, patches, linux-mm, mm-commits,
torvalds, akpm
From: Sagar Patel <sagarmp@cs.unc.edu>
Subject: checkpatch: use python3 to find codespell dictionary
Commit 0ee3e7b8893e ("checkpatch: get default codespell dictionary path
from package location") introduced the ability to search for the codespell
dictionary rather than hardcoding its path.
codespell requires Python 3.6 or above, but on some systems, the python
executable is a Python 2.7 interpreter. In this case, searching for the
dictionary fails, subsequently making codespell fail:
No codespell typos will be found - file '/usr/share/codespell/dictionary.txt': No such file or directory
So, use python3 to remove ambiguity.
In addition, when searching for dictionary.txt, do not check if the
codespell executable exists since,
- checkpatch.pl only uses dictionary.txt, not the codespell
executable.
- codespell can be installed via a Python package manager, in which
case the codespell executable may not be present in a typical $PATH,
but a dictionary does exist.
Link: https://lkml.kernel.org/r/20220309180048.147672-1-sagarmp@cs.unc.edu
Signed-off-by: Sagar Patel <sagarmp@cs.unc.edu>
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Cc: Joe Perches <joe@perches.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
scripts/checkpatch.pl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/scripts/checkpatch.pl~checkpatch-use-python3-to-find-codespell-dictionary
+++ a/scripts/checkpatch.pl
@@ -334,7 +334,7 @@ if ($user_codespellfile) {
} elsif (!(-f $codespellfile)) {
# If /usr/share/codespell/dictionary.txt is not present, try to find it
# under codespell's install directory: <codespell_root>/data/dictionary.txt
- if (($codespell || $help) && which("codespell") ne "" && which("python") ne "") {
+ if (($codespell || $help) && which("python3") ne "") {
my $python_codespell_dict = << "EOF";
import os.path as op
@@ -344,7 +344,7 @@ codespell_file = op.join(codespell_dir,
print(codespell_file, end='')
EOF
- my $codespell_dict = `python -c "$python_codespell_dict" 2> /dev/null`;
+ my $codespell_dict = `python3 -c "$python_codespell_dict" 2> /dev/null`;
$codespellfile = $codespell_dict if (-f $codespell_dict);
}
}
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 17/41] init: use ktime_us_delta() to make initcall_debug log more precise
2022-03-23 23:04 incoming Andrew Morton
` (15 preceding siblings ...)
2022-03-23 23:06 ` [patch 16/41] checkpatch: use python3 to find codespell dictionary Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 18/41] init.h: improve __setup and early_param documentation Andrew Morton
` (23 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: yj.chiang, wangkefeng.wang, vbabka, valentin.schneider, rostedt,
peterz, mhiramat, matthias.bgg, linux, keescook, ahalaney,
mark-pk.tsai, akpm, patches, linux-mm, mm-commits, torvalds, akpm
From: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
Subject: init: use ktime_us_delta() to make initcall_debug log more precise
Use ktime_us_delta() to make the initcall_debug log more precise than
right shifting the result of ktime_to_ns() by 10 bits.
Link: https://lkml.kernel.org/r/20220209053350.15771-1-mark-pk.tsai@mediatek.com
Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
Tested-by: Andrew Halaney <ahalaney@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Kees Cook <keescook@chromium.org>
Cc: Valentin Schneider <valentin.schneider@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: YJ Chiang <yj.chiang@mediatek.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
init/main.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
--- a/init/main.c~init-use-ktime_us_delta-to-make-initcall_debug-log-more-precise
+++ a/init/main.c
@@ -1246,15 +1246,11 @@ trace_initcall_start_cb(void *data, init
static __init_or_module void
trace_initcall_finish_cb(void *data, initcall_t fn, int ret)
{
- ktime_t *calltime = (ktime_t *)data;
- ktime_t delta, rettime;
- unsigned long long duration;
+ ktime_t rettime, *calltime = (ktime_t *)data;
rettime = ktime_get();
- delta = ktime_sub(rettime, *calltime);
- duration = (unsigned long long) ktime_to_ns(delta) >> 10;
printk(KERN_DEBUG "initcall %pS returned %d after %lld usecs\n",
- fn, ret, duration);
+ fn, ret, (unsigned long long)ktime_us_delta(rettime, *calltime));
}
static ktime_t initcall_calltime;
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 18/41] init.h: improve __setup and early_param documentation
2022-03-23 23:04 incoming Andrew Morton
` (16 preceding siblings ...)
2022-03-23 23:06 ` [patch 17/41] init: use ktime_us_delta() to make initcall_debug log more precise Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 19/41] init/main.c: return 1 from handled __setup() functions Andrew Morton
` (22 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: mingo, i.zhbanov, gregkh, rdunlap, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
From: Randy Dunlap <rdunlap@infradead.org>
Subject: init.h: improve __setup and early_param documentation
Igor noted in [1] that there are quite a few __setup() handling functions
that return incorrect values. Doing this can be harmless, but it can also
cause strings to be added to init's argument or environment list,
polluting them.
Since __setup() handling and return values are not documented, first add
documentation for that. Also add more documentation for early_param()
handling and return values.
For __setup() functions, returning 0 (not handled) has questionable
value if it is just a malformed option value, as in
rodata=junk
since returning 0 would just cause "rodata=junk" to be added to init's
environment unnecessarily:
Run /sbin/init as init process
with arguments:
/sbin/init
with environment:
HOME=/
TERM=linux
splash=native
rodata=junk
Also, there are no recommendations on whether to print a warning when an
unknown parameter value is seen. I am not addressing that here.
[1] lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru
Link: https://lkml.kernel.org/r/20220221050852.1147-1-rdunlap@infradead.org
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/init.h | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
--- a/include/linux/init.h~inith-improve-__setup-and-early_param-documentation
+++ a/include/linux/init.h
@@ -320,12 +320,19 @@ struct obs_kernel_param {
__aligned(__alignof__(struct obs_kernel_param)) \
= { __setup_str_##unique_id, fn, early }
+/*
+ * NOTE: __setup functions return values:
+ * @fn returns 1 (or non-zero) if the option argument is "handled"
+ * and returns 0 if the option argument is "not handled".
+ */
#define __setup(str, fn) \
__setup_param(str, fn, fn, 0)
/*
- * NOTE: fn is as per module_param, not __setup!
- * Emits warning if fn returns non-zero.
+ * NOTE: @fn is as per module_param, not __setup!
+ * I.e., @fn returns 0 for no error or non-zero for error
+ * (possibly @fn returns a -errno value, but it does not matter).
+ * Emits warning if @fn returns non-zero.
*/
#define early_param(str, fn) \
__setup_param(str, fn, fn, 1)
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 19/41] init/main.c: return 1 from handled __setup() functions
2022-03-23 23:04 incoming Andrew Morton
` (17 preceding siblings ...)
2022-03-23 23:06 ` [patch 18/41] init.h: improve __setup and early_param documentation Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 20/41] fs/pipe: use kvcalloc to allocate a pipe_buffer array Andrew Morton
` (21 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: mingo, i.zhbanov, gregkh, rdunlap, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
From: Randy Dunlap <rdunlap@infradead.org>
Subject: init/main.c: return 1 from handled __setup() functions
initcall_blacklist() should return 1 to indicate that it handled its
cmdline arguments.
set_debug_rodata() should return 1 to indicate that it handled its cmdline
arguments. Print a warning if the option string is invalid.
This prevents these strings from being added to the 'init' program's
environment as they are not init arguments/parameters.
Link: https://lkml.kernel.org/r/20220221050901.23985-1-rdunlap@infradead.org
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
init/main.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/init/main.c~init-mainc-return-1-from-handled-__setup-functions
+++ a/init/main.c
@@ -1190,7 +1190,7 @@ static int __init initcall_blacklist(cha
}
} while (str_entry);
- return 0;
+ return 1;
}
static bool __init_or_module initcall_blacklisted(initcall_t fn)
@@ -1448,7 +1448,9 @@ static noinline void __init kernel_init_
bool rodata_enabled __ro_after_init = true;
static int __init set_debug_rodata(char *str)
{
- return strtobool(str, &rodata_enabled);
+ if (strtobool(str, &rodata_enabled))
+ pr_warn("Invalid option string for rodata: '%s'\n", str);
+ return 1;
}
__setup("rodata=", set_debug_rodata);
#endif
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 20/41] fs/pipe: use kvcalloc to allocate a pipe_buffer array
2022-03-23 23:04 incoming Andrew Morton
` (18 preceding siblings ...)
2022-03-23 23:06 ` [patch 19/41] init/main.c: return 1 from handled __setup() functions Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 21/41] fs/pipe.c: local vars have to match types of proper pipe_inode_info fields Andrew Morton
` (20 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: viro, 0x7f454c46, avagin, akpm, patches, linux-mm, mm-commits,
torvalds, akpm
From: Andrei Vagin <avagin@gmail.com>
Subject: fs/pipe: use kvcalloc to allocate a pipe_buffer array
Right now, kcalloc is used to allocate a pipe_buffer array. The size of
the pipe_buffer struct is 40 bytes. kcalloc allows allocating reliably
chunks with sizes less or equal to PAGE_ALLOC_COSTLY_ORDER (3). It means
that the maximum pipe size is 3.2MB in this case.
In CRIU, we use pipes to dump processes memory. CRIU freezes a target
process, injects a parasite code into it and then this code splices memory
into pipes. If a maximum pipe size is small, we need to do many
iterations or create many pipes.
kvcalloc attempt to allocate physically contiguous memory, but upon
failure, fall back to non-contiguous (vmalloc) allocation and so it isn't
limited by PAGE_ALLOC_COSTLY_ORDER.
The maximum pipe size for non-root users is limited by the
/proc/sys/fs/pipe-max-size sysctl that is 1MB by default, so only the root
user will be able to trigger vmalloc allocations.
Link: https://lkml.kernel.org/r/20220104171058.22580-1-avagin@gmail.com
Signed-off-by: Andrei Vagin <avagin@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/pipe.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
--- a/fs/pipe.c~fs-pipe-use-kvcalloc-to-allocate-a-pipe_buffer-array
+++ a/fs/pipe.c
@@ -804,7 +804,7 @@ struct pipe_inode_info *alloc_pipe_info(
if (too_many_pipe_buffers_hard(user_bufs) && pipe_is_unprivileged_user())
goto out_revert_acct;
- pipe->bufs = kcalloc(pipe_bufs, sizeof(struct pipe_buffer),
+ pipe->bufs = kvcalloc(pipe_bufs, sizeof(struct pipe_buffer),
GFP_KERNEL_ACCOUNT);
if (pipe->bufs) {
@@ -849,7 +849,7 @@ void free_pipe_info(struct pipe_inode_in
#endif
if (pipe->tmp_page)
__free_page(pipe->tmp_page);
- kfree(pipe->bufs);
+ kvfree(pipe->bufs);
kfree(pipe);
}
@@ -1264,8 +1264,7 @@ int pipe_resize_ring(struct pipe_inode_i
if (nr_slots < n)
return -EBUSY;
- bufs = kcalloc(nr_slots, sizeof(*bufs),
- GFP_KERNEL_ACCOUNT | __GFP_NOWARN);
+ bufs = kvcalloc(nr_slots, sizeof(*bufs), GFP_KERNEL_ACCOUNT);
if (unlikely(!bufs))
return -ENOMEM;
@@ -1292,7 +1291,7 @@ int pipe_resize_ring(struct pipe_inode_i
head = n;
tail = 0;
- kfree(pipe->bufs);
+ kvfree(pipe->bufs);
pipe->bufs = bufs;
pipe->ring_size = nr_slots;
if (pipe->max_usage > nr_slots)
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 21/41] fs/pipe.c: local vars have to match types of proper pipe_inode_info fields
2022-03-23 23:04 incoming Andrew Morton
` (19 preceding siblings ...)
2022-03-23 23:06 ` [patch 20/41] fs/pipe: use kvcalloc to allocate a pipe_buffer array Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 22/41] minix: fix bug when opening a file with O_DIRECT Andrew Morton
` (19 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: christian.brauner, 0x7f454c46, avagin, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
From: Andrei Vagin <avagin@gmail.com>
Subject: fs/pipe.c: local vars have to match types of proper pipe_inode_info fields
head, tail, ring_size are declared as unsigned int, so all local variables
that operate with these fields have to be unsigned to avoid signed integer
overflow.
Right now, it isn't an issue because the maximum pipe size is limited by
1U<<31.
Link: https://lkml.kernel.org/r/20220106171946.36128-1-avagin@gmail.com
Signed-off-by: Andrei Vagin <avagin@gmail.com>
Suggested-by: Dmitry Safonov <0x7f454c46@gmail.com>
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/pipe.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/fs/pipe.c~fs-pipe-local-vars-has-to-match-types-of-proper-pipe_inode_info-fields
+++ a/fs/pipe.c
@@ -607,7 +607,7 @@ out:
static long pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
struct pipe_inode_info *pipe = filp->private_data;
- int count, head, tail, mask;
+ unsigned int count, head, tail, mask;
switch (cmd) {
case FIONREAD:
@@ -829,7 +829,7 @@ out_free_uid:
void free_pipe_info(struct pipe_inode_info *pipe)
{
- int i;
+ unsigned int i;
#ifdef CONFIG_WATCH_QUEUE
if (pipe->watch_queue)
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 22/41] minix: fix bug when opening a file with O_DIRECT
2022-03-23 23:04 incoming Andrew Morton
` (20 preceding siblings ...)
2022-03-23 23:06 ` [patch 21/41] fs/pipe.c: local vars have to match types of proper pipe_inode_info fields Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 23/41] fat: use pointer to simple type in put_user() Andrew Morton
` (18 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: jack, colin.king, christian.brauner, qhjin.dev, akpm, patches,
linux-mm, mm-commits, torvalds, akpm
From: Qinghua Jin <qhjin.dev@gmail.com>
Subject: minix: fix bug when opening a file with O_DIRECT
Testcase:
1. create a minix file system and mount it
2. open a file on the file system with O_RDWR|O_CREAT|O_TRUNC|O_DIRECT
3. open fails with -EINVAL but leaves an empty file behind. All other
open() failures don't leave the failed open files behind.
It is hard to check the direct_IO op before creating the inode. Just as
ext4 and btrfs do, this patch will resolve the issue by allowing to create
the file with O_DIRECT but returning error when writing the file.
Link: https://lkml.kernel.org/r/20220107133626.413379-1-qhjin.dev@gmail.com
Signed-off-by: Qinghua Jin <qhjin.dev@gmail.com>
Reported-by: Colin Ian King <colin.king@intel.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/minix/inode.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/fs/minix/inode.c~minix-fix-bug-when-opening-a-file-with-o_direct
+++ a/fs/minix/inode.c
@@ -447,7 +447,8 @@ static const struct address_space_operat
.writepage = minix_writepage,
.write_begin = minix_write_begin,
.write_end = generic_write_end,
- .bmap = minix_bmap
+ .bmap = minix_bmap,
+ .direct_IO = noop_direct_IO
};
static const struct inode_operations minix_symlink_inode_operations = {
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 23/41] fat: use pointer to simple type in put_user()
2022-03-23 23:04 incoming Andrew Morton
` (21 preceding siblings ...)
2022-03-23 23:06 ` [patch 22/41] minix: fix bug when opening a file with O_DIRECT Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 24/41] cgroup: use irqsave in cgroup_rstat_flush_locked() Andrew Morton
` (17 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: schwab, hirofumi, David.Laight, deller, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
From: Helge Deller <deller@gmx.de>
Subject: fat: use pointer to simple type in put_user()
The put_user(val,ptr) macro wants a pointer to a simple type, but in
fat_ioctl_filldir() the d_name field references an "array of chars". Be
more accurate and explicitly give the pointer to the first character of
the d_name[] array.
I noticed that issue while trying to optimize the parisc put_user() macro
and used an intermediate variable to store the pointer. In that case I
got this error:
In file included from include/linux/uaccess.h:11,
from include/linux/compat.h:17,
from fs/fat/dir.c:18:
fs/fat/dir.c: In function `fat_ioctl_filldir':
fs/fat/dir.c:725:33: error: invalid initializer
725 | if (put_user(0, d2->d_name) || \
| ^~
include/asm/uaccess.h:152:33: note: in definition of macro `__put_user'
152 | __typeof__(ptr) __ptr = ptr; \
| ^~~
fs/fat/dir.c:759:1: note: in expansion of macro `FAT_IOCTL_FILLDIR_FUNC'
759 | FAT_IOCTL_FILLDIR_FUNC(fat_ioctl_filldir, __fat_dirent)
Andreas Schwab <schwab@linux-m68k.org> suggested to use
__typeof__(&*(ptr)) __ptr = ptr;
instead. This works, but nevertheless it's probably reasonable to
fix the original caller too.
Link: https://lkml.kernel.org/r/Ygo+A9MREmC1H3kr@p100
Signed-off-by: Helge Deller <deller@gmx.de>
Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: David Laight <David.Laight@aculab.com>
Cc: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/fat/dir.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/fs/fat/dir.c~fat-use-pointer-to-simple-type-in-put_user
+++ a/fs/fat/dir.c
@@ -722,7 +722,7 @@ static int func(struct dir_context *ctx,
if (name_len >= sizeof(d1->d_name)) \
name_len = sizeof(d1->d_name) - 1; \
\
- if (put_user(0, d2->d_name) || \
+ if (put_user(0, &d2->d_name[0]) || \
put_user(0, &d2->d_reclen) || \
copy_to_user(d1->d_name, name, name_len) || \
put_user(0, d1->d_name + name_len) || \
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 24/41] cgroup: use irqsave in cgroup_rstat_flush_locked().
2022-03-23 23:04 incoming Andrew Morton
` (22 preceding siblings ...)
2022-03-23 23:06 ` [patch 23/41] fat: use pointer to simple type in put_user() Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 25/41] kexec: make crashk_res, crashk_low_res and crash_notes symbols always visible Andrew Morton
` (16 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: tj, tglx, lizefan.x, hannes, bigeasy, akpm, patches, linux-mm,
mm-commits, torvalds, akpm
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Subject: cgroup: use irqsave in cgroup_rstat_flush_locked().
All callers of cgroup_rstat_flush_locked() acquire cgroup_rstat_lock
either with spin_lock_irq() or spin_lock_irqsave().
cgroup_rstat_flush_locked() itself acquires cgroup_rstat_cpu_lock which is
a raw_spin_lock. This lock is also acquired in cgroup_rstat_updated() in
IRQ context and therefore requires _irqsave() locking suffix in
cgroup_rstat_flush_locked().
Since there is no difference between spin_lock_t and raw_spin_lock_t on
!RT lockdep does not complain here. On RT lockdep complains because the
interrupts were not disabled here and a deadlock is possible.
Acquire the raw_spin_lock_t with disabled interrupts.
Link: https://lkml.kernel.org/r/20220301122143.1521823-2-bigeasy@linutronix.de
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Zefan Li <lizefan.x@bytedance.com>
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Subject: cgroup: add a comment to cgroup_rstat_flush_locked().
Add a comment why spin_lock_irq() -> raw_spin_lock_irqsave() is needed.
Link: https://lkml.kernel.org/r/Yh+DOK73hfVV5ThX@linutronix.de
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Zefan Li <lizefan.x@bytedance.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
kernel/cgroup/rstat.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
--- a/kernel/cgroup/rstat.c~cgroup-use-irqsave-in-cgroup_rstat_flush_locked
+++ a/kernel/cgroup/rstat.c
@@ -153,8 +153,17 @@ static void cgroup_rstat_flush_locked(st
raw_spinlock_t *cpu_lock = per_cpu_ptr(&cgroup_rstat_cpu_lock,
cpu);
struct cgroup *pos = NULL;
+ unsigned long flags;
- raw_spin_lock(cpu_lock);
+ /*
+ * The _irqsave() is needed because cgroup_rstat_lock is
+ * spinlock_t which is a sleeping lock on PREEMPT_RT. Acquiring
+ * this lock with the _irq() suffix only disables interrupts on
+ * a non-PREEMPT_RT kernel. The raw_spinlock_t below disables
+ * interrupts on both configurations. The _irqsave() ensures
+ * that interrupts are always disabled and later restored.
+ */
+ raw_spin_lock_irqsave(cpu_lock, flags);
while ((pos = cgroup_rstat_cpu_pop_updated(pos, cgrp, cpu))) {
struct cgroup_subsys_state *css;
@@ -166,7 +175,7 @@ static void cgroup_rstat_flush_locked(st
css->ss->css_rstat_flush(css, cpu);
rcu_read_unlock();
}
- raw_spin_unlock(cpu_lock);
+ raw_spin_unlock_irqrestore(cpu_lock, flags);
/* if @may_sleep, play nice and yield if necessary */
if (may_sleep && (need_resched() ||
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 25/41] kexec: make crashk_res, crashk_low_res and crash_notes symbols always visible
2022-03-23 23:04 incoming Andrew Morton
` (23 preceding siblings ...)
2022-03-23 23:06 ` [patch 24/41] cgroup: use irqsave in cgroup_rstat_flush_locked() Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 26/41] riscv: mm: init: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef Andrew Morton
` (15 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: will, tglx, rmk+kernel, paul.walmsley, palmer, palmer, mingo,
linux, hpa, ebiederm, dave.hansen, catalin.marinas, bp, bhe, aou,
alex, jszhang, akpm, patches, linux-mm, mm-commits, torvalds,
akpm
From: Jisheng Zhang <jszhang@kernel.org>
Subject: kexec: make crashk_res, crashk_low_res and crash_notes symbols always visible
Patch series "kexec: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef", v2.
Replace the conditional compilation using "#ifdef CONFIG_KEXEC_CORE" by a
check for "IS_ENABLED(CONFIG_KEXEC_CORE)", to simplify the code and
increase compile coverage.
I only modified x86, arm, arm64 and riscv, other architectures such as sh,
powerpc and s390 are better to be kept kexec code as-is so they are not
touched.
This patch (of 5):
Make the forward declarations of crashk_res, crashk_low_res and
crash_notes always visible. Code referring to these symbols can then just
check for IS_ENABLED(CONFIG_KEXEC_CORE), instead of requiring conditional
compilation using an #ifdef, thus preparing to increase compile coverage
and simplify the code.
Link: https://lkml.kernel.org/r/20211206160514.2000-1-jszhang@kernel.org
Link: https://lkml.kernel.org/r/20211206160514.2000-2-jszhang@kernel.org
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Alexandre Ghiti <alex@ghiti.fr>
Cc: Palmer Dabbelt <palmer@rivosinc.com>
Cc: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/kexec.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
--- a/include/linux/kexec.h~kexec-make-crashk_res-crashk_low_res-and-crash_notes-symbols-always-visible
+++ a/include/linux/kexec.h
@@ -20,6 +20,12 @@
#include <uapi/linux/kexec.h>
+/* Location of a reserved region to hold the crash kernel.
+ */
+extern struct resource crashk_res;
+extern struct resource crashk_low_res;
+extern note_buf_t __percpu *crash_notes;
+
#ifdef CONFIG_KEXEC_CORE
#include <linux/list.h>
#include <linux/compat.h>
@@ -350,12 +356,6 @@ extern int kexec_load_disabled;
#define KEXEC_FILE_FLAGS (KEXEC_FILE_UNLOAD | KEXEC_FILE_ON_CRASH | \
KEXEC_FILE_NO_INITRAMFS)
-/* Location of a reserved region to hold the crash kernel.
- */
-extern struct resource crashk_res;
-extern struct resource crashk_low_res;
-extern note_buf_t __percpu *crash_notes;
-
/* flag to track if kexec reboot is in progress */
extern bool kexec_in_progress;
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 26/41] riscv: mm: init: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
2022-03-23 23:04 incoming Andrew Morton
` (24 preceding siblings ...)
2022-03-23 23:06 ` [patch 25/41] kexec: make crashk_res, crashk_low_res and crash_notes symbols always visible Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 27/41] x86/setup: " Andrew Morton
` (14 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: will, tglx, rmk+kernel, paul.walmsley, palmer, palmer, mingo,
linux, hpa, ebiederm, dave.hansen, catalin.marinas, bp, bhe, aou,
alex, jszhang, akpm, patches, linux-mm, mm-commits, torvalds,
akpm
From: Jisheng Zhang <jszhang@kernel.org>
Subject: riscv: mm: init: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
Replace the conditional compilation using "#ifdef CONFIG_KEXEC_CORE" by a
check for "IS_ENABLED(CONFIG_KEXEC_CORE)", to simplify the code and
increase compile coverage.
Link: https://lkml.kernel.org/r/20211206160514.2000-3-jszhang@kernel.org
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Alexandre Ghiti <alex@ghiti.fr>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/riscv/mm/init.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
--- a/arch/riscv/mm/init.c~riscv-mm-init-use-is_enabledconfig_kexec_core-instead-of-ifdef
+++ a/arch/riscv/mm/init.c
@@ -957,7 +957,6 @@ static inline void setup_vm_final(void)
}
#endif /* CONFIG_MMU */
-#ifdef CONFIG_KEXEC_CORE
/*
* reserve_crashkernel() - reserves memory for crash kernel
*
@@ -974,6 +973,8 @@ static void __init reserve_crashkernel(v
int ret = 0;
+ if (!IS_ENABLED(CONFIG_KEXEC_CORE))
+ return;
/*
* Don't reserve a region for a crash kernel on a crash kernel
* since it doesn't make much sense and we have limited memory
@@ -1023,7 +1024,6 @@ static void __init reserve_crashkernel(v
crashk_res.start = crash_base;
crashk_res.end = crash_base + crash_size - 1;
}
-#endif /* CONFIG_KEXEC_CORE */
void __init paging_init(void)
{
@@ -1037,9 +1037,7 @@ void __init misc_mem_init(void)
arch_numa_init();
sparse_init();
zone_sizes_init();
-#ifdef CONFIG_KEXEC_CORE
reserve_crashkernel();
-#endif
memblock_dump_all();
}
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 27/41] x86/setup: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
2022-03-23 23:04 incoming Andrew Morton
` (25 preceding siblings ...)
2022-03-23 23:06 ` [patch 26/41] riscv: mm: init: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 28/41] arm64: mm: " Andrew Morton
` (13 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: will, tglx, rmk+kernel, paul.walmsley, palmer, palmer, mingo,
linux, hpa, ebiederm, dave.hansen, catalin.marinas, bp, bhe, aou,
alex, jszhang, akpm, patches, linux-mm, mm-commits, torvalds,
akpm
From: Jisheng Zhang <jszhang@kernel.org>
Subject: x86/setup: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
Replace the conditional compilation using "#ifdef CONFIG_KEXEC_CORE" by a
check for "IS_ENABLED(CONFIG_KEXEC_CORE)", to simplify the code and
increase compile coverage.
Link: https://lkml.kernel.org/r/20211206160514.2000-4-jszhang@kernel.org
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Alexandre Ghiti <alex@ghiti.fr>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Palmer Dabbelt <palmer@rivosinc.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/x86/kernel/setup.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
--- a/arch/x86/kernel/setup.c~x86-setup-use-is_enabledconfig_kexec_core-instead-of-ifdef
+++ a/arch/x86/kernel/setup.c
@@ -411,8 +411,6 @@ static void __init memblock_x86_reserve_
* --------- Crashkernel reservation ------------------------------
*/
-#ifdef CONFIG_KEXEC_CORE
-
/* 16M alignment for crash kernel regions */
#define CRASH_ALIGN SZ_16M
@@ -490,6 +488,9 @@ static void __init reserve_crashkernel(v
bool high = false;
int ret;
+ if (!IS_ENABLED(CONFIG_KEXEC_CORE))
+ return;
+
total_mem = memblock_phys_mem_size();
/* crashkernel=XM */
@@ -555,11 +556,6 @@ static void __init reserve_crashkernel(v
crashk_res.end = crash_base + crash_size - 1;
insert_resource(&iomem_resource, &crashk_res);
}
-#else
-static void __init reserve_crashkernel(void)
-{
-}
-#endif
static struct resource standard_io_resources[] = {
{ .name = "dma1", .start = 0x00, .end = 0x1f,
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 28/41] arm64: mm: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
2022-03-23 23:04 incoming Andrew Morton
` (26 preceding siblings ...)
2022-03-23 23:06 ` [patch 27/41] x86/setup: " Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 29/41] docs: kdump: update description about sysfs file system support Andrew Morton
` (12 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: will, tglx, rmk+kernel, paul.walmsley, palmer, palmer, mingo,
linux, hpa, ebiederm, dave.hansen, catalin.marinas, bp, bhe, aou,
alex, jszhang, akpm, patches, linux-mm, mm-commits, torvalds,
akpm
From: Jisheng Zhang <jszhang@kernel.org>
Subject: arm64: mm: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef
Replace the conditional compilation using "#ifdef CONFIG_KEXEC_CORE" by a
check for "IS_ENABLED(CONFIG_KEXEC_CORE)", to simplify the code and
increase compile coverage.
Link: https://lkml.kernel.org/r/20211206160514.2000-5-jszhang@kernel.org
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Alexandre Ghiti <alex@ghiti.fr>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Palmer Dabbelt <palmer@rivosinc.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/arm64/mm/init.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
--- a/arch/arm64/mm/init.c~arm64-mm-use-is_enabledconfig_kexec_core-instead-of-ifdef
+++ a/arch/arm64/mm/init.c
@@ -64,7 +64,6 @@ EXPORT_SYMBOL(memstart_addr);
*/
phys_addr_t arm64_dma_phys_limit __ro_after_init;
-#ifdef CONFIG_KEXEC_CORE
/*
* reserve_crashkernel() - reserves memory for crash kernel
*
@@ -78,6 +77,9 @@ static void __init reserve_crashkernel(v
unsigned long long crash_max = arm64_dma_phys_limit;
int ret;
+ if (!IS_ENABLED(CONFIG_KEXEC_CORE))
+ return;
+
ret = parse_crashkernel(boot_command_line, memblock_phys_mem_size(),
&crash_size, &crash_base);
/* no crashkernel= or invalid value specified */
@@ -110,11 +112,6 @@ static void __init reserve_crashkernel(v
crashk_res.start = crash_base;
crashk_res.end = crash_base + crash_size - 1;
}
-#else
-static void __init reserve_crashkernel(void)
-{
-}
-#endif /* CONFIG_KEXEC_CORE */
/*
* Return the maximum physical address for a zone accessible by the given bits
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 29/41] docs: kdump: update description about sysfs file system support
2022-03-23 23:04 incoming Andrew Morton
` (27 preceding siblings ...)
2022-03-23 23:06 ` [patch 28/41] arm64: mm: " Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 30/41] docs: kdump: add scp example to write out the dump file Andrew Morton
` (11 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: ryabinin.a.a, lixuefeng, elver, corbet, bhe, yangtiezhu, akpm,
patches, linux-mm, mm-commits, torvalds, akpm
From: Tiezhu Yang <yangtiezhu@loongson.cn>
Subject: docs: kdump: update description about sysfs file system support
Patch series "Update doc and fix some issues about kdump", v2.
This patch (of 5):
After commit 6a108a14fa35 ("kconfig: rename CONFIG_EMBEDDED to
CONFIG_EXPERT"), "Configure standard kernel features (for small systems)"
is not exist, we should use "Configure standard kernel features (expert
users)" now.
Link: https://lkml.kernel.org/r/1644324666-15947-1-git-send-email-yangtiezhu@loongson.cn
Link: https://lkml.kernel.org/r/1644324666-15947-2-git-send-email-yangtiezhu@loongson.cn
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Baoquan He <bhe@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Marco Elver <elver@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Xuefeng Li <lixuefeng@loongson.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/admin-guide/kdump/kdump.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/Documentation/admin-guide/kdump/kdump.rst~docs-kdump-update-description-about-sysfs-file-system-support
+++ a/Documentation/admin-guide/kdump/kdump.rst
@@ -146,9 +146,9 @@ System kernel config options
CONFIG_SYSFS=y
Note that "sysfs file system support" might not appear in the "Pseudo
- filesystems" menu if "Configure standard kernel features (for small
- systems)" is not enabled in "General Setup." In this case, check the
- .config file itself to ensure that sysfs is turned on, as follows::
+ filesystems" menu if "Configure standard kernel features (expert users)"
+ is not enabled in "General Setup." In this case, check the .config file
+ itself to ensure that sysfs is turned on, as follows::
grep 'CONFIG_SYSFS' .config
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 30/41] docs: kdump: add scp example to write out the dump file
2022-03-23 23:04 incoming Andrew Morton
` (28 preceding siblings ...)
2022-03-23 23:06 ` [patch 29/41] docs: kdump: update description about sysfs file system support Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 31/41] panic: unset panic_on_warn inside panic() Andrew Morton
` (10 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: ryabinin.a.a, lixuefeng, elver, corbet, bhe, yangtiezhu, akpm,
patches, linux-mm, mm-commits, torvalds, akpm
From: Tiezhu Yang <yangtiezhu@loongson.cn>
Subject: docs: kdump: add scp example to write out the dump file
Except cp and makedumpfile, add scp example to write out the dump file.
Link: https://lkml.kernel.org/r/1644324666-15947-3-git-send-email-yangtiezhu@loongson.cn
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Acked-by: Baoquan He <bhe@redhat.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Marco Elver <elver@google.com>
Cc: Xuefeng Li <lixuefeng@loongson.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/admin-guide/kdump/kdump.rst | 4 ++++
1 file changed, 4 insertions(+)
--- a/Documentation/admin-guide/kdump/kdump.rst~docs-kdump-add-scp-example-to-write-out-the-dump-file
+++ a/Documentation/admin-guide/kdump/kdump.rst
@@ -533,6 +533,10 @@ the following command::
cp /proc/vmcore <dump-file>
+or use scp to write out the dump file between hosts on a network, e.g::
+
+ scp /proc/vmcore remote_username@remote_ip:<dump-file>
+
You can also use makedumpfile utility to write out the dump file
with specified options to filter out unwanted contents, e.g::
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 31/41] panic: unset panic_on_warn inside panic()
2022-03-23 23:04 incoming Andrew Morton
` (29 preceding siblings ...)
2022-03-23 23:06 ` [patch 30/41] docs: kdump: add scp example to write out the dump file Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 32/41] ubsan: no need to unset panic_on_warn in ubsan_epilogue() Andrew Morton
` (9 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: ryabinin.a.a, lixuefeng, elver, corbet, bhe, yangtiezhu, akpm,
patches, linux-mm, mm-commits, torvalds, akpm
From: Tiezhu Yang <yangtiezhu@loongson.cn>
Subject: panic: unset panic_on_warn inside panic()
In the current code, the following three places need to unset
panic_on_warn before calling panic() to avoid recursive panics:
kernel/kcsan/report.c: print_report()
kernel/sched/core.c: __schedule_bug()
mm/kfence/report.c: kfence_report_error()
In order to avoid copy-pasting "panic_on_warn = 0" all over the places, it
is better to move it inside panic() and then remove it from the other
places.
Link: https://lkml.kernel.org/r/1644324666-15947-4-git-send-email-yangtiezhu@loongson.cn
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Reviewed-by: Marco Elver <elver@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Baoquan He <bhe@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Xuefeng Li <lixuefeng@loongson.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
kernel/panic.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
--- a/kernel/panic.c~panic-unset-panic_on_warn-inside-panic
+++ a/kernel/panic.c
@@ -185,6 +185,16 @@ void panic(const char *fmt, ...)
int old_cpu, this_cpu;
bool _crash_kexec_post_notifiers = crash_kexec_post_notifiers;
+ if (panic_on_warn) {
+ /*
+ * This thread may hit another WARN() in the panic path.
+ * Resetting this prevents additional WARN() from panicking the
+ * system on this thread. Other threads are blocked by the
+ * panic_mutex in panic().
+ */
+ panic_on_warn = 0;
+ }
+
/*
* Disable local interrupts. This will prevent panic_smp_self_stop
* from deadlocking the first cpu that invokes the panic, since
@@ -576,16 +586,8 @@ void __warn(const char *file, int line,
if (regs)
show_regs(regs);
- if (panic_on_warn) {
- /*
- * This thread may hit another WARN() in the panic path.
- * Resetting this prevents additional WARN() from panicking the
- * system on this thread. Other threads are blocked by the
- * panic_mutex in panic().
- */
- panic_on_warn = 0;
+ if (panic_on_warn)
panic("panic_on_warn set ...\n");
- }
if (!regs)
dump_stack();
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 32/41] ubsan: no need to unset panic_on_warn in ubsan_epilogue()
2022-03-23 23:04 incoming Andrew Morton
` (30 preceding siblings ...)
2022-03-23 23:06 ` [patch 31/41] panic: unset panic_on_warn inside panic() Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:06 ` [patch 33/41] kasan: no need to unset panic_on_warn in end_report() Andrew Morton
` (8 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: ryabinin.a.a, lixuefeng, elver, corbet, bhe, yangtiezhu, akpm,
patches, linux-mm, mm-commits, torvalds, akpm
From: Tiezhu Yang <yangtiezhu@loongson.cn>
Subject: ubsan: no need to unset panic_on_warn in ubsan_epilogue()
panic_on_warn is unset inside panic(), so no need to unset it before
calling panic() in ubsan_epilogue().
Link: https://lkml.kernel.org/r/1644324666-15947-5-git-send-email-yangtiezhu@loongson.cn
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Reviewed-by: Marco Elver <elver@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Baoquan He <bhe@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Xuefeng Li <lixuefeng@loongson.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
lib/ubsan.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
--- a/lib/ubsan.c~ubsan-no-need-to-unset-panic_on_warn-in-ubsan_epilogue
+++ a/lib/ubsan.c
@@ -154,16 +154,8 @@ static void ubsan_epilogue(void)
current->in_ubsan--;
- if (panic_on_warn) {
- /*
- * This thread may hit another WARN() in the panic path.
- * Resetting this prevents additional WARN() from panicking the
- * system on this thread. Other threads are blocked by the
- * panic_mutex in panic().
- */
- panic_on_warn = 0;
+ if (panic_on_warn)
panic("panic_on_warn set ...\n");
- }
}
void __ubsan_handle_divrem_overflow(void *_data, void *lhs, void *rhs)
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 33/41] kasan: no need to unset panic_on_warn in end_report()
2022-03-23 23:04 incoming Andrew Morton
` (31 preceding siblings ...)
2022-03-23 23:06 ` [patch 32/41] ubsan: no need to unset panic_on_warn in ubsan_epilogue() Andrew Morton
@ 2022-03-23 23:06 ` Andrew Morton
2022-03-23 23:07 ` [patch 34/41] taskstats: remove unneeded dead assignment Andrew Morton
` (7 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:06 UTC (permalink / raw)
To: ryabinin.a.a, lixuefeng, elver, corbet, bhe, yangtiezhu, akpm,
patches, linux-mm, mm-commits, torvalds, akpm
From: Tiezhu Yang <yangtiezhu@loongson.cn>
Subject: kasan: no need to unset panic_on_warn in end_report()
panic_on_warn is unset inside panic(), so no need to unset it before
calling panic() in end_report().
Link: https://lkml.kernel.org/r/1644324666-15947-6-git-send-email-yangtiezhu@loongson.cn
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Reviewed-by: Marco Elver <elver@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Baoquan He <bhe@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Xuefeng Li <lixuefeng@loongson.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/kasan/report.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
--- a/mm/kasan/report.c~kasan-no-need-to-unset-panic_on_warn-in-end_report
+++ a/mm/kasan/report.c
@@ -117,16 +117,8 @@ static void end_report(unsigned long *fl
pr_err("==================================================================\n");
add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
spin_unlock_irqrestore(&report_lock, *flags);
- if (panic_on_warn && !test_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags)) {
- /*
- * This thread may hit another WARN() in the panic path.
- * Resetting this prevents additional WARN() from panicking the
- * system on this thread. Other threads are blocked by the
- * panic_mutex in panic().
- */
- panic_on_warn = 0;
+ if (panic_on_warn && !test_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags))
panic("panic_on_warn set ...\n");
- }
if (kasan_arg_fault == KASAN_ARG_FAULT_PANIC)
panic("kasan.fault=panic set ...\n");
kasan_enable_current();
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 34/41] taskstats: remove unneeded dead assignment
2022-03-23 23:04 incoming Andrew Morton
` (32 preceding siblings ...)
2022-03-23 23:06 ` [patch 33/41] kasan: no need to unset panic_on_warn in end_report() Andrew Morton
@ 2022-03-23 23:07 ` Andrew Morton
2022-03-23 23:07 ` [patch 35/41] docs: sysctl/kernel: add missing bit to panic_print Andrew Morton
` (6 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:07 UTC (permalink / raw)
To: trix, ndesaulniers, natechancellor, bsingharora, lukas.bulwahn,
akpm, patches, linux-mm, mm-commits, torvalds, akpm
From: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Subject: taskstats: remove unneeded dead assignment
make clang-analyzer on x86_64 defconfig caught my attention with:
kernel/taskstats.c:120:2: warning: Value stored to 'rc' is never read \
[clang-analyzer-deadcode.DeadStores]
rc = 0;
^
Commit d94a041519f3 ("taskstats: free skb, avoid returns in
send_cpu_listeners") made send_cpu_listeners() not return a value and
hence, the rc variable remained only to be used within the loop where
it is always assigned before read and it does not need any other
initialisation.
So, simply remove this unneeded dead initializing assignment.
As compilers will detect this unneeded assignment and optimize this anyway,
the resulting object code is identical before and after this change.
No functional change. No change to object code.
[akpm@linux-foundation.org: reduce scope of `rc']
Link: https://lkml.kernel.org/r/20220307093942.21310-1-lukas.bulwahn@gmail.com
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: Tom Rix <trix@redhat.com>
Cc: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
kernel/taskstats.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- a/kernel/taskstats.c~taskstats-remove-unneeded-dead-assignment
+++ a/kernel/taskstats.c
@@ -113,13 +113,14 @@ static void send_cpu_listeners(struct sk
struct listener *s, *tmp;
struct sk_buff *skb_next, *skb_cur = skb;
void *reply = genlmsg_data(genlhdr);
- int rc, delcount = 0;
+ int delcount = 0;
genlmsg_end(skb, reply);
- rc = 0;
down_read(&listeners->sem);
list_for_each_entry(s, &listeners->list, list) {
+ int rc;
+
skb_next = NULL;
if (!list_is_last(&s->list, &listeners->list)) {
skb_next = skb_clone(skb_cur, GFP_KERNEL);
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 35/41] docs: sysctl/kernel: add missing bit to panic_print
2022-03-23 23:04 incoming Andrew Morton
` (33 preceding siblings ...)
2022-03-23 23:07 ` [patch 34/41] taskstats: remove unneeded dead assignment Andrew Morton
@ 2022-03-23 23:07 ` Andrew Morton
2022-03-23 23:07 ` [patch 36/41] panic: add option to dump all CPUs backtraces in panic_print Andrew Morton
` (5 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:07 UTC (permalink / raw)
To: yzaikin, siglesias, mcgrof, keescook, feng.tang, gpiccoli, akpm,
patches, linux-mm, mm-commits, torvalds, akpm
From: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
Subject: docs: sysctl/kernel: add missing bit to panic_print
Patch series "Some improvements on panic_print".
This is a mix of a documentation fix with some additions to the
"panic_print" syscall / parameter. The goal here is being able to collect
all CPUs backtraces during a panic event and also to enable "panic_print"
in a kdump event - details of the reasoning and design choices in the
patches.
This patch (of 3):
Commit de6da1e8bcf0 ("panic: add an option to replay all the printk
message in buffer") added a new bit to the sysctl/kernel parameter
"panic_print", but the documentation was added only in
kernel-parameters.txt, not in the sysctl guide.
Fix it here by adding bit 5 to sysctl admin-guide documentation.
[rdunlap@infradead.org: fix table format warning]
Link: https://lkml.kernel.org/r/20220109055635.6999-1-rdunlap@infradead.org
Link: https://lkml.kernel.org/r/20211109202848.610874-1-gpiccoli@igalia.com
Link: https://lkml.kernel.org/r/20211109202848.610874-2-gpiccoli@igalia.com
Fixes: de6da1e8bcf0 ("panic: add an option to replay all the printk message in buffer")
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
Reviewed-by: Feng Tang <feng.tang@intel.com>
Cc: Luis Chamberlain <mcgrof@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Iurii Zaikin <yzaikin@google.com>
Cc: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/admin-guide/sysctl/kernel.rst | 1 +
1 file changed, 1 insertion(+)
--- a/Documentation/admin-guide/sysctl/kernel.rst~docs-sysctl-kernel-add-missing-bit-to-panic_print
+++ a/Documentation/admin-guide/sysctl/kernel.rst
@@ -806,6 +806,7 @@ bit 1 print system memory info
bit 2 print timer info
bit 3 print locks info if ``CONFIG_LOCKDEP`` is on
bit 4 print ftrace buffer
+bit 5 print all printk messages in buffer
===== ============================================
So for example to print tasks and memory info on panic, user can::
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 36/41] panic: add option to dump all CPUs backtraces in panic_print
2022-03-23 23:04 incoming Andrew Morton
` (34 preceding siblings ...)
2022-03-23 23:07 ` [patch 35/41] docs: sysctl/kernel: add missing bit to panic_print Andrew Morton
@ 2022-03-23 23:07 ` Andrew Morton
2022-03-23 23:07 ` [patch 37/41] panic: move panic_print before kmsg dumpers Andrew Morton
` (4 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:07 UTC (permalink / raw)
To: yzaikin, siglesias, mcgrof, keescook, feng.tang, gpiccoli, akpm,
patches, linux-mm, mm-commits, torvalds, akpm
From: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
Subject: panic: add option to dump all CPUs backtraces in panic_print
Currently the "panic_print" parameter/sysctl allows some interesting debug
information to be printed during a panic event. This is useful for
example in cases the user cannot kdump due to resource limits, or if the
user collects panic logs in a serial output (or pstore) and prefers a fast
reboot instead of a kdump.
Happens that currently there's no way to see all CPUs backtraces in a
panic using "panic_print" on architectures that support that. We do have
"oops_all_cpu_backtrace" sysctl, but although partially overlapping in the
functionality, they are orthogonal in nature: "panic_print" is a panic
tuning (and we have panics without oopses, like direct calls to panic() or
maybe other paths that don't go through oops_enter() function), and the
original purpose of "oops_all_cpu_backtrace" is to provide more
information on oopses for cases in which the users desire to continue
running the kernel even after an oops, i.e., used in non-panic scenarios.
So, we hereby introduce an additional bit for "panic_print" to allow
dumping the CPUs backtraces during a panic event.
Link: https://lkml.kernel.org/r/20211109202848.610874-3-gpiccoli@igalia.com
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
Reviewed-by: Feng Tang <feng.tang@intel.com>
Cc: Iurii Zaikin <yzaikin@google.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Luis Chamberlain <mcgrof@kernel.org>
Cc: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/admin-guide/kernel-parameters.txt | 1 +
Documentation/admin-guide/sysctl/kernel.rst | 1 +
kernel/panic.c | 4 ++++
3 files changed, 6 insertions(+)
--- a/Documentation/admin-guide/kernel-parameters.txt~panic-add-option-to-dump-all-cpus-backtraces-in-panic_print
+++ a/Documentation/admin-guide/kernel-parameters.txt
@@ -3726,6 +3726,7 @@
bit 3: print locks info if CONFIG_LOCKDEP is on
bit 4: print ftrace buffer
bit 5: print all printk messages in buffer
+ bit 6: print all CPUs backtrace (if available in the arch)
panic_on_taint= Bitmask for conditionally calling panic() in add_taint()
Format: <hex>[,nousertaint]
--- a/Documentation/admin-guide/sysctl/kernel.rst~panic-add-option-to-dump-all-cpus-backtraces-in-panic_print
+++ a/Documentation/admin-guide/sysctl/kernel.rst
@@ -807,6 +807,7 @@ bit 2 print timer info
bit 3 print locks info if ``CONFIG_LOCKDEP`` is on
bit 4 print ftrace buffer
bit 5 print all printk messages in buffer
+bit 6 print all CPUs backtrace (if available in the arch)
===== ============================================
So for example to print tasks and memory info on panic, user can::
--- a/kernel/panic.c~panic-add-option-to-dump-all-cpus-backtraces-in-panic_print
+++ a/kernel/panic.c
@@ -66,6 +66,7 @@ EXPORT_SYMBOL_GPL(panic_timeout);
#define PANIC_PRINT_LOCK_INFO 0x00000008
#define PANIC_PRINT_FTRACE_INFO 0x00000010
#define PANIC_PRINT_ALL_PRINTK_MSG 0x00000020
+#define PANIC_PRINT_ALL_CPU_BT 0x00000040
unsigned long panic_print;
ATOMIC_NOTIFIER_HEAD(panic_notifier_list);
@@ -152,6 +153,9 @@ static void panic_print_sys_info(void)
if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
console_flush_on_panic(CONSOLE_REPLAY_ALL);
+ if (panic_print & PANIC_PRINT_ALL_CPU_BT)
+ trigger_all_cpu_backtrace();
+
if (panic_print & PANIC_PRINT_TASK_INFO)
show_state();
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 37/41] panic: move panic_print before kmsg dumpers
2022-03-23 23:04 incoming Andrew Morton
` (35 preceding siblings ...)
2022-03-23 23:07 ` [patch 36/41] panic: add option to dump all CPUs backtraces in panic_print Andrew Morton
@ 2022-03-23 23:07 ` Andrew Morton
2022-03-23 23:07 ` [patch 38/41] kcov: split ioctl handling into locked and unlocked parts Andrew Morton
` (3 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:07 UTC (permalink / raw)
To: senozhatsky, pmladek, feng.tang, bhe, gpiccoli, akpm, patches,
linux-mm, mm-commits, torvalds, akpm
From: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
Subject: panic: move panic_print before kmsg dumpers
The panic_print setting allows users to collect more information in a
panic event, like memory stats, tasks, CPUs backtraces, etc. This is an
interesting debug mechanism, but currently the print event happens *after*
kmsg_dump(), meaning that pstore, for example, cannot collect a dmesg with
the panic_print extra information.
This patch changes that in 2 steps:
(a) The panic_print setting allows to replay the existing kernel log
buffer to the console (bit 5), besides the extra information dump.
This functionality makes sense only at the end of the panic()
function. So, we hereby allow to distinguish the two situations by a
new boolean parameter in the function panic_print_sys_info().
(b) With the above change, we can safely call panic_print_sys_info()
before kmsg_dump(), allowing to dump the extra information when using
pstore or other kmsg dumpers.
The additional messages from panic_print could overwrite the oldest
messages when the buffer is full. The only reasonable solution is to use
a large enough log buffer, hence we added an advice into the kernel
parameters documentation about that.
Link: https://lkml.kernel.org/r/20220214141308.841525-1-gpiccoli@igalia.com
Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
Acked-by: Baoquan He <bhe@redhat.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Feng Tang <feng.tang@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/admin-guide/kernel-parameters.txt | 4 ++++
kernel/panic.c | 13 +++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
--- a/Documentation/admin-guide/kernel-parameters.txt~panic-move-panic_print-before-kmsg-dumpers
+++ a/Documentation/admin-guide/kernel-parameters.txt
@@ -3727,6 +3727,10 @@
bit 4: print ftrace buffer
bit 5: print all printk messages in buffer
bit 6: print all CPUs backtrace (if available in the arch)
+ *Be aware* that this option may print a _lot_ of lines,
+ so there are risks of losing older messages in the log.
+ Use this option carefully, maybe worth to setup a
+ bigger log buffer with "log_buf_len" along with this.
panic_on_taint= Bitmask for conditionally calling panic() in add_taint()
Format: <hex>[,nousertaint]
--- a/kernel/panic.c~panic-move-panic_print-before-kmsg-dumpers
+++ a/kernel/panic.c
@@ -148,10 +148,13 @@ void nmi_panic(struct pt_regs *regs, con
}
EXPORT_SYMBOL(nmi_panic);
-static void panic_print_sys_info(void)
+static void panic_print_sys_info(bool console_flush)
{
- if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
- console_flush_on_panic(CONSOLE_REPLAY_ALL);
+ if (console_flush) {
+ if (panic_print & PANIC_PRINT_ALL_PRINTK_MSG)
+ console_flush_on_panic(CONSOLE_REPLAY_ALL);
+ return;
+ }
if (panic_print & PANIC_PRINT_ALL_CPU_BT)
trigger_all_cpu_backtrace();
@@ -286,6 +289,8 @@ void panic(const char *fmt, ...)
*/
atomic_notifier_call_chain(&panic_notifier_list, 0, buf);
+ panic_print_sys_info(false);
+
kmsg_dump(KMSG_DUMP_PANIC);
/*
@@ -316,7 +321,7 @@ void panic(const char *fmt, ...)
debug_locks_off();
console_flush_on_panic(CONSOLE_FLUSH_PENDING);
- panic_print_sys_info();
+ panic_print_sys_info(true);
if (!panic_blink)
panic_blink = no_blink;
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 38/41] kcov: split ioctl handling into locked and unlocked parts
2022-03-23 23:04 incoming Andrew Morton
` (36 preceding siblings ...)
2022-03-23 23:07 ` [patch 37/41] panic: move panic_print before kmsg dumpers Andrew Morton
@ 2022-03-23 23:07 ` Andrew Morton
2022-03-23 23:07 ` [patch 39/41] kcov: properly handle subsequent mmap calls Andrew Morton
` (2 subsequent siblings)
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:07 UTC (permalink / raw)
To: tarasmadan, glider, elver, dvyukov, bigeasy, andreyknvl, nogikh,
akpm, patches, linux-mm, mm-commits, torvalds, akpm
From: Aleksandr Nogikh <nogikh@google.com>
Subject: kcov: split ioctl handling into locked and unlocked parts
Patch series "kcov: improve mmap processing", v3.
Subsequent mmaps of the same kcov descriptor currently do not update the
virtual memory of the task and yet return 0 (success). This is
counter-intuitive and may lead to unexpected memory access errors.
Also, this unnecessarily limits the functionality of kcov to only the
simplest usage scenarios. Kcov instances are effectively forever attached
to their first address spaces and it becomes impossible to e.g. reuse the
same kcov handle in forked child processes without mmapping the memory
first. This is exactly what we tried to do in syzkaller and inadvertently
came upon this behavior.
This patch series addresses the problem described above.
This patch (of 3):
Currently all ioctls are de facto processed under a spinlock in order to
serialise them. This, however, prohibits the use of vmalloc and other
memory management functions in the implementations of those ioctls,
unnecessary complicating any further changes to the code.
Let all ioctls first be processed inside the kcov_ioctl() function which
should execute the ones that are not compatible with spinlock and then
pass control to kcov_ioctl_locked() for all other ones.
KCOV_REMOTE_ENABLE is processed both in kcov_ioctl() and
kcov_ioctl_locked() as the steps are easily separable.
Although it is still compatible with a spinlock, move KCOV_INIT_TRACE
handling to kcov_ioctl(), so that the changes from the next commit are
easier to follow.
Link: https://lkml.kernel.org/r/20220117153634.150357-1-nogikh@google.com
Link: https://lkml.kernel.org/r/20220117153634.150357-2-nogikh@google.com
Signed-off-by: Aleksandr Nogikh <nogikh@google.com>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Marco Elver <elver@google.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Taras Madan <tarasmadan@google.com>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
kernel/kcov.c | 68 ++++++++++++++++++++++++++----------------------
1 file changed, 37 insertions(+), 31 deletions(-)
--- a/kernel/kcov.c~kcov-split-ioctl-handling-into-locked-and-unlocked-parts
+++ a/kernel/kcov.c
@@ -564,31 +564,12 @@ static int kcov_ioctl_locked(struct kcov
unsigned long arg)
{
struct task_struct *t;
- unsigned long size, unused;
+ unsigned long flags, unused;
int mode, i;
struct kcov_remote_arg *remote_arg;
struct kcov_remote *remote;
- unsigned long flags;
switch (cmd) {
- case KCOV_INIT_TRACE:
- /*
- * Enable kcov in trace mode and setup buffer size.
- * Must happen before anything else.
- */
- if (kcov->mode != KCOV_MODE_DISABLED)
- return -EBUSY;
- /*
- * Size must be at least 2 to hold current position and one PC.
- * Later we allocate size * sizeof(unsigned long) memory,
- * that must not overflow.
- */
- size = arg;
- if (size < 2 || size > INT_MAX / sizeof(unsigned long))
- return -EINVAL;
- kcov->size = size;
- kcov->mode = KCOV_MODE_INIT;
- return 0;
case KCOV_ENABLE:
/*
* Enable coverage for the current task.
@@ -692,9 +673,32 @@ static long kcov_ioctl(struct file *file
struct kcov_remote_arg *remote_arg = NULL;
unsigned int remote_num_handles;
unsigned long remote_arg_size;
- unsigned long flags;
+ unsigned long size, flags;
- if (cmd == KCOV_REMOTE_ENABLE) {
+ kcov = filep->private_data;
+ switch (cmd) {
+ case KCOV_INIT_TRACE:
+ /*
+ * Enable kcov in trace mode and setup buffer size.
+ * Must happen before anything else.
+ *
+ * First check the size argument - it must be at least 2
+ * to hold the current position and one PC. Later we allocate
+ * size * sizeof(unsigned long) memory, that must not overflow.
+ */
+ size = arg;
+ if (size < 2 || size > INT_MAX / sizeof(unsigned long))
+ return -EINVAL;
+ spin_lock_irqsave(&kcov->lock, flags);
+ if (kcov->mode != KCOV_MODE_DISABLED) {
+ spin_unlock_irqrestore(&kcov->lock, flags);
+ return -EBUSY;
+ }
+ kcov->size = size;
+ kcov->mode = KCOV_MODE_INIT;
+ spin_unlock_irqrestore(&kcov->lock, flags);
+ return 0;
+ case KCOV_REMOTE_ENABLE:
if (get_user(remote_num_handles, (unsigned __user *)(arg +
offsetof(struct kcov_remote_arg, num_handles))))
return -EFAULT;
@@ -710,16 +714,18 @@ static long kcov_ioctl(struct file *file
return -EINVAL;
}
arg = (unsigned long)remote_arg;
+ fallthrough;
+ default:
+ /*
+ * All other commands can be normally executed under a spin lock, so we
+ * obtain and release it here in order to simplify kcov_ioctl_locked().
+ */
+ spin_lock_irqsave(&kcov->lock, flags);
+ res = kcov_ioctl_locked(kcov, cmd, arg);
+ spin_unlock_irqrestore(&kcov->lock, flags);
+ kfree(remote_arg);
+ return res;
}
-
- kcov = filep->private_data;
- spin_lock_irqsave(&kcov->lock, flags);
- res = kcov_ioctl_locked(kcov, cmd, arg);
- spin_unlock_irqrestore(&kcov->lock, flags);
-
- kfree(remote_arg);
-
- return res;
}
static const struct file_operations kcov_fops = {
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 39/41] kcov: properly handle subsequent mmap calls
2022-03-23 23:04 incoming Andrew Morton
` (37 preceding siblings ...)
2022-03-23 23:07 ` [patch 38/41] kcov: split ioctl handling into locked and unlocked parts Andrew Morton
@ 2022-03-23 23:07 ` Andrew Morton
2022-03-23 23:07 ` [patch 40/41] kernel/resource: fix kfree() of bootmem memory again Andrew Morton
2022-03-23 23:07 ` [patch 41/41] Revert "ubsan, kcsan: Don't combine sanitizer with kcov on clang" Andrew Morton
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:07 UTC (permalink / raw)
To: tarasmadan, glider, elver, dvyukov, bigeasy, andreyknvl, nogikh,
akpm, patches, linux-mm, mm-commits, torvalds, akpm
From: Aleksandr Nogikh <nogikh@google.com>
Subject: kcov: properly handle subsequent mmap calls
Allocate the kcov buffer during KCOV_MODE_INIT in order to untie mmapping
of a kcov instance and the actual coverage collection process. Modify
kcov_mmap, so that it can be reliably used any number of times once
KCOV_MODE_INIT has succeeded.
These changes to the user-facing interface of the tool only weaken the
preconditions, so all existing user space code should remain compatible
with the new version.
Link: https://lkml.kernel.org/r/20220117153634.150357-3-nogikh@google.com
Signed-off-by: Aleksandr Nogikh <nogikh@google.com>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Marco Elver <elver@google.com>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Taras Madan <tarasmadan@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
kernel/kcov.c | 34 +++++++++++++++-------------------
1 file changed, 15 insertions(+), 19 deletions(-)
--- a/kernel/kcov.c~kcov-properly-handle-subsequent-mmap-calls
+++ a/kernel/kcov.c
@@ -459,37 +459,28 @@ void kcov_task_exit(struct task_struct *
static int kcov_mmap(struct file *filep, struct vm_area_struct *vma)
{
int res = 0;
- void *area;
struct kcov *kcov = vma->vm_file->private_data;
unsigned long size, off;
struct page *page;
unsigned long flags;
- area = vmalloc_user(vma->vm_end - vma->vm_start);
- if (!area)
- return -ENOMEM;
-
spin_lock_irqsave(&kcov->lock, flags);
size = kcov->size * sizeof(unsigned long);
- if (kcov->mode != KCOV_MODE_INIT || vma->vm_pgoff != 0 ||
+ if (kcov->area == NULL || vma->vm_pgoff != 0 ||
vma->vm_end - vma->vm_start != size) {
res = -EINVAL;
goto exit;
}
- if (!kcov->area) {
- kcov->area = area;
- vma->vm_flags |= VM_DONTEXPAND;
- spin_unlock_irqrestore(&kcov->lock, flags);
- for (off = 0; off < size; off += PAGE_SIZE) {
- page = vmalloc_to_page(kcov->area + off);
- if (vm_insert_page(vma, vma->vm_start + off, page))
- WARN_ONCE(1, "vm_insert_page() failed");
- }
- return 0;
+ spin_unlock_irqrestore(&kcov->lock, flags);
+ vma->vm_flags |= VM_DONTEXPAND;
+ for (off = 0; off < size; off += PAGE_SIZE) {
+ page = vmalloc_to_page(kcov->area + off);
+ if (vm_insert_page(vma, vma->vm_start + off, page))
+ WARN_ONCE(1, "vm_insert_page() failed");
}
+ return 0;
exit:
spin_unlock_irqrestore(&kcov->lock, flags);
- vfree(area);
return res;
}
@@ -674,6 +665,7 @@ static long kcov_ioctl(struct file *file
unsigned int remote_num_handles;
unsigned long remote_arg_size;
unsigned long size, flags;
+ void *area;
kcov = filep->private_data;
switch (cmd) {
@@ -683,17 +675,21 @@ static long kcov_ioctl(struct file *file
* Must happen before anything else.
*
* First check the size argument - it must be at least 2
- * to hold the current position and one PC. Later we allocate
- * size * sizeof(unsigned long) memory, that must not overflow.
+ * to hold the current position and one PC.
*/
size = arg;
if (size < 2 || size > INT_MAX / sizeof(unsigned long))
return -EINVAL;
+ area = vmalloc_user(size * sizeof(unsigned long));
+ if (area == NULL)
+ return -ENOMEM;
spin_lock_irqsave(&kcov->lock, flags);
if (kcov->mode != KCOV_MODE_DISABLED) {
spin_unlock_irqrestore(&kcov->lock, flags);
+ vfree(area);
return -EBUSY;
}
+ kcov->area = area;
kcov->size = size;
kcov->mode = KCOV_MODE_INIT;
spin_unlock_irqrestore(&kcov->lock, flags);
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 40/41] kernel/resource: fix kfree() of bootmem memory again
2022-03-23 23:04 incoming Andrew Morton
` (38 preceding siblings ...)
2022-03-23 23:07 ` [patch 39/41] kcov: properly handle subsequent mmap calls Andrew Morton
@ 2022-03-23 23:07 ` Andrew Morton
2022-03-23 23:07 ` [patch 41/41] Revert "ubsan, kcsan: Don't combine sanitizer with kcov on clang" Andrew Morton
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:07 UTC (permalink / raw)
To: david, dan.j.williams, apopple, linmiaohe, akpm, patches,
linux-mm, mm-commits, torvalds, akpm
From: Miaohe Lin <linmiaohe@huawei.com>
Subject: kernel/resource: fix kfree() of bootmem memory again
Since commit ebff7d8f270d ("mem hotunplug: fix kfree() of bootmem
memory"), we could get a resource allocated during boot via
alloc_resource(). And it's required to release the resource using
free_resource(). Howerver, many people use kfree directly which will
result in kernel BUG. In order to fix this without fixing every call
site, just leak a couple of bytes in such corner case.
Link: https://lkml.kernel.org/r/20220217083619.19305-1-linmiaohe@huawei.com
Fixes: ebff7d8f270d ("mem hotunplug: fix kfree() of bootmem memory")
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Suggested-by: David Hildenbrand <david@redhat.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Alistair Popple <apopple@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
kernel/resource.c | 41 ++++++++---------------------------------
1 file changed, 8 insertions(+), 33 deletions(-)
--- a/kernel/resource.c~kernel-resource-fix-kfree-of-bootmem-memory-again
+++ a/kernel/resource.c
@@ -56,14 +56,6 @@ struct resource_constraint {
static DEFINE_RWLOCK(resource_lock);
-/*
- * For memory hotplug, there is no way to free resource entries allocated
- * by boot mem after the system is up. So for reusing the resource entry
- * we need to remember the resource.
- */
-static struct resource *bootmem_resource_free;
-static DEFINE_SPINLOCK(bootmem_resource_lock);
-
static struct resource *next_resource(struct resource *p)
{
if (p->child)
@@ -160,36 +152,19 @@ __initcall(ioresources_init);
static void free_resource(struct resource *res)
{
- if (!res)
- return;
-
- if (!PageSlab(virt_to_head_page(res))) {
- spin_lock(&bootmem_resource_lock);
- res->sibling = bootmem_resource_free;
- bootmem_resource_free = res;
- spin_unlock(&bootmem_resource_lock);
- } else {
+ /**
+ * If the resource was allocated using memblock early during boot
+ * we'll leak it here: we can only return full pages back to the
+ * buddy and trying to be smart and reusing them eventually in
+ * alloc_resource() overcomplicates resource handling.
+ */
+ if (res && PageSlab(virt_to_head_page(res)))
kfree(res);
- }
}
static struct resource *alloc_resource(gfp_t flags)
{
- struct resource *res = NULL;
-
- spin_lock(&bootmem_resource_lock);
- if (bootmem_resource_free) {
- res = bootmem_resource_free;
- bootmem_resource_free = res->sibling;
- }
- spin_unlock(&bootmem_resource_lock);
-
- if (res)
- memset(res, 0, sizeof(struct resource));
- else
- res = kzalloc(sizeof(struct resource), flags);
-
- return res;
+ return kzalloc(sizeof(struct resource), flags);
}
/* Return the conflict entry if you can't request it */
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* [patch 41/41] Revert "ubsan, kcsan: Don't combine sanitizer with kcov on clang"
2022-03-23 23:04 incoming Andrew Morton
` (39 preceding siblings ...)
2022-03-23 23:07 ` [patch 40/41] kernel/resource: fix kfree() of bootmem memory again Andrew Morton
@ 2022-03-23 23:07 ` Andrew Morton
40 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-23 23:07 UTC (permalink / raw)
To: ndesaulniers, nathan, keescook, glider, dvyukov, arnd, elver,
akpm, patches, linux-mm, mm-commits, torvalds, akpm
From: Marco Elver <elver@google.com>
Subject: Revert "ubsan, kcsan: Don't combine sanitizer with kcov on clang"
This reverts commit ea91a1d45d19469001a4955583187b0d75915759.
Since df05c0e9496c ("Documentation: Raise the minimum supported version
of LLVM to 11.0.0") the minimum Clang version is now 11.0, which fixed
the UBSAN/KCSAN vs. KCOV incompatibilities.
Link: https://bugs.llvm.org/show_bug.cgi?id=45831
Link: https://lkml.kernel.org/r/YaodyZzu0MTCJcvO@elver.google.com
Link: https://lkml.kernel.org/r/20220128105631.509772-1-elver@google.com
Signed-off-by: Marco Elver <elver@google.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
lib/Kconfig.kcsan | 11 -----------
lib/Kconfig.ubsan | 12 ------------
2 files changed, 23 deletions(-)
--- a/lib/Kconfig.kcsan~revert-ubsan-kcsan-dont-combine-sanitizer-with-kcov-on-clang
+++ a/lib/Kconfig.kcsan
@@ -10,21 +10,10 @@ config HAVE_KCSAN_COMPILER
For the list of compilers that support KCSAN, please see
<file:Documentation/dev-tools/kcsan.rst>.
-config KCSAN_KCOV_BROKEN
- def_bool KCOV && CC_HAS_SANCOV_TRACE_PC
- depends on CC_IS_CLANG
- depends on !$(cc-option,-Werror=unused-command-line-argument -fsanitize=thread -fsanitize-coverage=trace-pc)
- help
- Some versions of clang support either KCSAN and KCOV but not the
- combination of the two.
- See https://bugs.llvm.org/show_bug.cgi?id=45831 for the status
- in newer releases.
-
menuconfig KCSAN
bool "KCSAN: dynamic data race detector"
depends on HAVE_ARCH_KCSAN && HAVE_KCSAN_COMPILER
depends on DEBUG_KERNEL && !KASAN
- depends on !KCSAN_KCOV_BROKEN
select STACKTRACE
help
The Kernel Concurrency Sanitizer (KCSAN) is a dynamic
--- a/lib/Kconfig.ubsan~revert-ubsan-kcsan-dont-combine-sanitizer-with-kcov-on-clang
+++ a/lib/Kconfig.ubsan
@@ -27,16 +27,6 @@ config UBSAN_TRAP
the system. For some system builders this is an acceptable
trade-off.
-config UBSAN_KCOV_BROKEN
- def_bool KCOV && CC_HAS_SANCOV_TRACE_PC
- depends on CC_IS_CLANG
- depends on !$(cc-option,-Werror=unused-command-line-argument -fsanitize=bounds -fsanitize-coverage=trace-pc)
- help
- Some versions of clang support either UBSAN or KCOV but not the
- combination of the two.
- See https://bugs.llvm.org/show_bug.cgi?id=45831 for the status
- in newer releases.
-
config CC_HAS_UBSAN_BOUNDS
def_bool $(cc-option,-fsanitize=bounds)
@@ -46,7 +36,6 @@ config CC_HAS_UBSAN_ARRAY_BOUNDS
config UBSAN_BOUNDS
bool "Perform array index bounds checking"
default UBSAN
- depends on !UBSAN_KCOV_BROKEN
depends on CC_HAS_UBSAN_ARRAY_BOUNDS || CC_HAS_UBSAN_BOUNDS
help
This option enables detection of directly indexed out of bounds
@@ -72,7 +61,6 @@ config UBSAN_ARRAY_BOUNDS
config UBSAN_LOCAL_BOUNDS
bool "Perform array local bounds checking"
depends on UBSAN_TRAP
- depends on !UBSAN_KCOV_BROKEN
depends on $(cc-option,-fsanitize=local-bounds)
help
This option enables -fsanitize=local-bounds which traps when an
_
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-03-25 1:07 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-03-25 1:07 UTC (permalink / raw)
To: Linus Torvalds; +Cc: mm-commits, linux-mm, patches
This is the material which was staged after willystuff in linux-next.
Everything applied seamlessly on your latest, all looks well.
114 patches, based on 52deda9551a01879b3562e7b41748e85c591f14c.
Subsystems affected by this patch series:
mm/debug
mm/selftests
mm/pagecache
mm/thp
mm/rmap
mm/migration
mm/kasan
mm/hugetlb
mm/pagemap
mm/madvise
selftests
Subsystem: mm/debug
Sean Anderson <seanga2@gmail.com>:
tools/vm/page_owner_sort.c: sort by stacktrace before culling
tools/vm/page_owner_sort.c: support sorting by stack trace
Yinan Zhang <zhangyinan2019@email.szu.edu.cn>:
tools/vm/page_owner_sort.c: add switch between culling by stacktrace and txt
Chongxi Zhao <zhaochongxi2019@email.szu.edu.cn>:
tools/vm/page_owner_sort.c: support sorting pid and time
Shenghong Han <hanshenghong2019@email.szu.edu.cn>:
tools/vm/page_owner_sort.c: two trivial fixes
Yixuan Cao <caoyixuan2019@email.szu.edu.cn>:
tools/vm/page_owner_sort.c: delete invalid duplicate code
Shenghong Han <hanshenghong2019@email.szu.edu.cn>:
Documentation/vm/page_owner.rst: update the documentation
Shuah Khan <skhan@linuxfoundation.org>:
Documentation/vm/page_owner.rst: fix unexpected indentation warns
Waiman Long <longman@redhat.com>:
Patch series "mm/page_owner: Extend page_owner to show memcg information", v4:
lib/vsprintf: avoid redundant work with 0 size
mm/page_owner: use scnprintf() to avoid excessive buffer overrun check
mm/page_owner: print memcg information
mm/page_owner: record task command name
Yixuan Cao <caoyixuan2019@email.szu.edu.cn>:
mm/page_owner.c: record tgid
tools/vm/page_owner_sort.c: fix the instructions for use
Jiajian Ye <yejiajian2018@email.szu.edu.cn>:
tools/vm/page_owner_sort.c: fix comments
tools/vm/page_owner_sort.c: add a security check
tools/vm/page_owner_sort.c: support sorting by tgid and update documentation
tools/vm/page_owner_sort: fix three trivival places
tools/vm/page_owner_sort: support for sorting by task command name
tools/vm/page_owner_sort.c: support for selecting by PID, TGID or task command name
tools/vm/page_owner_sort.c: support for user-defined culling rules
Christoph Hellwig <hch@lst.de>:
mm: unexport page_init_poison
Subsystem: mm/selftests
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>:
selftest/vm: add util.h and and move helper functions there
Mike Rapoport <rppt@kernel.org>:
selftest/vm: add helpers to detect PAGE_SIZE and PAGE_SHIFT
Subsystem: mm/pagecache
Hugh Dickins <hughd@google.com>:
mm: delete __ClearPageWaiters()
mm: filemap_unaccount_folio() large skip mapcount fixup
Subsystem: mm/thp
Hugh Dickins <hughd@google.com>:
mm/thp: fix NR_FILE_MAPPED accounting in page_*_file_rmap()
Subsystem: mm/rmap
Subsystem: mm/migration
Anshuman Khandual <anshuman.khandual@arm.com>:
Patch series "mm/migration: Add trace events", v3:
mm/migration: add trace events for THP migrations
mm/migration: add trace events for base page and HugeTLB migrations
Subsystem: mm/kasan
Andrey Konovalov <andreyknvl@google.com>:
Patch series "kasan, vmalloc, arm64: add vmalloc tagging support for SW/HW_TAGS", v6:
kasan, page_alloc: deduplicate should_skip_kasan_poison
kasan, page_alloc: move tag_clear_highpage out of kernel_init_free_pages
kasan, page_alloc: merge kasan_free_pages into free_pages_prepare
kasan, page_alloc: simplify kasan_poison_pages call site
kasan, page_alloc: init memory of skipped pages on free
kasan: drop skip_kasan_poison variable in free_pages_prepare
mm: clarify __GFP_ZEROTAGS comment
kasan: only apply __GFP_ZEROTAGS when memory is zeroed
kasan, page_alloc: refactor init checks in post_alloc_hook
kasan, page_alloc: merge kasan_alloc_pages into post_alloc_hook
kasan, page_alloc: combine tag_clear_highpage calls in post_alloc_hook
kasan, page_alloc: move SetPageSkipKASanPoison in post_alloc_hook
kasan, page_alloc: move kernel_init_free_pages in post_alloc_hook
kasan, page_alloc: rework kasan_unpoison_pages call site
kasan: clean up metadata byte definitions
kasan: define KASAN_VMALLOC_INVALID for SW_TAGS
kasan, x86, arm64, s390: rename functions for modules shadow
kasan, vmalloc: drop outdated VM_KASAN comment
kasan: reorder vmalloc hooks
kasan: add wrappers for vmalloc hooks
kasan, vmalloc: reset tags in vmalloc functions
kasan, fork: reset pointer tags of vmapped stacks
kasan, arm64: reset pointer tags of vmapped stacks
kasan, vmalloc: add vmalloc tagging for SW_TAGS
kasan, vmalloc, arm64: mark vmalloc mappings as pgprot_tagged
kasan, vmalloc: unpoison VM_ALLOC pages after mapping
kasan, mm: only define ___GFP_SKIP_KASAN_POISON with HW_TAGS
kasan, page_alloc: allow skipping unpoisoning for HW_TAGS
kasan, page_alloc: allow skipping memory init for HW_TAGS
kasan, vmalloc: add vmalloc tagging for HW_TAGS
kasan, vmalloc: only tag normal vmalloc allocations
kasan, arm64: don't tag executable vmalloc allocations
kasan: mark kasan_arg_stacktrace as __initdata
kasan: clean up feature flags for HW_TAGS mode
kasan: add kasan.vmalloc command line flag
kasan: allow enabling KASAN_VMALLOC and SW/HW_TAGS
arm64: select KASAN_VMALLOC for SW/HW_TAGS modes
kasan: documentation updates
kasan: improve vmalloc tests
kasan: test: support async (again) and asymm modes for HW_TAGS
tangmeng <tangmeng@uniontech.com>:
mm/kasan: remove unnecessary CONFIG_KASAN option
Peter Collingbourne <pcc@google.com>:
kasan: update function name in comments
Andrey Konovalov <andreyknvl@google.com>:
kasan: print virtual mapping info in reports
Patch series "kasan: report clean-ups and improvements":
kasan: drop addr check from describe_object_addr
kasan: more line breaks in reports
kasan: rearrange stack frame info in reports
kasan: improve stack frame info in reports
kasan: print basic stack frame info for SW_TAGS
kasan: simplify async check in end_report()
kasan: simplify kasan_update_kunit_status() and call sites
kasan: check CONFIG_KASAN_KUNIT_TEST instead of CONFIG_KUNIT
kasan: move update_kunit_status to start_report
kasan: move disable_trace_on_warning to start_report
kasan: split out print_report from __kasan_report
kasan: simplify kasan_find_first_bad_addr call sites
kasan: restructure kasan_report
kasan: merge __kasan_report into kasan_report
kasan: call print_report from kasan_report_invalid_free
kasan: move and simplify kasan_report_async
kasan: rename kasan_access_info to kasan_report_info
kasan: add comment about UACCESS regions to kasan_report
kasan: respect KASAN_BIT_REPORTED in all reporting routines
kasan: reorder reporting functions
kasan: move and hide kasan_save_enable/restore_multi_shot
kasan: disable LOCKDEP when printing reports
Subsystem: mm/hugetlb
Mike Kravetz <mike.kravetz@oracle.com>:
Patch series "Add hugetlb MADV_DONTNEED support", v3:
mm: enable MADV_DONTNEED for hugetlb mappings
selftests/vm: add hugetlb madvise MADV_DONTNEED MADV_REMOVE test
userfaultfd/selftests: enable hugetlb remap and remove event testing
Miaohe Lin <linmiaohe@huawei.com>:
mm/huge_memory: make is_transparent_hugepage() static
Subsystem: mm/pagemap
David Hildenbrand <david@redhat.com>:
Patch series "mm: COW fixes part 1: fix the COW security issue for THP and swap", v3:
mm: optimize do_wp_page() for exclusive pages in the swapcache
mm: optimize do_wp_page() for fresh pages in local LRU pagevecs
mm: slightly clarify KSM logic in do_swap_page()
mm: streamline COW logic in do_swap_page()
mm/huge_memory: streamline COW logic in do_huge_pmd_wp_page()
mm/khugepaged: remove reuse_swap_page() usage
mm/swapfile: remove stale reuse_swap_page()
mm/huge_memory: remove stale page_trans_huge_mapcount()
mm/huge_memory: remove stale locking logic from __split_huge_pmd()
Hugh Dickins <hughd@google.com>:
mm: warn on deleting redirtied only if accounted
mm: unmap_mapping_range_tree() with i_mmap_rwsem shared
Anshuman Khandual <anshuman.khandual@arm.com>:
mm: generalize ARCH_HAS_FILTER_PGPROT
Subsystem: mm/madvise
Mauricio Faria de Oliveira <mfo@canonical.com>:
mm: fix race between MADV_FREE reclaim and blkdev direct IO read
Johannes Weiner <hannes@cmpxchg.org>:
mm: madvise: MADV_DONTNEED_LOCKED
Subsystem: selftests
Muhammad Usama Anjum <usama.anjum@collabora.com>:
selftests: vm: remove dependecy from internal kernel macros
Kees Cook <keescook@chromium.org>:
selftests: kselftest framework: provide "finished" helper
Documentation/dev-tools/kasan.rst | 17
Documentation/vm/page_owner.rst | 72 ++
arch/alpha/include/uapi/asm/mman.h | 2
arch/arm64/Kconfig | 2
arch/arm64/include/asm/vmalloc.h | 6
arch/arm64/include/asm/vmap_stack.h | 5
arch/arm64/kernel/module.c | 5
arch/arm64/mm/pageattr.c | 2
arch/arm64/net/bpf_jit_comp.c | 3
arch/mips/include/uapi/asm/mman.h | 2
arch/parisc/include/uapi/asm/mman.h | 2
arch/powerpc/mm/book3s64/trace.c | 1
arch/s390/kernel/module.c | 2
arch/x86/Kconfig | 3
arch/x86/kernel/module.c | 2
arch/x86/mm/init.c | 1
arch/xtensa/include/uapi/asm/mman.h | 2
include/linux/gfp.h | 53 +-
include/linux/huge_mm.h | 6
include/linux/kasan.h | 136 +++--
include/linux/mm.h | 5
include/linux/page-flags.h | 2
include/linux/pagemap.h | 3
include/linux/swap.h | 4
include/linux/vmalloc.h | 18
include/trace/events/huge_memory.h | 1
include/trace/events/migrate.h | 31 +
include/trace/events/mmflags.h | 18
include/trace/events/thp.h | 27 +
include/uapi/asm-generic/mman-common.h | 2
kernel/fork.c | 13
kernel/scs.c | 16
lib/Kconfig.kasan | 18
lib/test_kasan.c | 239 ++++++++-
lib/vsprintf.c | 8
mm/Kconfig | 3
mm/debug.c | 1
mm/filemap.c | 63 +-
mm/huge_memory.c | 109 ----
mm/kasan/Makefile | 2
mm/kasan/common.c | 4
mm/kasan/hw_tags.c | 243 +++++++---
mm/kasan/kasan.h | 76 ++-
mm/kasan/report.c | 516 +++++++++++----------
mm/kasan/report_generic.c | 34 -
mm/kasan/report_hw_tags.c | 1
mm/kasan/report_sw_tags.c | 16
mm/kasan/report_tags.c | 2
mm/kasan/shadow.c | 76 +--
mm/khugepaged.c | 11
mm/madvise.c | 57 +-
mm/memory.c | 129 +++--
mm/memremap.c | 2
mm/migrate.c | 4
mm/page-writeback.c | 18
mm/page_alloc.c | 270 ++++++-----
mm/page_owner.c | 86 ++-
mm/rmap.c | 62 +-
mm/swap.c | 4
mm/swapfile.c | 104 ----
mm/vmalloc.c | 167 ++++--
tools/testing/selftests/kselftest.h | 10
tools/testing/selftests/vm/.gitignore | 1
tools/testing/selftests/vm/Makefile | 1
tools/testing/selftests/vm/gup_test.c | 3
tools/testing/selftests/vm/hugetlb-madvise.c | 410 ++++++++++++++++
tools/testing/selftests/vm/ksm_tests.c | 38 -
tools/testing/selftests/vm/memfd_secret.c | 2
tools/testing/selftests/vm/run_vmtests.sh | 15
tools/testing/selftests/vm/transhuge-stress.c | 41 -
tools/testing/selftests/vm/userfaultfd.c | 72 +-
tools/testing/selftests/vm/util.h | 75 ++-
tools/vm/page_owner_sort.c | 628 +++++++++++++++++++++-----
73 files changed, 2797 insertions(+), 1288 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-04-01 18:20 Andrew Morton
2022-04-01 18:27 ` incoming Andrew Morton
0 siblings, 1 reply; 57+ messages in thread
From: Andrew Morton @ 2022-04-01 18:20 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-mm, mm-commits, patches
16 patches, based on e8b767f5e04097aaedcd6e06e2270f9fe5282696.
Subsystems affected by this patch series:
mm/madvise
ofs2
nilfs2
mm/mlock
mm/mfence
mailmap
mm/memory-failure
mm/kasan
mm/debug
mm/kmemleak
mm/damon
Subsystem: mm/madvise
Charan Teja Kalla <quic_charante@quicinc.com>:
Revert "mm: madvise: skip unmapped vma holes passed to process_madvise"
Subsystem: ofs2
Joseph Qi <joseph.qi@linux.alibaba.com>:
ocfs2: fix crash when mount with quota enabled
Subsystem: nilfs2
Ryusuke Konishi <konishi.ryusuke@gmail.com>:
Patch series "nilfs2 lockdep warning fixes":
nilfs2: fix lockdep warnings in page operations for btree nodes
nilfs2: fix lockdep warnings during disk space reclamation
nilfs2: get rid of nilfs_mapping_init()
Subsystem: mm/mlock
Hugh Dickins <hughd@google.com>:
mm/munlock: add lru_add_drain() to fix memcg_stat_test
mm/munlock: update Documentation/vm/unevictable-lru.rst
Sebastian Andrzej Siewior <bigeasy@linutronix.de>:
mm/munlock: protect the per-CPU pagevec by a local_lock_t
Subsystem: mm/kfence
Muchun Song <songmuchun@bytedance.com>:
mm: kfence: fix objcgs vector allocation
Subsystem: mailmap
Kirill Tkhai <kirill.tkhai@openvz.org>:
mailmap: update Kirill's email
Subsystem: mm/memory-failure
Rik van Riel <riel@surriel.com>:
mm,hwpoison: unmap poisoned page before invalidation
Subsystem: mm/kasan
Andrey Konovalov <andreyknvl@google.com>:
mm, kasan: fix __GFP_BITS_SHIFT definition breaking LOCKDEP
Subsystem: mm/debug
Yinan Zhang <zhangyinan2019@email.szu.edu.cn>:
tools/vm/page_owner_sort.c: remove -c option
doc/vm/page_owner.rst: remove content related to -c option
Subsystem: mm/kmemleak
Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>:
mm/kmemleak: reset tag when compare object pointer
Subsystem: mm/damon
Jonghyeon Kim <tome01@ajou.ac.kr>:
mm/damon: prevent activated scheme from sleeping by deactivated schemes
.mailmap | 1
Documentation/vm/page_owner.rst | 1
Documentation/vm/unevictable-lru.rst | 473 +++++++++++++++--------------------
fs/nilfs2/btnode.c | 23 +
fs/nilfs2/btnode.h | 1
fs/nilfs2/btree.c | 27 +
fs/nilfs2/dat.c | 4
fs/nilfs2/gcinode.c | 7
fs/nilfs2/inode.c | 167 +++++++++++-
fs/nilfs2/mdt.c | 45 ++-
fs/nilfs2/mdt.h | 6
fs/nilfs2/nilfs.h | 16 -
fs/nilfs2/page.c | 16 -
fs/nilfs2/page.h | 1
fs/nilfs2/segment.c | 9
fs/nilfs2/super.c | 5
fs/ocfs2/quota_global.c | 23 -
fs/ocfs2/quota_local.c | 2
include/linux/gfp.h | 4
mm/damon/core.c | 5
mm/gup.c | 10
mm/internal.h | 6
mm/kfence/core.c | 11
mm/kfence/kfence.h | 3
mm/kmemleak.c | 9
mm/madvise.c | 9
mm/memory.c | 12
mm/migrate.c | 2
mm/mlock.c | 46 ++-
mm/page_alloc.c | 1
mm/rmap.c | 4
mm/swap.c | 4
tools/vm/page_owner_sort.c | 6
33 files changed, 560 insertions(+), 399 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* Re: incoming
2022-04-01 18:20 incoming Andrew Morton
@ 2022-04-01 18:27 ` Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-04-01 18:27 UTC (permalink / raw)
To: Linus Torvalds, linux-mm, mm-commits, patches
Argh, messed up in-reply-to. Let me redo...
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-04-01 18:27 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-04-01 18:27 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-mm, mm-commits, patches
16 patches, based on e8b767f5e04097aaedcd6e06e2270f9fe5282696.
Subsystems affected by this patch series:
mm/madvise
ofs2
nilfs2
mm/mlock
mm/mfence
mailmap
mm/memory-failure
mm/kasan
mm/debug
mm/kmemleak
mm/damon
Subsystem: mm/madvise
Charan Teja Kalla <quic_charante@quicinc.com>:
Revert "mm: madvise: skip unmapped vma holes passed to process_madvise"
Subsystem: ofs2
Joseph Qi <joseph.qi@linux.alibaba.com>:
ocfs2: fix crash when mount with quota enabled
Subsystem: nilfs2
Ryusuke Konishi <konishi.ryusuke@gmail.com>:
Patch series "nilfs2 lockdep warning fixes":
nilfs2: fix lockdep warnings in page operations for btree nodes
nilfs2: fix lockdep warnings during disk space reclamation
nilfs2: get rid of nilfs_mapping_init()
Subsystem: mm/mlock
Hugh Dickins <hughd@google.com>:
mm/munlock: add lru_add_drain() to fix memcg_stat_test
mm/munlock: update Documentation/vm/unevictable-lru.rst
Sebastian Andrzej Siewior <bigeasy@linutronix.de>:
mm/munlock: protect the per-CPU pagevec by a local_lock_t
Subsystem: mm/kfence
Muchun Song <songmuchun@bytedance.com>:
mm: kfence: fix objcgs vector allocation
Subsystem: mailmap
Kirill Tkhai <kirill.tkhai@openvz.org>:
mailmap: update Kirill's email
Subsystem: mm/memory-failure
Rik van Riel <riel@surriel.com>:
mm,hwpoison: unmap poisoned page before invalidation
Subsystem: mm/kasan
Andrey Konovalov <andreyknvl@google.com>:
mm, kasan: fix __GFP_BITS_SHIFT definition breaking LOCKDEP
Subsystem: mm/debug
Yinan Zhang <zhangyinan2019@email.szu.edu.cn>:
tools/vm/page_owner_sort.c: remove -c option
doc/vm/page_owner.rst: remove content related to -c option
Subsystem: mm/kmemleak
Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>:
mm/kmemleak: reset tag when compare object pointer
Subsystem: mm/damon
Jonghyeon Kim <tome01@ajou.ac.kr>:
mm/damon: prevent activated scheme from sleeping by deactivated schemes
.mailmap | 1
Documentation/vm/page_owner.rst | 1
Documentation/vm/unevictable-lru.rst | 473 +++++++++++++++--------------------
fs/nilfs2/btnode.c | 23 +
fs/nilfs2/btnode.h | 1
fs/nilfs2/btree.c | 27 +
fs/nilfs2/dat.c | 4
fs/nilfs2/gcinode.c | 7
fs/nilfs2/inode.c | 167 +++++++++++-
fs/nilfs2/mdt.c | 45 ++-
fs/nilfs2/mdt.h | 6
fs/nilfs2/nilfs.h | 16 -
fs/nilfs2/page.c | 16 -
fs/nilfs2/page.h | 1
fs/nilfs2/segment.c | 9
fs/nilfs2/super.c | 5
fs/ocfs2/quota_global.c | 23 -
fs/ocfs2/quota_local.c | 2
include/linux/gfp.h | 4
mm/damon/core.c | 5
mm/gup.c | 10
mm/internal.h | 6
mm/kfence/core.c | 11
mm/kfence/kfence.h | 3
mm/kmemleak.c | 9
mm/madvise.c | 9
mm/memory.c | 12
mm/migrate.c | 2
mm/mlock.c | 46 ++-
mm/page_alloc.c | 1
mm/rmap.c | 4
mm/swap.c | 4
tools/vm/page_owner_sort.c | 6
33 files changed, 560 insertions(+), 399 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-04-08 20:08 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-04-08 20:08 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-mm, mm-commits, patches
9 patches, based on d00c50b35101b862c3db270ffeba53a63a1063d9.
Subsystems affected by this patch series:
mm/migration
mm/highmem
lz4
mm/sparsemem
mm/mremap
mm/mempolicy
mailmap
mm/memcg
MAINTAINERS
Subsystem: mm/migration
Zi Yan <ziy@nvidia.com>:
mm: migrate: use thp_order instead of HPAGE_PMD_ORDER for new page allocation.
Subsystem: mm/highmem
Max Filippov <jcmvbkbc@gmail.com>:
highmem: fix checks in __kmap_local_sched_{in,out}
Subsystem: lz4
Guo Xuenan <guoxuenan@huawei.com>:
lz4: fix LZ4_decompress_safe_partial read out of bound
Subsystem: mm/sparsemem
Waiman Long <longman@redhat.com>:
mm/sparsemem: fix 'mem_section' will never be NULL gcc 12 warning
Subsystem: mm/mremap
Paolo Bonzini <pbonzini@redhat.com>:
mmmremap.c: avoid pointless invalidate_range_start/end on mremap(old_size=0)
Subsystem: mm/mempolicy
Miaohe Lin <linmiaohe@huawei.com>:
mm/mempolicy: fix mpol_new leak in shared_policy_replace
Subsystem: mailmap
Vasily Averin <vasily.averin@linux.dev>:
mailmap: update Vasily Averin's email address
Subsystem: mm/memcg
Andrew Morton <akpm@linux-foundation.org>:
mm/list_lru.c: revert "mm/list_lru: optimize memcg_reparent_list_lru_node()"
Subsystem: MAINTAINERS
Tom Rix <trix@redhat.com>:
MAINTAINERS: add Tom as clang reviewer
.mailmap | 4 ++++
MAINTAINERS | 1 +
include/linux/mmzone.h | 11 +++++++----
lib/lz4/lz4_decompress.c | 8 ++++++--
mm/highmem.c | 4 ++--
mm/list_lru.c | 6 ------
mm/mempolicy.c | 3 ++-
mm/migrate.c | 2 +-
mm/mremap.c | 3 +++
9 files changed, 26 insertions(+), 16 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-04-15 2:12 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-04-15 2:12 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-mm, mm-commits, patches
14 patches, based on 115acbb56978941bb7537a97dfc303da286106c1.
Subsystems affected by this patch series:
MAINTAINERS
mm/tmpfs
m/secretmem
mm/kasan
mm/kfence
mm/pagealloc
mm/zram
mm/compaction
mm/hugetlb
binfmt
mm/vmalloc
mm/kmemleak
Subsystem: MAINTAINERS
Joe Perches <joe@perches.com>:
MAINTAINERS: Broadcom internal lists aren't maintainers
Subsystem: mm/tmpfs
Hugh Dickins <hughd@google.com>:
tmpfs: fix regressions from wider use of ZERO_PAGE
Subsystem: m/secretmem
Axel Rasmussen <axelrasmussen@google.com>:
mm/secretmem: fix panic when growing a memfd_secret
Subsystem: mm/kasan
Zqiang <qiang1.zhang@intel.com>:
irq_work: use kasan_record_aux_stack_noalloc() record callstack
Vincenzo Frascino <vincenzo.frascino@arm.com>:
kasan: fix hw tags enablement when KUNIT tests are disabled
Subsystem: mm/kfence
Marco Elver <elver@google.com>:
mm, kfence: support kmem_dump_obj() for KFENCE objects
Subsystem: mm/pagealloc
Juergen Gross <jgross@suse.com>:
mm, page_alloc: fix build_zonerefs_node()
Subsystem: mm/zram
Minchan Kim <minchan@kernel.org>:
mm: fix unexpected zeroed page mapping with zram swap
Subsystem: mm/compaction
Charan Teja Kalla <quic_charante@quicinc.com>:
mm: compaction: fix compiler warning when CONFIG_COMPACTION=n
Subsystem: mm/hugetlb
Mike Kravetz <mike.kravetz@oracle.com>:
hugetlb: do not demote poisoned hugetlb pages
Subsystem: binfmt
Andrew Morton <akpm@linux-foundation.org>:
revert "fs/binfmt_elf: fix PT_LOAD p_align values for loaders"
revert "fs/binfmt_elf: use PT_LOAD p_align values for static PIE"
Subsystem: mm/vmalloc
Omar Sandoval <osandov@fb.com>:
mm/vmalloc: fix spinning drain_vmap_work after reading from /proc/vmcore
Subsystem: mm/kmemleak
Patrick Wang <patrick.wang.shcn@gmail.com>:
mm: kmemleak: take a full lowmem check in kmemleak_*_phys()
MAINTAINERS | 64 ++++++++++++++++++++--------------------
arch/x86/include/asm/io.h | 2 -
arch/x86/kernel/crash_dump_64.c | 1
fs/binfmt_elf.c | 6 +--
include/linux/kfence.h | 24 +++++++++++++++
kernel/irq_work.c | 2 -
mm/compaction.c | 10 +++---
mm/filemap.c | 6 ---
mm/hugetlb.c | 17 ++++++----
mm/kasan/hw_tags.c | 5 +--
mm/kasan/kasan.h | 10 +++---
mm/kfence/core.c | 21 -------------
mm/kfence/kfence.h | 21 +++++++++++++
mm/kfence/report.c | 47 +++++++++++++++++++++++++++++
mm/kmemleak.c | 8 ++---
mm/page_alloc.c | 2 -
mm/page_io.c | 54 ---------------------------------
mm/secretmem.c | 17 ++++++++++
mm/shmem.c | 31 ++++++++++++-------
mm/slab.c | 2 -
mm/slab.h | 2 -
mm/slab_common.c | 9 +++++
mm/slob.c | 2 -
mm/slub.c | 2 -
mm/vmalloc.c | 11 ------
25 files changed, 207 insertions(+), 169 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-04-21 23:35 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-04-21 23:35 UTC (permalink / raw)
To: Linus Torvalds; +Cc: mm-commits, linux-mm, patches
13 patches, based on b253435746d9a4a701b5f09211b9c14d3370d0da.
Subsystems affected by this patch series:
mm/memory-failure
mm/memcg
mm/userfaultfd
mm/hugetlbfs
mm/mremap
mm/oom-kill
mm/kasan
kcov
mm/hmm
Subsystem: mm/memory-failure
Naoya Horiguchi <naoya.horiguchi@nec.com>:
mm/hwpoison: fix race between hugetlb free/demotion and memory_failure_hugetlb()
Xu Yu <xuyu@linux.alibaba.com>:
mm/memory-failure.c: skip huge_zero_page in memory_failure()
Subsystem: mm/memcg
Shakeel Butt <shakeelb@google.com>:
memcg: sync flush only if periodic flush is delayed
Subsystem: mm/userfaultfd
Nadav Amit <namit@vmware.com>:
userfaultfd: mark uffd_wp regardless of VM_WRITE flag
Subsystem: mm/hugetlbfs
Christophe Leroy <christophe.leroy@csgroup.eu>:
mm, hugetlb: allow for "high" userspace addresses
Subsystem: mm/mremap
Sidhartha Kumar <sidhartha.kumar@oracle.com>:
selftest/vm: verify mmap addr in mremap_test
selftest/vm: verify remap destination address in mremap_test
selftest/vm: support xfail in mremap_test
selftest/vm: add skip support to mremap_test
Subsystem: mm/oom-kill
Nico Pache <npache@redhat.com>:
oom_kill.c: futex: delay the OOM reaper to allow time for proper futex cleanup
Subsystem: mm/kasan
Vincenzo Frascino <vincenzo.frascino@arm.com>:
MAINTAINERS: add Vincenzo Frascino to KASAN reviewers
Subsystem: kcov
Aleksandr Nogikh <nogikh@google.com>:
kcov: don't generate a warning on vm_insert_page()'s failure
Subsystem: mm/hmm
Alistair Popple <apopple@nvidia.com>:
mm/mmu_notifier.c: fix race in mmu_interval_notifier_remove()
MAINTAINERS | 1
fs/hugetlbfs/inode.c | 9 -
include/linux/hugetlb.h | 6 +
include/linux/memcontrol.h | 5
include/linux/mm.h | 8 +
include/linux/sched.h | 1
include/linux/sched/mm.h | 8 +
kernel/kcov.c | 7 -
mm/hugetlb.c | 10 +
mm/memcontrol.c | 12 ++
mm/memory-failure.c | 158 ++++++++++++++++++++++--------
mm/mmap.c | 8 -
mm/mmu_notifier.c | 14 ++
mm/oom_kill.c | 54 +++++++---
mm/userfaultfd.c | 15 +-
mm/workingset.c | 2
tools/testing/selftests/vm/mremap_test.c | 85 +++++++++++++++-
tools/testing/selftests/vm/run_vmtests.sh | 11 +-
18 files changed, 327 insertions(+), 87 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
* incoming
@ 2022-04-27 19:41 Andrew Morton
0 siblings, 0 replies; 57+ messages in thread
From: Andrew Morton @ 2022-04-27 19:41 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-mm, mm-commits, patches
2 patches, based on d615b5416f8a1afeb82d13b238f8152c572d59c0.
Subsystems affected by this patch series:
mm/kasan
mm/debug
Subsystem: mm/kasan
Zqiang <qiang1.zhang@intel.com>:
kasan: prevent cpu_quarantine corruption when CPU offline and cache shrink occur at same time
Subsystem: mm/debug
Akira Yokosawa <akiyks@gmail.com>:
docs: vm/page_owner: use literal blocks for param description
Documentation/vm/page_owner.rst | 5 +++--
mm/kasan/quarantine.c | 7 +++++++
2 files changed, 10 insertions(+), 2 deletions(-)
^ permalink raw reply [flat|nested] 57+ messages in thread
end of thread, other threads:[~2022-04-27 19:41 UTC | newest]
Thread overview: 57+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-23 23:04 incoming Andrew Morton
2022-03-23 23:05 ` [patch 01/41] proc: alloc PATH_MAX bytes for /proc/${pid}/fd/ symlinks Andrew Morton
2022-03-23 23:05 ` [patch 02/41] proc/vmcore: fix possible deadlock on concurrent mmap and read Andrew Morton
2022-03-23 23:05 ` [patch 03/41] proc/vmcore: fix vmcore_alloc_buf() kernel-doc comment Andrew Morton
2022-03-23 23:05 ` [patch 04/41] linux/types.h: remove unnecessary __bitwise__ Andrew Morton
2022-03-23 23:05 ` [patch 05/41] Documentation/sparse: add hints about __CHECKER__ Andrew Morton
2022-03-23 23:05 ` [patch 06/41] kernel/ksysfs.c: use helper macro __ATTR_RW Andrew Morton
2022-03-23 23:05 ` [patch 07/41] Kconfig.debug: make DEBUG_INFO selectable from a choice Andrew Morton
2022-03-23 23:05 ` [patch 08/41] include: drop pointless __compiler_offsetof indirection Andrew Morton
2022-03-23 23:05 ` [patch 09/41] ilog2: force inlining of __ilog2_u32() and __ilog2_u64() Andrew Morton
2022-03-23 23:05 ` [patch 10/41] bitfield: add explicit inclusions to the example Andrew Morton
2022-03-23 23:05 ` [patch 11/41] lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option Andrew Morton
2022-03-23 23:05 ` [patch 12/41] lib: bitmap: fix many kernel-doc warnings Andrew Morton
2022-03-23 23:05 ` [patch 13/41] checkpatch: prefer MODULE_LICENSE("GPL") over MODULE_LICENSE("GPL v2") Andrew Morton
2022-03-23 23:05 ` [patch 14/41] checkpatch: add --fix option for some TRAILING_STATEMENTS Andrew Morton
2022-03-23 23:06 ` [patch 15/41] checkpatch: add early_param exception to blank line after struct/function test Andrew Morton
2022-03-23 23:06 ` [patch 16/41] checkpatch: use python3 to find codespell dictionary Andrew Morton
2022-03-23 23:06 ` [patch 17/41] init: use ktime_us_delta() to make initcall_debug log more precise Andrew Morton
2022-03-23 23:06 ` [patch 18/41] init.h: improve __setup and early_param documentation Andrew Morton
2022-03-23 23:06 ` [patch 19/41] init/main.c: return 1 from handled __setup() functions Andrew Morton
2022-03-23 23:06 ` [patch 20/41] fs/pipe: use kvcalloc to allocate a pipe_buffer array Andrew Morton
2022-03-23 23:06 ` [patch 21/41] fs/pipe.c: local vars have to match types of proper pipe_inode_info fields Andrew Morton
2022-03-23 23:06 ` [patch 22/41] minix: fix bug when opening a file with O_DIRECT Andrew Morton
2022-03-23 23:06 ` [patch 23/41] fat: use pointer to simple type in put_user() Andrew Morton
2022-03-23 23:06 ` [patch 24/41] cgroup: use irqsave in cgroup_rstat_flush_locked() Andrew Morton
2022-03-23 23:06 ` [patch 25/41] kexec: make crashk_res, crashk_low_res and crash_notes symbols always visible Andrew Morton
2022-03-23 23:06 ` [patch 26/41] riscv: mm: init: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef Andrew Morton
2022-03-23 23:06 ` [patch 27/41] x86/setup: " Andrew Morton
2022-03-23 23:06 ` [patch 28/41] arm64: mm: " Andrew Morton
2022-03-23 23:06 ` [patch 29/41] docs: kdump: update description about sysfs file system support Andrew Morton
2022-03-23 23:06 ` [patch 30/41] docs: kdump: add scp example to write out the dump file Andrew Morton
2022-03-23 23:06 ` [patch 31/41] panic: unset panic_on_warn inside panic() Andrew Morton
2022-03-23 23:06 ` [patch 32/41] ubsan: no need to unset panic_on_warn in ubsan_epilogue() Andrew Morton
2022-03-23 23:06 ` [patch 33/41] kasan: no need to unset panic_on_warn in end_report() Andrew Morton
2022-03-23 23:07 ` [patch 34/41] taskstats: remove unneeded dead assignment Andrew Morton
2022-03-23 23:07 ` [patch 35/41] docs: sysctl/kernel: add missing bit to panic_print Andrew Morton
2022-03-23 23:07 ` [patch 36/41] panic: add option to dump all CPUs backtraces in panic_print Andrew Morton
2022-03-23 23:07 ` [patch 37/41] panic: move panic_print before kmsg dumpers Andrew Morton
2022-03-23 23:07 ` [patch 38/41] kcov: split ioctl handling into locked and unlocked parts Andrew Morton
2022-03-23 23:07 ` [patch 39/41] kcov: properly handle subsequent mmap calls Andrew Morton
2022-03-23 23:07 ` [patch 40/41] kernel/resource: fix kfree() of bootmem memory again Andrew Morton
2022-03-23 23:07 ` [patch 41/41] Revert "ubsan, kcsan: Don't combine sanitizer with kcov on clang" Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2022-04-27 19:41 incoming Andrew Morton
2022-04-21 23:35 incoming Andrew Morton
2022-04-15 2:12 incoming Andrew Morton
2022-04-08 20:08 incoming Andrew Morton
2022-04-01 18:27 incoming Andrew Morton
2022-04-01 18:20 incoming Andrew Morton
2022-04-01 18:27 ` incoming Andrew Morton
2022-03-25 1:07 incoming Andrew Morton
2022-03-22 21:38 incoming Andrew Morton
2022-03-16 23:14 incoming Andrew Morton
2022-03-05 4:28 incoming Andrew Morton
2022-02-26 3:10 incoming Andrew Morton
2022-02-12 0:27 incoming Andrew Morton
2022-02-12 2:02 ` incoming Linus Torvalds
2022-02-12 5:24 ` incoming Andrew Morton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).