From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ot1-f53.google.com (mail-ot1-f53.google.com [209.85.210.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 27C3958FD3E for ; Wed, 23 Sep 2026 22:35:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790202951; cv=none; b=I8v6Jn87gqdWv8j8cox2ACm7/doUBDpZOLOSuyfoLYHTVonw1z1uuq5J/fEPuWFeBHnPI+B/VzDz7VCHuvilJaGQK9rEhnLS6uMylbLZnpLBBeG9Ft2Pifjhox5/44+AGRy28jJnOtg7KfxtkW7zljs2hV5BLRpMFStF5kucGpQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790202951; c=relaxed/simple; bh=BFGfVMUIUlRIm2JaJRLPto2g8rjGdT6CEXAVSmQr/a8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IYBKm/+8lt5DeE1BzVc5So3axQcb+poL8r9i/dgHnHZgRwyAVvdJuV8DHLPLC3f7AGUfbwgzVqtllvdLIqto9SXB2A8akJ+ED/r5sKTnUcJ7bqEk8KcnRX5W5GckTakQ/gODVyDVSkkSgYy96vN8xRop0GnGWFUN4S04SiNWfJo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=N3kDHqoa; arc=none smtp.client-ip=209.85.210.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="N3kDHqoa" Received: by mail-ot1-f53.google.com with SMTP id 46e09a7af769-8121458be2dso410007a34.0 for ; Wed, 23 Sep 2026 15:35:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790202945; x=1790807745; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=YFfpY9RKNpyGZptjFUYIPxK+/JHfBQcKAOCTZ1dhBB8=; b=N3kDHqoa2UumT3DmpHSGMl+xFCnOjVtqqX/XNGPRSmW3yxsckmlzUTI6Wh196vIcyY AWwVApECv7CxQkFG4MV5Etn1jzNig1iVBsCjMguzuFUx8M2PzWTe0cwzxCOQDO18UAes 1vPJQ9f+nbjVRdMq8cjdga7WUo9rITFxmPCKLlOhp+kXLKS4CvS760aPZQrgJDgqaBkO k301DpnnLxN0X43q+nJDE/BOTVk6Ie6KEaOd1jvbTAAR3j4/vAYcv4zmO3T9aaSWyyX2 jnG3oCGGL0wBQ/Ra3LDX/AJrRrc71h3bb6lGlzAZfSMedhEaNdAdEe7QdhplLKtgJHFD PZHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790202945; x=1790807745; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=YFfpY9RKNpyGZptjFUYIPxK+/JHfBQcKAOCTZ1dhBB8=; b=L500aM5M56U8hJPnce8haEUFpcXi3W+y/Wq2+aWPqtaZWMvABFZET/oJcjey+HXFcd A4IiRmIp1L27fVixMSqMZZkrbAdswg8UXC1m4d3XqfZp/aAHdpDG1nGAzHvgyFp7ytWr NlBqEAYuTHWOOY+dogR7yV9hx+Gr9U58NkJtNSozUBCUD+HUDfiQzVcB8s7R9xt1Dy9U XXeObP3xNjtssAbDIaNyOLHoqqbPRrNwU8NbSW3lhV6k0K9I4Xt7e1jJyFOr+ajZNV9s z+RP83P8PjuLWrKMQQWELs+9X8Bn1Kwu/+kuYbKjgnV+SxkXAGlRSxmxoEuNgRvpJV8k GvjQ== X-Gm-Message-State: AFuF++nJuiE2AHK34M9QnldXhJ+QVhVX0dn/Hv6BXuaknWXSf3XB6F7e zLlNgOx+ZKHvyptG4hctJXu+xtnxOZN1PTARM6NTVJ1//WmdCWaMrJIE X-Gm-Gg: AYBFou38OrvF1m6E/ecgTHSFLw9U2jFDvYg0FqxGXkHctEBoSwhZdq/qU2fDg5vVZaK rNKWQH4dSRVQ4bbjiwTJnR9FmS6GYF+E81FWp4UmZt4E9DxtB0W11/IiALHdtVApx1G0A1Kmkl0 9M/7YG9CZD+kowIjmynq+ftBKRVCY2W+ZKuASYyRm+6CrnfMCXxPek23vFLatgsvCcMOEKGgmmX QyJUsTWcFIvKlRvlmShM3yVP+qcMuVxHzebl9cirT/4/+NVqXVUSgP249muEXN3JtxB1n2qOByV SisoK7MockgYo7VGNKVeXJMWRVTKYrEgN0B8IP4xocYtWZl7uMiMQov3fGX1jzxeZY4rVX04t9M STyVgNuUEd0/K/gp9t4UX9dZqe2VrLYJBGRpyMs/HSwfaftHzjsWxvqjjliCP6Fj/w1jV4ph5tY jpEz2AQLoWiVJcueSOZicQ6bk7FehP53PWL7RkF7pDZt56J7btaTSRIrVzyuf418QZu2Cerhn3Y PqfcOuLjn1RsGVLbiLhRQqvwVLkHViJ/AaTfIEhMTNnI8rvcbFUzAPxbLAWmUFHXwtWSsJ7mA40 xkkpBwsB5G/DW6QlLRFh X-Received: by 2002:a05:6820:4b97:b0:6b5:ec2f:3568 with SMTP id 006d021491bc7-6d43f4baf36mr568755eaf.25.1790202945099; Wed, 23 Sep 2026 15:35:45 -0700 (PDT) Received: from [100.82.231.29] (c-98-38-17-99.hsd1.co.comcast.net. [98.38.17.99]) by smtp.googlemail.com with ESMTPSA id 586e51a60fabf-491ee1ac486sm559401fac.16.2026.09.23.15.35.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Sep 2026 15:35:44 -0700 (PDT) From: Jim Cromie Date: Wed, 23 Sep 2026 16:34:53 -0600 Subject: [PATCH v11 29/38] dyndbg: control-parser: treat comma as a token separator Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260923-dd-cmap-part2-clean-v11-29-9b6c217fdf2f@gmail.com> References: <20260923-dd-cmap-part2-clean-v11-0-9b6c217fdf2f@gmail.com> In-Reply-To: <20260923-dd-cmap-part2-clean-v11-0-9b6c217fdf2f@gmail.com> To: Jason Baron , Shuah Khan , Andrew Morton , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Arnd Bergmann , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , Aaron Tomlin , Jonathan Corbet , Greg Kroah-Hartman , Nathan Chancellor , Nicolas Schier , Shuah Khan , Randy Dunlap , "Rafael J. Wysocki" , Pavel Machek , Len Brown , Jonathan Corbet , Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arch@vger.kernel.org, linux-modules@vger.kernel.org, linux-doc@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-pm@vger.kernel.org, Jim Cromie X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1790202874; l=4314; i=jim.cromie@gmail.com; s=20260203; h=from:subject:message-id; bh=BFGfVMUIUlRIm2JaJRLPto2g8rjGdT6CEXAVSmQr/a8=; b=d5+MQwqqnsKPmHlPuUCttE4PkQ7Wy7yoFwYejLCbxsCnQG3UvsatUX9GpXn09cb+z3WKXqaaR HvFmmuDzGv7B8sMzShv1xHHeYfmjW7kSdoSPA1xOTIEEw9Xy5PFUlUu X-Developer-Key: i=jim.cromie@gmail.com; a=ed25519; pk=C6E5ODlPQo7ZBynATXH9wg7K6HxP0pIXyf4s38Qw0XE= Treat comma as a token terminator, just like a space. This allows a user to avoid quoting hassles when spaces are otherwise needed: :#> modprobe drm dyndbg=class,DRM_UT_CORE,+p\;class,DRM_UT_KMS,+p Add corresponding Strategy 2 control-file fingerprinting checks to verify the exact control-file state of kernel/params callsites after commas-as-spaces, ignored-commas, and quoted-commas queries. Signed-off-by: Jim Cromie --- Documentation/admin-guide/dynamic-debug-howto.rst | 4 +++- lib/dynamic_debug.c | 17 +++++++++++++---- .../testing/selftests/dynamic_debug/dyndbg_selftest.sh | 4 ++-- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Documentation/admin-guide/dynamic-debug-howto.rst b/Documentation/admin-guide/dynamic-debug-howto.rst index 9c2f096ed1d8..b9fbb2a12955 100644 --- a/Documentation/admin-guide/dynamic-debug-howto.rst +++ b/Documentation/admin-guide/dynamic-debug-howto.rst @@ -78,11 +78,12 @@ Command Language Reference ========================== At the basic lexical level, a command is a sequence of words separated -by spaces or tabs. So these are all equivalent:: +by spaces, tabs, or commas. So these are all equivalent:: :#> ddcmd file svcsock.c line 1603 +p :#> ddcmd "file svcsock.c line 1603 +p" :#> ddcmd ' file svcsock.c line 1603 +p ' + :#> ddcmd file,svcsock.c,line,1603,+p Command submissions are bounded by a write() system call. Multiple commands can be written together, separated by ``;`` or ``\n``:: @@ -172,6 +173,7 @@ module module sunrpc module nfsd module drm* # both drm, drm_kms_helper + module,sunrpc # with ',' as token separator format The given string is searched for in the dynamic debug format diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 8eef2e7387a9..6482fd28def4 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -323,6 +323,14 @@ static int ddebug_change(const struct ddebug_query *query, struct flag_settings return nfound; } +static char *skip_spaces_and_commas(const char *str) +{ + str = skip_spaces(str); + while (*str == ',') + str = skip_spaces(++str); + return (char *)str; +} + /* * Split the buffer `buf' into space-separated words. * Handles simple " and ' quoting, i.e. without nested, @@ -336,8 +344,8 @@ static int ddebug_tokenize(char *buf, char *words[], int maxwords) while (*buf) { char *end; - /* Skip leading whitespace */ - buf = skip_spaces(buf); + /* Skip leading whitespace and comma */ + buf = skip_spaces_and_commas(buf); if (!*buf) break; /* oh, it was trailing whitespace */ if (*buf == '#') @@ -353,7 +361,7 @@ static int ddebug_tokenize(char *buf, char *words[], int maxwords) return -EINVAL; /* unclosed quote */ } } else { - for (end = buf; *end && !isspace(*end); end++) + for (end = buf; *end && !isspace(*end) && *end != ','; end++) ; if (end == buf) { pr_err("parse err after word:%d=%s\n", nwords, @@ -628,7 +636,8 @@ static int ddebug_exec_queries(char *query, const char *modname) if (split) *split++ = '\0'; - query = skip_spaces(query); + query = skip_spaces_and_commas(query); + if (!query || !*query || *query == '#') continue; diff --git a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh index 6f1d11828b79..a357905e3606 100755 --- a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh +++ b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh @@ -537,8 +537,8 @@ function GOLDEN_RECORDS { #K= 02e4fd94602e108cb89bfc70d47a5dad FT_basic_queries.5 #K= f03a7ca7316e8db4c0e16523dc41e75d FT_basic_queries.6 #K= c518a50ba30ba8099d0dc874a27ecf16 FT_basic_queries.7 -#K= 2b4b152bdb82e6e4a5be18ca26025895 FT_test_classes.1 -#K= 5516e3d13cba7ea4197a7fb6c033887a FT_test_classes.2 +#K= 91838b4012c50a1dc1d9e210ba8d68f8 FT_test_classes.1 +#K= a15ec4843acd721fbdfddc0b512c8032 FT_test_classes.2 #K= 2cee6842c9cdee5cb3bf50b2e3914813 FT_test_classes.3 #K= 81b16613f8d444485e2bc5aa4d38d024 FT_classmap_inheritance.1 #K= c14c8aa758e24046b3237d20e2189bf7 FT_classmap_inheritance.2 -- 2.55.0