From patchwork Mon Mar 24 17:35:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yannick Le Pennec X-Patchwork-Id: 14027605 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2109.outbound.protection.outlook.com [40.92.59.109]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D1D726461B for ; Mon, 24 Mar 2025 17:35:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.59.109 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742837759; cv=fail; b=hhiemM98RBvPRFRikDyb9VVFJDqyT87ApaaLxFfDZcGiZK+eq6JHozIpG016odNxv7fYwVVU8jlHwy+GU9shh7ExJmiYFidXnCM8p+PuM8VuEiZJadxdlhQKbBCegg03zG6zoXQ3HG6co2Nv9o+Biu7ljaulrD618Rzg/xuviWw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742837759; c=relaxed/simple; bh=RkT+2qdbTcu7W65G5fP9ufaEmCiZFAiu41mgYxERVF8=; h=Message-ID:Subject:From:To:Cc:Date:Content-Type:MIME-Version; b=Z3nNyaquoUMzmukMDErTiWfbUkP7JtoVzLXQVv4q4OUo50ylz8drrgncG1tFu/fTkPZuKX6X7Y0kBJj5nI5V9128KFn5ovo8hjIknJqMS4TG0VyHiIK3Fn2Tuh8mszvuhNG1HPD+EOiwfDChTLeX4zuk8GH8sToGCYHG6yBHKMo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=live.fr; spf=pass smtp.mailfrom=live.fr; dkim=pass (2048-bit key) header.d=LIVE.FR header.i=@LIVE.FR header.b=j4vOgb6r; arc=fail smtp.client-ip=40.92.59.109 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=live.fr Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=live.fr Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=LIVE.FR header.i=@LIVE.FR header.b="j4vOgb6r" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NSj7i1vKB63/bvC5SUW+QcfN6LaEPOFAJw6i9CHyDtYQkKH9fa3r6NCoRA6uYuyOfUduX1QiGm+Xl1Fqn1RPZDVWuFFY4J4WhMoBTAlJaAtqNRUaQVB47Gsx112QFe0Kxy7JA/rM7cbUec7EcH5/nplvXOKAcByWNtGGX8cE+nUSve/9+N8jmbPAxQeQ7+xJe2hzQwQ31jCgoH19nfePa017U06MWeAIAmb4WnWW0fTOhSvUmNjqV8xfVdX5fSHosh189Co6T0krmKrn0/+kQF+ClaZ/xsp6DKtk9N0coJ38QXvsE22tvvhpDIyT1psE25X35HI6fe3VngdJdYm/kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=y6SKieBHyi6GC5gr0Xt0YKBXL50HETDJ32UANlhbtZA=; b=O3/ACr0HW+TQ5hqdKAYaExg1p/ns6YATjJfycnlBqBsYPJl5D/sv9lTT/AJqdvzTxB0cSddFz9gEAUU2QQpv+x7crCBPGGp5PJUbjXMvrXkuVM1iSV5IM8jitrO9qbZKZ39xma+vIYcFnLKPdGIm76gNQmb92Q0dkW7MaqOh/x1eKwvglZWyy6BSgTOAsS7zboZ76bLTL7Kl5NOQAuyaCtqyDa6x1TwYSkjTY8hRoihXPqSSEiPalml8Ozgq7pB30n6DBHvCj0kgLQgQaaGFr7nkoWlc/bvFum48m1fErVU9II13yUYLg8+ptI1xiGcimoNs/vhJGYyIirEpzwkcew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=LIVE.FR; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y6SKieBHyi6GC5gr0Xt0YKBXL50HETDJ32UANlhbtZA=; b=j4vOgb6rFjvzPaLIHvruuoWsoIRHn5Ou/KorMQqj5STX3Dk0X33sJYPEWCEWuD3IBuaFGQTam2lwAaqkRaVaIir8p4kLoJR96zR1DdQO9ygeKq+h14eD2JIvIyNXkwupfxFIWaQTKOT1sMOi9bNhvkVsLXi+yxk/AfDbbPN32SBdenFYBr2OVeLMk/dpZBNNyNvYUGPPuth5mUOw1lAl7ZHJ86VKwVZoM9b009e292V3Kw6LQStA1DtptvaG8tZV7YFGHHTK/04YR6kBUMbiLEyvF4xxzESKPgcKl1P24hAMRBiKazbUp6hW2zT1G3U+PxwE8hJ4CdJkxjeWNreG6g== Received: from VI1PR02MB4829.eurprd02.prod.outlook.com (2603:10a6:803:9d::15) by DU0PR02MB8571.eurprd02.prod.outlook.com (2603:10a6:10:3ea::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.42; Mon, 24 Mar 2025 17:35:55 +0000 Received: from VI1PR02MB4829.eurprd02.prod.outlook.com ([fe80::dc17:dd68:b745:db98]) by VI1PR02MB4829.eurprd02.prod.outlook.com ([fe80::dc17:dd68:b745:db98%4]) with mapi id 15.20.8534.040; Mon, 24 Mar 2025 17:35:55 +0000 Message-ID: Subject: [PATCH kmod] tools/rmmod: fix garbled error message From: Yannick Le Pennec To: linux-modules@vger.kernel.org Cc: yannick.lepennec@live.fr Date: Mon, 24 Mar 2025 18:35:53 +0100 User-Agent: Evolution 3.56.0-1 X-ClientProxiedBy: PA7P264CA0187.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:376::19) To VI1PR02MB4829.eurprd02.prod.outlook.com (2603:10a6:803:9d::15) X-Microsoft-Original-Message-ID: <00071cb37ac73c10ca2657a7c459ca9ea60bfbd3.camel@live.fr> Precedence: bulk X-Mailing-List: linux-modules@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR02MB4829:EE_|DU0PR02MB8571:EE_ X-MS-Office365-Filtering-Correlation-Id: 5724e1a2-dc23-4dd1-7ebb-08dd6afa544a X-Microsoft-Antispam: BCL:0;ARA:14566002|461199028|15080799006|8060799006|7092599003|5072599009|5062599005|6090799003|19110799003|440099028|3412199025|41001999003|1710799026; X-Microsoft-Antispam-Message-Info: =?utf-8?q?cMte3zoTeX88Y57fFeZfWCKaYUp4/Qt?= =?utf-8?q?dGCsBRI6hVH3GlXrX5tIvKKCmFyMzy96uZYEv6OnQ7vZCRbKoFKAfuNDRigBsjmRn?= =?utf-8?q?W/T/T79yiqsKT0Qemz+yzXfECCHY9vXxEne3pSOy4CUZZ1MAH9OurRJLLgeSEKVg9?= =?utf-8?q?5ezI8l8uXcSnbHgKROe5Pl/yukBdakhNnYuvSrYkvAETJLohFZ56vbEvOc5mkriE3?= =?utf-8?q?S8QFg1Zr+CynGVsZ/GSQiGd/MCQ/CSMpv2oGA04zx6U40s2J0BPeJYulxmZxuyNQw?= =?utf-8?q?SVx+i/my1flGSsfm8jAmJeMd0qwFds8t6HOlsTp0WQJHUgtwke8nrFFArFWQX838p?= =?utf-8?q?SwfHGvlGODJcoBsWPgmapdKGTPIS94nhZw9LMNnZFl8s3iww/rnPl75KMMqV5JjIz?= =?utf-8?q?9YdHKUT9hWpURM+qi5PqXtYs6cXkNOKT7/2LS9+2uZq0WOyhnSZIl/IjAJkRaHFOE?= =?utf-8?q?6Ib5bIW0o8FEfPElvjG0busGNKXiroJ/4V4DnlUqNvOBkyVxtUP5Hv1cWnx578Vq6?= =?utf-8?q?/OonwT25kEmhu3ssvjZWah/6F4Ip70cTZcddzMmjwVfnJ5rYGwuwYJW1tr8TID1tM?= =?utf-8?q?3HsHOds/wAk3p65tVnnmTylYm2SlItPOAuIIzLap0ra2abeTeHFt5AUXBjLQ6hqQw?= =?utf-8?q?fBPYRuFgC16Mpz/jHh3Wu9SsMXB9v3v/NMvIJoE7PpKp7r4PD48myj3xPAd08t4m6?= =?utf-8?q?zMT0nz9XbJ8walt5apvu+JPlj+mzHe1fYYFztGmaqx10rvojwcIS8aK7cfLjEvPw/?= =?utf-8?q?ccgi+PhVIDv38nbgyx34Gp+8g+1tE3jFsQbDKjxc0mh1AmHxMVYlStpjs+j0hX/iM?= =?utf-8?q?WN2dcAMJC4IqVi9yd1FEhfU3UISEe2QKJ9mSkrm3DmBDgn1sZj7/KVJvUNVWZZkOu?= =?utf-8?q?c/8ZdIwvkQS7fB49yseD4CTiOpBsE/P1tX3cHqPhhiTCjF/nmIL8PkiLO595TIs4D?= =?utf-8?q?vbEDAhftVqdwcjNtRCAbO8EYiTqzDPJ20Ha3OZAdqHKHhvQ/A1DgaetMRisoVnEtu?= =?utf-8?q?Cm8U737Y0eBZBhZP5w3pqBxuPo3TG8na/28W/TE5DD4Ppk/txNpnv3IxNfeDh1bCk?= =?utf-8?q?tL/bONcAFv29j+YAKIrL2ubvKN4NCNNxvIkmuxl8UdIjvyZ5TLCcKaHTug2FrjjpH?= =?utf-8?q?YDjJzoddUz6g/2LZfNjxWVVlFNjZ2D/HGnHYA2z324xAQK9fkvF/eD/co4=3D?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?pCocd9Ro7K7nRX8eOeAEUWxN1JJR?= =?utf-8?q?0whKgJhVCTw/5uBvawCoMZ4Z/MibW5qOwhJJHrpc+braKe5u10uKYBkMfUAs1EEu5?= =?utf-8?q?xE6B2LYKGoKzDajcyYG71WGNtlMwpKUiWDcpCxSWSW14SADvIBjcvdVjuQ9SbiZ4D?= =?utf-8?q?Cfupz01LEwmHmIbfkR+ogWQYehKg2fO8Lph9QpoyheHJK3ROn7C8KETx1C1G+1OSU?= =?utf-8?q?f3PnSNIhvbKRo5Gm2d+wOupS8/8upJaBDUCz9yLwPmI/HyQd7bysvuoy0kQFyAEh+?= =?utf-8?q?DhswvwMPHk8g8EetkqrFYWnjDrRQkC7Ue0V0cYH1UkR9FwduUWzcGNczJn3XmDlVu?= =?utf-8?q?PEgmzTtOl7AgkeoE8iTMrZfR+NgKka7gQpRdBQFBeiCg8PChXHuEc3WgOdopoRQrn?= =?utf-8?q?kh2i4aX292gvyZJnlX1RZdZorqSxc34F0hEPGvNu+3PxgwfJ8L+r5Z9dZdM3hCL0G?= =?utf-8?q?PyIOqw37OEEhd1kBBLitjxQASK7mf0jrG8O9PSYnbTmmUAC7/ATO8M4/5HEGtVWzW?= =?utf-8?q?BRsefeTo8/oLtuFGjwtcfN8wusicd7talu8yW76DxKXML4OJScuVRl389O5GNAWd8?= =?utf-8?q?j7sC4/OnP9ek1/WeZ8C1h6QlMbMl/gYHUAo/f6k8lJPBWjPZfPmnOgV4NQDg7V0Pl?= =?utf-8?q?qydfPeip7Kdfk8nyW1GaLGUdua4MIWTL0o57X0wmOalYRj1M2fKzAwhqPRj+Irt90?= =?utf-8?q?sAYv45xJior2qeSVe5hBjE9bbT61p15BgdZBEjpN8Fkq2lKQUraOHZ+2jW/rB07tK?= =?utf-8?q?crNeyt3teiwN82YAOBZEAHU3hlKDb2RQIcio+I6N4MJ/PjAUo31ChwpjQPCO2x8dZ?= =?utf-8?q?gE8bDHAHwUCfmcLAQOboBgMHhFnj41hIQRyca7ID6dNtDMKc9sHXCIghCOeZf1tVD?= =?utf-8?q?NTVT4Tu9W75n+ziJ1qe1bXVaJFqNoJ3d/shbYiH3IdJEnUjtJc3KfiAuZyS+IiwFV?= =?utf-8?q?FKpWpQDrNvfbqGihqSucZApaqF6v9DPRiqShR0v8aWO8XUnv4VpyXdbysFa4vUJfR?= =?utf-8?q?nrMgPvqVqASXdGegyXsyjKGcLMoONz0Bh3dItX0hWpRr64Bq9aRwErQRS+r9vqlC/?= =?utf-8?q?ROmfil5yWqStPc14SBfrj8GMEEYQs+CXQhZ20q+sUSSYuY1+TTltFjh/Wz5ihKTEJ?= =?utf-8?q?iebWKWBCpiUSk7CyvRRPahWuuntn/Oykes0bW4+1qCdGy55aJgcyu8f3KBk0YBRLb?= =?utf-8?q?HrWy3hauHRjkCoVLSZjPmXdFrN6i1A/d5tfvTgixv6K8IgKCjHM6vjqJEM6zOreo1?= =?utf-8?q?drVlUrpoUkyHhrhh?= X-OriginatorOrg: sct-15-20-7828-19-msonline-outlook-12d23.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 5724e1a2-dc23-4dd1-7ebb-08dd6afa544a X-MS-Exchange-CrossTenant-AuthSource: VI1PR02MB4829.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2025 17:35:55.0765 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR02MB8571 a6f9cd0 ("tools/rmmod: consistently use ERR logging facility") fixed the split between syslog and stderr of various error message substrings by calling the ERR macro instead of writing directly to stderr, but in doing so also completely mangled the output because the ERR macro decorates its arguments: $ rmmod iwlwifi rmmod: ERROR: Module iwlwifi is in use by:rmmod: ERROR: iwlmvmrmmod: ERROR: And in syslog: $ rmmod -s iwlwifi 2025-03-24T17:22:34.878318+01:00 mangolassi rmmod: ERROR: Module iwlwifi is in use by: 2025-03-24T17:22:34.889145+01:00 mangolassi rmmod: ERROR: iwlmvm 2025-03-24T17:22:34.889224+01:00 mangolassi rmmod: ERROR: This commit fixes that by building the holder names list with a strbuf and then passes the whole thing at once to ERR. Fixes: a6f9cd0 ("tools/rmmod: consistently use ERR logging facility") Signed-off-by: Yannick Le Pennec --- tools/rmmod.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/rmmod.c b/tools/rmmod.c index 962d850..61f2e00 100644 --- a/tools/rmmod.c +++ b/tools/rmmod.c @@ -15,6 +15,7 @@ #include #include +#include #include @@ -63,16 +64,18 @@ static int check_module_inuse(struct kmod_module *mod) holders = kmod_module_get_holders(mod); if (holders != NULL) { + DECLARE_STRBUF_WITH_STACK(buf, 128); struct kmod_list *itr; - ERR("Module %s is in use by:", kmod_module_get_name(mod)); - kmod_list_foreach(itr, holders) { struct kmod_module *hm = kmod_module_get_module(itr); - ERR(" %s", kmod_module_get_name(hm)); + strbuf_pushchar(&buf, ' '); + strbuf_pushchars(&buf, kmod_module_get_name(hm)); kmod_module_unref(hm); } - ERR("\n"); + + ERR("Module %s is in use by:%s\n", kmod_module_get_name(mod), + strbuf_str(&buf)); kmod_module_unref_list(holders); return -EBUSY;