From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 67112CD5BAF for ; Thu, 21 May 2026 17:45:11 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 70E5410E53C; Thu, 21 May 2026 17:45:10 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="hdSpjgdg"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6324B10E536; Thu, 21 May 2026 17:45:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1779385509; x=1810921509; h=from:to:cc:subject:in-reply-to:references:date: message-id:mime-version; bh=sU3q4ei5VqXFeemg2pdBcbpXy8Z2qTRY4hHBwMHyr+A=; b=hdSpjgdgQy8Dv11B1A29+atwuX3QoSxvUkfTpEvpFUdvBtjPMLJTzhhu VhOaBKJIEKnGMXAFUNdgagcvty9PkpedpAtUaw+fZxyQkfgEvbb8NQlGl g2lb1lBIxqUnjCov5+BoTJC9CjVwSX1Ydjf98EpvXJt42lZio3SbIUrBb YWyflp2oWcgolFiSMmQp9VXPl8eYoiBlOTkTzI9RSFCDyC87zY1wl32Er ZjwANT+kGCSh8pwWFRm9Aw47sq1MB9gKYhl3mw8lDUQ4d8flduOAxnQP+ CRFyE9DWx3vWFA1aueFpvxigUcooyj4Njx4seuoZkCpfd1bkT3ram7ea/ w==; X-CSE-ConnectionGUID: M1SfI3XJRmizjgwJPlXZHw== X-CSE-MsgGUID: M3v0VO2UQYCSkAB4IxVTqg== X-IronPort-AV: E=McAfee;i="6800,10657,11793"; a="105773549" X-IronPort-AV: E=Sophos;i="6.24,160,1774335600"; d="scan'208";a="105773549" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 May 2026 10:45:08 -0700 X-CSE-ConnectionGUID: sVvxl8W3QX2Yx8AK13BLJw== X-CSE-MsgGUID: XZM0S5M8QcaTj4wM3UKoHA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,160,1774335600"; d="scan'208";a="236347421" Received: from hrotuna-mobl2.ger.corp.intel.com (HELO localhost) ([10.245.244.167]) by fmviesa010-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 May 2026 10:44:41 -0700 From: Jani Nikula To: Kees Cook , Luis Chamberlain Cc: Kees Cook , Pengpeng Hou , Petr Pavlu , Richard Weinberger , Anton Ivanov , Johannes Berg , "Rafael J. Wysocki" , Len Brown , Corey Minyard , Gabriel Somlo , "Michael S. Tsirkin" , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Simona Vetter , Bart Van Assche , Jason Gunthorpe , Leon Romanovsky , Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Bjorn Helgaas , Hannes Reinecke , "James E.J. Bottomley" , "Martin K. Petersen" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Greg Kroah-Hartman , Jiri Slaby , Alan Stern , Jason Wang , Xuan Zhuo , Eugenio =?utf-8?Q?P=C3=A9rez?= , Jason Baron , Jim Cromie , Tiwei Bie , Benjamin Berg , Ilpo =?utf-8?Q?J=C3=A4rvinen?= , "David E. Box" , "Maciej W. Rozycki" , Srinivas Pandruvada , Peter Zijlstra , Heiko Carstens , Vasily Gorbik , Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Vinod Koul , Frank Li , Daniel Gomez , Sami Tolvanen , Aaron Tomlin , Alexander Potapenko , Marco Elver , Dmitry Vyukov , Andrew Morton , John Johansen , Paul Moore , James Morris , "Serge E. Hallyn" , Andy Shevchenko , Georgia Garcia , kvm@vger.kernel.org, dmaengine@vger.kernel.org, linux-modules@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, apparmor@lists.ubuntu.com, linux-security-module@vger.kernel.org, linux-um@lists.infradead.org, linux-acpi@vger.kernel.org, openipmi-developer@lists.sourceforge.net, qemu-devel@nongnu.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org, linux-scsi@vger.kernel.org, linux-pm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-serial@vger.kernel.org, linux-usb@vger.kernel.org, usb-storage@lists.one-eyed-alien.net, virtualization@lists.linux.dev, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: Re: [PATCH 10/11] treewide: Manually convert custom kernel_param_ops .get callbacks In-Reply-To: <20260521133326.2465264-10-kees@kernel.org> Organization: Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs Bertel Jungin Aukio 5, 02600 Espoo, Finland References: <20260521133315.work.845-kees@kernel.org> <20260521133326.2465264-10-kees@kernel.org> Date: Thu, 21 May 2026 20:44:37 +0300 Message-ID: <5cd0c8dde3687d0aea765f2f21f5e1cd8ba83028@intel.com> MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On Thu, 21 May 2026, Kees Cook 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