Re: [ndctl PATCH v3 2/2] daxctl, util/sysfs: skip module probe-insert when driver is builtin or live
Jonathan Cameron <[email protected]>
| Newsgroups | dev.linux.lists.nvdimm,org.kernel.vger.linux-cxl |
|---|---|
| Organization | Qualcomm |
| Message-ID | <[email protected]> |
On Thu, 18 Jun 2026 17:06:53 +0800 Chen Pei <[email protected]> wrote: > kmod_module_probe_insert_module() is supposed to return 0 for builtin > modules, but only when libkmod can locate the modules.builtin index. If > the index is missing (e.g. a kernel built with the driver as builtin > but installed without running modules_install), libkmod falls through > to the real init_module() syscall and returns an error such as -ENOENT, > producing a spurious "insert failure" even though the driver is already > part of the running kernel. > > Add a helper util_kmod_skip_probe_insert() that returns true when the > module state is KMOD_MODULE_BUILTIN or KMOD_MODULE_LIVE. As an > additional heuristic, treat KMOD_MODULE_COMING as builtin when > /sys/module/<name>/ exists but the initstate file does not - this is > the exact pattern libkmod's sysfs fallback emits for builtin drivers > when the modules.builtin index is unavailable. The pattern mirrors the > KMOD_MODULE_LIVE / KMOD_MODULE_BUILTIN check already used by ndctl's > own test/core.c (see test/core.c:218-236). > > The helper also returns the observed libkmod state via an out parameter > so daxctl_insert_kmod_for_mode() can distinguish LIVE (retain the kmod > reference in dev->module) from BUILTIN (drop it, since builtin drivers > cannot be unloaded) without re-reading /sys/module/<name>/initstate. > __util_bind() passes NULL since it does not need the state. > > Reported-by: Jonathan Cameron <[email protected]> > Suggested-by: Alison Schofield <[email protected]> > Reviewed-by: Dave Jiang <[email protected]> > Signed-off-by: Chen Pei <[email protected]> I'm not set up to test this right now but fix looks good to me. So a tentative Reviewed-by: Jonathan Cameron <[email protected]>