From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oo1-f54.google.com (mail-oo1-f54.google.com [209.85.161.54]) (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 E8C3258FD1C for ; Wed, 23 Sep 2026 22:35:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790202951; cv=none; b=KxFZ0PFZWwF6O/Ng++KPYeYil+ez/blniwHE9wW8PozLhREp/ID2E+TlmTk8kvcZYw5babH0QXkjthSDOtWvcjfs/HrCLZ38OQ8UlHUnJAPi+s4GfZmVG1zqigJi/ofH60U/vqhdZuhfSwU1Q19AiJ5ziSpTDm/sehGyZEoQfuo= 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.161.54 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-oo1-f54.google.com with SMTP id 006d021491bc7-6b9cb8883ecso313210eaf.1 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=SUroN2Etz452lgc4rny9tGcGx6yI8JFbtzolqyJ20npaFD2BLQj6gGUjoszwuXuG28 5Tzt+y32jsCm+dy9iqHlb44ohYx6B0t9OSbLZQDqk6ZslJsonGw4pJi+9dIkh28JRU06 y4kgmO9HiB7cnp6sOrIoepC6eBSB1x7D/lCC9ClSmU5UzJakNvmmKX4HB6LEreKF4Xw8 wC/8PrLUiaU0QAxYD3N7TkgFhwq2+YJRHir5ndaUKlUgRkpDt48G2c+QznVtqRw/GezJ ppwfotEM3l2HRL4QtWmjOSx61yw0ABAnCCne2nRxZhCGEOrvpaMfIbdbJsO3sZrgtM1A 9Cng== X-Forwarded-Encrypted: i=1; AKwUvByVKPm5ZsfUfSp+zeMCEFuINtxG+uWJINiRZfp64NB/cWWND4fGBCgr9ReNvcrjfmv3Wc+ViocOHGNxPp4Byuk=@vger.kernel.org X-Gm-Message-State: AFuF++m+q+yoWGfjgYuFsn3IU+sLFU0P/jeHQ9zD3I0umu4mOq2bth/E AwAE9XG+eAuYzAlBUQ4z/loosX9X/7QUeO77OvzzsL7U1Xk/MnfoNlmM X-Gm-Gg: AYBFou2Yhr8SAoDOL6XXI6M6N4YfxFpXKU+pkXp5r4hGs22VqC/KdvJlCaSDkneEixu 0GBAh/gBqi/0osz0mq//ySPWZFQfS1jAaQju52QY2sxYN0EEkib0lhdlna+W1meR/pUdAKbrzDW OqMpJ3W/0MG7IoXnlatcxZR9pXvJCX5KuPMOGfJQ+4tmzTXJBgOKZpQKqoEwZ+sLLhQAE8OxnAc zs2aJbm1Los3Y0f87nIUKnItQUhGWYeTmTB5CiQenwccBiabB8nD/9KEnBCv1yLZHr1J2W9LdqF V2KzrzA/+aBPCaWavnrdiuPhx3rol49+tsMWZ/4YNPOTgDWMAeEkaPaVkFfHJshx+LuJ1+zlW1H GnjyqjYdYa6zPpvEZSseIE45H4Id/9GjIV958oTVPWUW9+IMXG/8xY8DHhwB7N0Ety/24+V8gtu 8VRl1ChRNRkoTXsG4Db2MOKa+vxiUrbriOVme5bjFzV5/dizzICsB6TvsjXk8kqVr2oVyNtHkqP 5AQ8wwZF4nSr4G6K0EFHDQTunWN9Hr7CrZsDO7ybEs9gMM3qLQpRfcIeyddPIwTOeoYY90IzXcT pJmbjyKGSXjpD63in/oC 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-kselftest@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