Re: [PATCH 10/11] treewide: Manually convert custom kernel_param_ops .get callbacks
Jani Nikula <[email protected]>
| Newsgroups | gmane.comp.freedesktop.xorg.drivers.intel,gmane.comp.emulators.kvm.devel,gmane.linux.kernel.modules,gmane.linux.kernel.mm,gmane.comp.security.apparmor,gmane.linux.kernel.lsm,gmane.linux.uml.devel,gmane.linux.acpi.devel,gmane.linux.kernel.openipmi,gmane.comp.emulators.qemu,gmane.comp.video.dri.devel,gmane.linux.drivers.rdma,gmane.linux.drivers.video-input-infrastructure,gmane.linux.kernel.pci,gmane.linux.scsi,gmane.linux.power-management.general,gmane.linux.ports.ppc64.devel,gmane.linux.serial,gmane.linux.usb.general,gmane.linux.kernel,gmane.linux.kernel.cross-arch,gmane.linux.network,gmane.linux.file-systems |
|---|---|
| Organization | Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs Bertel Jungin Aukio 5, 02600 Espoo, Finland |
| Message-ID | <[email protected]> |
On Thu, 21 May 2026, Kees Cook <[email protected]> wrote: > diff --git a/drivers/gpu/drm/i915/i915_mitigations.c b/drivers/gpu/drm/i915/i915_mitigations.c > index 6061eae84e9c..99cb38f355b6 100644 > --- a/drivers/gpu/drm/i915/i915_mitigations.c > +++ b/drivers/gpu/drm/i915/i915_mitigations.c > @@ -95,33 +95,37 @@ static int mitigations_set(const char *val, const struct kernel_param *kp) > return 0; > } > > -static int mitigations_get(char *buffer, const struct kernel_param *kp) > +static int mitigations_get(struct seq_buf *buffer, > + const struct kernel_param *kp) > { > unsigned long local = READ_ONCE(mitigations); > - int count, i; > bool enable; > + int i; I'm fine with what you have, and I can do these as a follow-up later if it's too much trouble, but I suggest something like this: const char *sep = ""; > > - if (!local) > - return scnprintf(buffer, PAGE_SIZE, "%s\n", "off"); > + if (!local) { > + seq_buf_printf(buffer, "%s\n", "off"); > + return 0; > + } > > if (local & BIT(BITS_PER_LONG - 1)) { > - count = scnprintf(buffer, PAGE_SIZE, "%s,", "auto"); > + seq_buf_printf(buffer, "%s,", "auto"); seq_buf_printf(buffer, "%s%s", sep, "auto"); sep = ","; (In the printf the sep is just for future expansion, though I don't expect one.) > enable = false; > } else { > enable = true; > - count = 0; > } > > for (i = 0; i < ARRAY_SIZE(names); i++) { > if ((local & BIT(i)) != enable) > continue; > - > - count += scnprintf(buffer + count, PAGE_SIZE - count, > - "%s%s,", enable ? "" : "!", names[i]); > + seq_buf_printf(buffer, "%s%s,", enable ? "" : "!", names[i]); seq_buf_printf(buffer, "%s%s%s", sep, enable ? "" : "!", names[i]); sep = ","; > } seq_buf_puts(buffer, "\n"); > > - buffer[count - 1] = '\n'; > - return count; > + /* Replace the trailing comma with a newline. */ > + if (!seq_buf_has_overflowed(buffer) && buffer->len > 0 && > + buffer->buffer[buffer->len - 1] == ',') > + buffer->buffer[buffer->len - 1] = '\n'; Drop the above. I.e. keep track of sep while printing to avoid removing it later. BR, Jani. > + > + return 0; > } > > static DEFINE_KERNEL_PARAM_OPS(ops, mitigations_set, mitigations_get); -- Jani Nikula, Intel