From nobody Thu Apr 2 17:10:50 2026 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011049.outbound.protection.outlook.com [52.101.62.49]) (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 987E7234964 for ; Fri, 27 Mar 2026 03:58:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.62.49 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774583941; cv=fail; b=WUxWPlqNHGkeLlZhHugy+1l5gORYXWhGBvJngEwS1MzMToakvXiShtK97NBUq4lYwfsMj7p94TeNHmuGUCF0yUdnsokty8YDeUDmCUgn8hjoifcI7sTcziro2bYcfzLSEonoyCSDhJfqa/2/uCMKvxKlfBqS3/ITdl3buSAsou4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774583941; c=relaxed/simple; bh=zVyOUp63oxxSDupvk7Ei7cg+Yy8vp8rPk6LJDJpWmEg=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=JNLPtyVa2yrfDohxMbwPFGZ9ukMHgWJ/nkLTfJ0jlFQzfZnAW7/Rl0y8cHTHkq0P4I44z58CT55X4lBz7N48yIZb0nOOGFRwcXvRq69WZpBmi3fUmN5zgnUSU/mCMjc5xyq6GUjfbpal8IUqEI4J8BDj7KGtdRFGYeMUT4xxaz4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=fegSlgaj; arc=fail smtp.client-ip=52.101.62.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="fegSlgaj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=teUNNUcBuS0l97KJZmF4bZUYugbvdsRdvKev86SvCxGmzeBVfLLkaJ8aFXvYL4FwZO6SKJ35+p0xEigajQFTqV9ChAiHvPbtC4+kr82n3gQq/Odkrrlg5Rp6mcK8duaMMvfI7fap1HMt0DZLKBM7b5ZCd4cCcu1kOf9PPso8j9mjsAoqHT4zZ2S9Wt0vdvBXa7/7Kx6u3dIflTTZEbVe3HbRBVLOUaplTIPSk/jfdwUorakYisAcZhfTLj93IfkCm+5CrceeA+19OdLy8Ahw45ev2aw/+C4rAVxAmkp8WpjMwjTXOeOF3w4+lE12IUAPczw/ZDI2gF19A1aBvMcYaw== 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=VfcYm1sBlbnx+1/NqaCHRX7rLZT9f0iUzV1rKQGLeMA=; b=iISM6QC67eju5aw+XGW3pKT4wXeELxyyF6R0Iiph9X873w0SNJbZ0O1ukx+/b9cL/wkmbxfx0dAIegV7pO73D1vJk87KjuxFLBN1aGQhSHG6bMqD3p2Vm4RcPXG/vozFFess8Z9iSUSoG+7XqGhYG8UaBFCwC7rDjxg9SAfriFStmH/FFqgBRmz3Lf2+08ziT/LGY+EdiL5lnh5rK2Dz+1t9xp3PXg1bNU1Eh70wGoRNy4VKWufw0vsvgHp3sL3Vevdz8hoPHpYO+ADX+6d7CMnoEwV0Bz91KsV0qmzYlXT4hoh09iEpgPE8iaChB2lq6UTk70ZrAVilDFKtR4gKCw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=canonical.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VfcYm1sBlbnx+1/NqaCHRX7rLZT9f0iUzV1rKQGLeMA=; b=fegSlgajgG/bjCY0rdmkiRGNOhen83CCSP2jpC91lXf3tAYiGze5wiJrhdo17JK4WPOlU5HsQvpao5btR4+6Ki5UkoZ2kRUooJlAeQshZfkkoeFR7Rj1y+s5SXxaoV4SwpmiqSTiymzsnhxnAtcQ+L58F/ZlXvO4by3kpHvIo2Y= Received: from SJ0PR03CA0337.namprd03.prod.outlook.com (2603:10b6:a03:39c::12) by BY5PR12MB4211.namprd12.prod.outlook.com (2603:10b6:a03:20f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.10; Fri, 27 Mar 2026 03:58:54 +0000 Received: from CO1PEPF000066ED.namprd05.prod.outlook.com (2603:10b6:a03:39c:cafe::77) by SJ0PR03CA0337.outlook.office365.com (2603:10b6:a03:39c::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.33 via Frontend Transport; Fri, 27 Mar 2026 03:58:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by CO1PEPF000066ED.mail.protection.outlook.com (10.167.249.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.21 via Frontend Transport; Fri, 27 Mar 2026 03:58:54 +0000 Received: from kylin.lan (10.180.168.240) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Thu, 26 Mar 2026 22:58:50 -0500 From: Alex Hung To: , , , CC: , Subject: [PATCH] checkpatch: add Assisted-by tag support Date: Thu, 26 Mar 2026 21:58:05 -0600 Message-ID: <20260327035805.3733833-1-alex.hung@amd.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000066ED:EE_|BY5PR12MB4211:EE_ X-MS-Office365-Filtering-Correlation-Id: 4c3de696-5bc1-4870-02e4-08de8bb529ef X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700016|20052099010|13003099007|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: hkbwz4x+AYxVdA+QZpw1OT3vN2eGaTVzBr5IL3tGs3MpZj2frAYpuBB9fnMOiACNf0KfJ8BnpwLiqVj7jOTH32RLWRPo2JO/7d0ghvbuKDffF1WWE5GsmQXXQDj4qXfV5ZKzMZ5GA5ZM5eQeVc3X72l4BvoceT9XyUP+OGDvAnYzFLOZhyGvQIi+XmLGbNhS3/pBSaPyqbf1bfwM1PmAbsVtTNyDUbV9pEyt/TMeHVTaj5tA8zwhfWJ3Lp8npg7MUcuVVQMFEE2slLMunSQr8LTdi2peGibyIOw5tv+c6o2BRAy7DYJrHqae+jBvVbe4IBWHwyh9bwrTnlOl7nZtC9pfC0ErUheEOKHVxOxqHTBdFZAO3BOixHO0kFa6SzwrqxdElfXMgtTl2/r9TJDbVIaUm5NUZLiRmsgA18Oq2I8XjKU7k6freYCPXRvrbFI0lumQXErlF+SWw5dQSyDSdS+cimpqJfpbYndkBE7WlATwPgPoKYwp1FB7LjJRR5V8IlTasB8+BTgoL+n/oL2iD1MxdgcixU0/LYWlwJzmQGHcngic0a8kSgBRbzwPqcW0p/i3PDaZIiCRc8QLu/EWpDceDhhfm0MjnxuJQLmomZXP6RazBK7+mJrxgi2PEbZFJkrfBed0CRmZv9EC2/fqGajF2qLIjR2Yc+VcLDK/M8fLjBpyIjxaFzNUwWNOL38WGk5Dv9Iute/tZQ4o0zIIQJwWYr8gJZLqlwHR8xe2Z4h9PSwUKtb6oknTUswTryAN7L7V6HIhaV3s1tP2f/xnnw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(20052099010)(13003099007)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: z9SkhLjBrgnpHmVXNKndrOMSGJ4VaDo9WfQCZz0UE9NBwVydp64VH9u8LqvAALSujNgKRPVtl6VghcPFlf8FYPgeBHZfWftgUkhA7lL4X1KG/DV4lbb7GOJ8xa9a2WfLzHSVP9nAAHAbDrCc3AC7UEgNrYHqtzkDeahUE2Q3Vf2oLIu6F2V6jPwDNF2DCzTCcHenGlhcIBWpfytCqugyc27xcF3zKFBg9jFrD3fkqmVWl6JULAkSLR8YDwOC+pEjNlJ/RHi4pZtsoF4ANBoEaXMHPE/lkqugFBXnk2sJsEGfeFAixflNfToeNjS5VrROrP/Fmig4PDg9FKSfIwUcQyTHYD1/WJ4zL47/kQs5KzE2aEr666GOvgM2rCAt8TxjV0cf4Oa6TxwRZqonRFZgFHO/oxWKP7rZ3SBDxHuw+9+ENmfxaOGQ6n9iRmpQTnn7 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2026 03:58:54.0706 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4c3de696-5bc1-4870-02e4-08de8bb529ef X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1PEPF000066ED.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4211 Content-Type: text/plain; charset="utf-8" Add Assisted-by: as a valid signature tag per the AI coding assistants documentation. Validate its AGENT_NAME:MODEL_VERSION [TOOL...] format instead of treating it as a Name address. Link: https://docs.kernel.org/process/coding-assistants.html Assisted-by: GitHub Copilot:claude-sonnet-4.6 Signed-off-by: Alex Hung --- scripts/checkpatch.pl | 143 ++++++++++++++++++++++-------------------- 1 file changed, 76 insertions(+), 67 deletions(-) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index e56374662ff7..07acd74633e1 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -641,6 +641,7 @@ our $signature_tags =3D qr{(?xi: Reviewed-by:| Reported-by:| Suggested-by:| + Assisted-by:| To:| Cc: )}; @@ -737,7 +738,7 @@ sub find_standard_signature { my ($sign_off) =3D @_; my @standard_signature_tags =3D ( 'Signed-off-by:', 'Co-developed-by:', 'Acked-by:', 'Tested-by:', - 'Reviewed-by:', 'Reported-by:', 'Suggested-by:' + 'Reviewed-by:', 'Reported-by:', 'Suggested-by:', 'Assisted-by:' ); foreach my $signature (@standard_signature_tags) { return $signature if (get_edit_distance($sign_off, $signature) <=3D 2); @@ -3105,88 +3106,96 @@ sub process { } } =20 - my ($email_name, $name_comment, $email_address, $comment) =3D parse_ema= il($email); - my $suggested_email =3D format_email(($email_name, $name_comment, $emai= l_address, $comment)); - if ($suggested_email eq "") { - ERROR("BAD_SIGN_OFF", - "Unrecognized email address: '$email'\n" . $herecurr); +# Assisted-by: uses AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2] format, not N= ame + if ($sign_off =3D~ /^assisted-by:$/i) { + if ($email !~ /^[^:]+:\S+(\s+\S+)*$/) { + WARN("BAD_ASSISTED_BY", + "Assisted-by: expects 'AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]'= format: '$email'\n" . $herecurr); + } } else { - my $dequoted =3D $suggested_email; - $dequoted =3D~ s/^"//; - $dequoted =3D~ s/" 1) { - WARN("BAD_SIGN_OFF", - "Use a single name comment in email: '$email'\n" . $herecurr); - } + # Only one name comment should be allowed + my $comment_count =3D () =3D $name_comment =3D~ /\([^\)]+\)/g; + if ($comment_count > 1) { + WARN("BAD_SIGN_OFF", + "Use a single name comment in email: '$email'\n" . $herecurr); + } =20 =20 - # stable@vger.kernel.org or stable@kernel.org shouldn't - # have an email name. In addition comments should strictly - # begin with a # - if ($email =3D~ /^.*stable\@(?:vger\.)?kernel\.org/i) { - if (($comment ne "" && $comment !~ /^#.+/) || - ($email_name ne "")) { - my $cur_name =3D $email_name; + # stable@vger.kernel.org or stable@kernel.org shouldn't + # have an email name. In addition comments should strictly + # begin with a # + if ($email =3D~ /^.*stable\@(?:vger\.)?kernel\.org/i) { + if (($comment ne "" && $comment !~ /^#.+/) || + ($email_name ne "")) { + my $cur_name =3D $email_name; + my $new_comment =3D $comment; + $cur_name =3D~ s/[a-zA-Z\s\-\"]+//g; + + # Remove brackets enclosing comment text + # and # from start of comments to get comment text + $new_comment =3D~ s/^\((.*)\)$/$1/; + $new_comment =3D~ s/^\[(.*)\]$/$1/; + $new_comment =3D~ s/^[\s\#]+|\s+$//g; + + $new_comment =3D trim("$new_comment $cur_name") if ($cur_name ne $n= ew_comment); + $new_comment =3D " # $new_comment" if ($new_comment ne ""); + my $new_email =3D "$email_address$new_comment"; + + if (WARN("BAD_STABLE_ADDRESS_STYLE", + "Invalid email format for stable: '$email', prefer '$new_email'\n= " . $herecurr) && + $fix) { + $fixed[$fixlinenr] =3D~ s/\Q$email\E/$new_email/; + } + } + } elsif ($comment ne "" && $comment !~ /^(?:#.+|\(.+\))$/) { my $new_comment =3D $comment; - $cur_name =3D~ s/[a-zA-Z\s\-\"]+//g; =20 - # Remove brackets enclosing comment text - # and # from start of comments to get comment text - $new_comment =3D~ s/^\((.*)\)$/$1/; + # Extract comment text from within brackets or + # c89 style /*...*/ comments $new_comment =3D~ s/^\[(.*)\]$/$1/; - $new_comment =3D~ s/^[\s\#]+|\s+$//g; + $new_comment =3D~ s/^\/\*(.*)\*\/$/$1/; =20 - $new_comment =3D trim("$new_comment $cur_name") if ($cur_name ne $ne= w_comment); - $new_comment =3D " # $new_comment" if ($new_comment ne ""); - my $new_email =3D "$email_address$new_comment"; + $new_comment =3D trim($new_comment); + $new_comment =3D~ s/^[^\w]$//; # Single lettered comment with non wo= rd character is usually a typo + $new_comment =3D "($new_comment)" if ($new_comment ne ""); + my $new_email =3D format_email($email_name, $name_comment, $email_ad= dress, $new_comment); =20 - if (WARN("BAD_STABLE_ADDRESS_STYLE", - "Invalid email format for stable: '$email', prefer '$new_email'\n"= . $herecurr) && + if (WARN("BAD_SIGN_OFF", + "Unexpected content after email: '$email', should be: '$new_email'= \n" . $herecurr) && $fix) { $fixed[$fixlinenr] =3D~ s/\Q$email\E/$new_email/; } } - } elsif ($comment ne "" && $comment !~ /^(?:#.+|\(.+\))$/) { - my $new_comment =3D $comment; - - # Extract comment text from within brackets or - # c89 style /*...*/ comments - $new_comment =3D~ s/^\[(.*)\]$/$1/; - $new_comment =3D~ s/^\/\*(.*)\*\/$/$1/; - - $new_comment =3D trim($new_comment); - $new_comment =3D~ s/^[^\w]$//; # Single lettered comment with non wor= d character is usually a typo - $new_comment =3D "($new_comment)" if ($new_comment ne ""); - my $new_email =3D format_email($email_name, $name_comment, $email_add= ress, $new_comment); - - if (WARN("BAD_SIGN_OFF", - "Unexpected content after email: '$email', should be: '$new_email'\= n" . $herecurr) && - $fix) { - $fixed[$fixlinenr] =3D~ s/\Q$email\E/$new_email/; - } } } =20 --=20 2.43.0