Re: [PATCH 06/11] moduleparam: Add seq_buf-based .get callback alongside .get_str
Petr Pavlu <[email protected]> Mon, 25 May 2026 18:19:19 +0200
| Newsgroups | org.infradead.lists.linux-um,dev.linux.lists.virtualization,org.freedesktop.lists.dri-devel,org.freedesktop.lists.intel-gfx,org.kernel.vger.dmaengine,org.kernel.vger.kvm,org.kernel.vger.linux-acpi,org.kernel.vger.linux-arch,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-hardening,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media,org.kernel.vger.linux-modules,org.kernel.vger.linux-pci,org.kernel.vger.linux-pm,org.kernel.vger.linux-rdma,org.kernel.vger.linux-scsi,org.kernel.vger.linux-security-module,org.kernel.vger.linux-serial,org.kernel.vger.linux-usb,org.kernel.vger.netdev,org.kvack.linux-mm,org.nongnu.qemu-devel,org.ozlabs.lists.linuxppc-dev |
|---|---|
| Message-ID | <[email protected]> |
On 5/21/26 3:33 PM, Kees Cook wrote: > Add a new struct kernel_param_ops::get callback whose signature > takes a struct seq_buf instead of a raw char buffer: > > int (*get)(struct seq_buf *sb, const struct kernel_param *kp); > > The previously-legacy .get field is now .get_str (char *buffer); > .get is the new seq_buf-aware form. param_attr_show() prefers .get > when set, otherwise falls back to .get_str. WARN_ON_ONCE() if both > are set. Return contract for .get: > > < 0 : errno propagated to userspace; seq_buf contents discarded > = 0 : success; length derived from seq_buf_used() > > 0 : forbidden; the dispatcher WARN_ON_ONCE()s and treats as 0 > > The default policy on seq_buf_has_overflowed() is silent truncation, > matching scnprintf()/sysfs_emit() behaviour. Callbacks that want a > specific overflow errno can check seq_buf_has_overflowed() and > return their preferred error. > > No callbacks use .get yet; the legacy path is still the only one in use > after this commit. A subsequent commit teaches DEFINE_KERNEL_PARAM_OPS > to route initializers by type. > > Signed-off-by: Kees Cook <[email protected]> Reviewed-by: Petr Pavlu <[email protected]> -- Petr