From: Ian Rogers <irogers@google.com>
To: Kees Cook <kees@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Miguel Ojeda <ojeda@kernel.org>,
"Rafael J . Wysocki" <rafael@kernel.org>,
Danilo Krummrich <dakr@kernel.org>
Cc: "Nathan Chancellor" <nathan@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Miguel Ojeda" <miguel.ojeda.sandonis@gmail.com>,
"Christian König" <christian.koenig@amd.com>,
"Zhihao Cheng" <chengzhihao1@huawei.com>,
"Zhongqiu Han" <zhongqiu.han@oss.qualcomm.com>,
"Sumanth Korikkar" <sumanthk@linux.ibm.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
driver-core@lists.linux.dev, llvm@lists.linux.dev,
linux-hardening@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-doc@vger.kernel.org, linux-acpi@vger.kernel.org,
linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-sh@vger.kernel.org, linux-s390@vger.kernel.org,
gfs2@lists.linux.dev, xen-devel@lists.xenproject.org,
linux-mtd@lists.infradead.org, amd-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
"Ian Rogers" <irogers@google.com>
Subject: [PATCH v2 0/9] Add __must_init and require explicit kobj_type::release
Date: Tue, 27 Oct 2026 15:38:35 -0700 [thread overview]
Message-ID: <20261027223847.652884-1-irogers@google.com> (raw)
Clang supports the 'require_explicit_initialization' attribute on struct
fields to enforce that the field is explicitly initialized when an
aggregate object is constructed, emitting -Wuninitialized-explicit-init
(enabled by default) if the field is omitted.
Following discussion at the Linux Plumbers Conference [1], patch 1 adds
the attribute to include/linux/compiler_attributes.h as __must_init. In
v1 it was called __require_explicit_initialization. Kees picked up that
patch with a first seq_file user [2], and in that thread Greg suggested
the shorter __must_init spelling, which Kees and Miguel agreed to. As
the attribute did not land in the v7.4 merge window, Kees asked that
this series carry the renamed attribute. The Acked-by/Reviewed-by tags
on patch 1 were given for the original spelling; the rename is
mechanical.
As Documentation/core-api/kobject.rst notes:
"One important point cannot be overstated: every kobject must have a
release() method, and the kobject must persist (in a consistent state)
until that method is called. If these constraints are not met, the
code is flawed."
Annotating struct kobj_type::release caught struct kobj_type definitions
across the tree that omitted .release:
- Patches 2-8 fix struct kobj_type definitions where dynamically
allocated kobjects, ksets, or enclosing structures were either leaked
on kobject_put(), freed prematurely before kobject release, or missing
proper static initializers.
- Patch 9 annotates struct kobj_type::release with __must_init and
explicitly sets .release = NULL (with explanatory comments prefixed
with "Pre-existing:") on the remaining legacy struct kobj_type
definitions whose kobjects are static, per-CPU, permanent firmware
structures, or embedded in devm- or parent-managed structures.
Note on tool use: An LLM coding assistant was used to help audit the
compiler diagnostics across the tree, draft the fixes and changelog
descriptions, and verify builds and review feedback.
Changes in v2:
- Rebased on v7.3-16928-g83f32c773255 (v7.4 merge window).
- Patch 1: Rename __require_explicit_initialization to __must_init per
Greg Kroah-Hartman; document the Clang >= 20 requirement per Miguel
Ojeda; note the Clang gap for file-scope objects without an
initializer reported by Kees Cook; add tags from v1 and from Kees's
posting.
- Move LLM assistance attribution from Assisted-by tags to this cover
letter per commit 1e035297ffda ("docs: remove Assisted-by
references").
- Patch 4 (cpufreq): Use "cpufreq: governor:" prefix, drop Fixes tag,
fix typo, and remove the redundant runtime assignment in
cpufreq_dbs_governor_init() per Zhongqiu Han.
- Dropped v1 patch 5 (ACPI: CPPC), already fixed upstream by
commit 27954e29d7de ("ACPI: CPPC: Release CPC descriptors through
kobject").
- Patch 5 (dlm): Call kobject_del() before dlm_recoverd_stop() in
release_lockspace() and the new_lockspace() error path, and wait on a
new ls_kobj_done completion before freeing the lockspace or dropping
the module reference, avoiding races with delayed kobject release.
- Dropped v1 patch 8 (s390/sclp_mem) per Sumanth Korikkar: the
/sys/firmware/memory/memoryX kobjects are permanent, so sclp_mem.c is
folded into patch 9 with .release = NULL.
- Patch 7 (ubifs): Add Tested-by and Reviewed-by from Zhihao Cheng.
- Patch 8 (drm/amdkfd): Check q->kobj.state_in_sysfs before
kobject_del() in kfd_procfs_del_queue().
- Patch 9 (kobject): Cover sclp_mem.c and the new amdgpu_ualink.c
ualink_xcp_info_ktype, fix the overlay-sysfs.c comment, and prefix
legacy .release = NULL comments with "Pre-existing:".
- Patch 9 (kobject): The ioat, kunpeng_hccs and omapfb display comments
now say that the existing teardown can use-after-free under
CONFIG_DEBUG_KOBJECT_RELEASE (reported by Sashiko). Fixing those
drivers is left to follow-up patches.
v1: https://lore.kernel.org/all/20261013223946.1836757-1-irogers@google.com/
[1] https://lpc.events/event/20/contributions/2392/
[2] https://lore.kernel.org/lkml/20261014225811.i.852-kees@kernel.org/
Ian Rogers (9):
Compiler Attributes: Add __must_init macro
powerpc/secvar: Add missing kobject release callback to secvar_ktype
sh: sq: Add missing kobject release callback to ktype_percpu_entry
cpufreq: governor: Initialize kobj_type release callback statically
dlm: Free dlm_ls in kobject release callback
xen/sys-hypervisor: Add release callback to hyp_sysfs_kobj_type
ubifs: sysfs: Use kset_create_and_add() for ubifs_kset
drm/amdkfd: Free queue in procfs_queue_type kobject release callback
kobject: Require explicit initialization of struct kobj_type::release
Documentation/conf.py | 1 +
arch/arm64/kernel/cpuinfo.c | 5 ++++
arch/powerpc/kernel/secvar-sysfs.c | 6 +++++
arch/sh/kernel/cpu/sh4/sq.c | 6 +++++
drivers/acpi/sysfs.c | 2 ++
drivers/cpufreq/cpufreq_conservative.c | 5 +++-
drivers/cpufreq/cpufreq_governor.c | 4 +--
drivers/cpufreq/cpufreq_governor.h | 1 +
drivers/cpufreq/cpufreq_ondemand.c | 5 +++-
drivers/dma/ioat/sysfs.c | 7 +++++
drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c | 5 ++++
drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c | 10 +++++++
drivers/gpu/drm/amd/amdkfd/kfd_process.c | 12 ++++++---
drivers/gpu/drm/amd/amdkfd/kfd_queue.c | 5 +++-
drivers/infiniband/hw/hfi1/sysfs.c | 5 ++++
drivers/infiniband/hw/usnic/usnic_ib_sysfs.c | 2 ++
drivers/parisc/pdc_stable.c | 5 ++++
drivers/power/supply/ab8500_fg.c | 5 ++++
drivers/s390/char/sclp_mem.c | 2 ++
drivers/soc/hisilicon/kunpeng_hccs.c | 21 +++++++++++++++
.../fbdev/omap2/omapfb/dss/display-sysfs.c | 7 +++++
.../fbdev/omap2/omapfb/dss/manager-sysfs.c | 5 ++++
.../fbdev/omap2/omapfb/dss/overlay-sysfs.c | 5 ++++
drivers/xen/sys-hypervisor.c | 6 +++++
fs/dlm/dlm_internal.h | 1 +
fs/dlm/lockspace.c | 26 ++++++++++++++-----
fs/erofs/sysfs.c | 10 +++++++
fs/f2fs/sysfs.c | 15 +++++++++++
fs/ocfs2/cluster/masklog.c | 5 ++++
fs/ubifs/sysfs.c | 24 +++++------------
include/linux/compiler_attributes.h | 12 +++++++++
include/linux/kobject.h | 2 +-
scripts/checkpatch.pl | 1 +
tools/lib/python/kdoc/xforms_lists.py | 1 +
34 files changed, 202 insertions(+), 32 deletions(-)
base-commit: 83f32c773255720a661aa45d83e36278135f23f5
--
2.56.0.313.g2479322e68-goog
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next reply other threads:[~2026-10-27 22:39 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 22:38 Ian Rogers [this message]
2026-10-27 22:38 ` [PATCH v2 1/9] Compiler Attributes: Add __must_init macro Ian Rogers
2026-10-27 22:38 ` [PATCH v2 2/9] powerpc/secvar: Add missing kobject release callback to secvar_ktype Ian Rogers
2026-10-27 22:38 ` [PATCH v2 3/9] sh: sq: Add missing kobject release callback to ktype_percpu_entry Ian Rogers
2026-10-27 22:38 ` [PATCH v2 4/9] cpufreq: governor: Initialize kobj_type release callback statically Ian Rogers
2026-10-27 22:38 ` [PATCH v2 5/9] dlm: Free dlm_ls in kobject release callback Ian Rogers
2026-10-27 22:38 ` [PATCH v2 6/9] xen/sys-hypervisor: Add release callback to hyp_sysfs_kobj_type Ian Rogers
2026-10-27 22:38 ` [PATCH v2 7/9] ubifs: sysfs: Use kset_create_and_add() for ubifs_kset Ian Rogers
2026-10-27 22:38 ` [PATCH v2 8/9] drm/amdkfd: Free queue in procfs_queue_type kobject release callback Ian Rogers
2026-10-27 23:15 ` Felix Kuehling
2026-10-27 22:38 ` [PATCH v2 9/9] kobject: Require explicit initialization of struct kobj_type::release Ian Rogers
2026-10-27 22:56 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261027223847.652884-1-irogers@google.com \
--to=irogers@google.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=chengzhihao1@huawei.com \
--cc=christian.koenig@amd.com \
--cc=dakr@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=driver-core@lists.linux.dev \
--cc=gfs2@lists.linux.dev \
--cc=gregkh@linuxfoundation.org \
--cc=justinstitt@google.com \
--cc=kees@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=llvm@lists.linux.dev \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=morbo@google.com \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=ojeda@kernel.org \
--cc=rafael@kernel.org \
--cc=sumanthk@linux.ibm.com \
--cc=xen-devel@lists.xenproject.org \
--cc=zhongqiu.han@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox