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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BB3B8C54E71 for ; Wed, 21 May 2025 06:24:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4D4566B007B; Wed, 21 May 2025 02:24:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4AC296B0089; Wed, 21 May 2025 02:24:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3C2576B008A; Wed, 21 May 2025 02:24:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 233BA6B007B for ; Wed, 21 May 2025 02:24:16 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 8B8118042E for ; Wed, 21 May 2025 06:24:15 +0000 (UTC) X-FDA: 83465925270.29.FAFA768 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by imf12.hostedemail.com (Postfix) with ESMTP id D824940007 for ; Wed, 21 May 2025 06:24:13 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=igalia.com header.s=20170329 header.b=Mxe5soRx; dmarc=pass (policy=none) header.from=igalia.com; spf=pass (imf12.hostedemail.com: domain of bhupesh@igalia.com designates 213.97.179.56 as permitted sender) smtp.mailfrom=bhupesh@igalia.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747808654; a=rsa-sha256; cv=none; b=3HPXpF87rtEU81slPmIS7mkYvBePlL3HpJl2XYQgsg/xl8AuIscItDoJW/fLYuyZu8UIPg 5fMfSS3AeDbadFxRsYsBDtG+V0BPI0sSTsZA8MDYuW1GgIsf0yE65YuxWibbKgaFskAWOh IkIXiGoXGnIVf0EKFv4cal3/JBNmUF4= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=igalia.com header.s=20170329 header.b=Mxe5soRx; dmarc=pass (policy=none) header.from=igalia.com; spf=pass (imf12.hostedemail.com: domain of bhupesh@igalia.com designates 213.97.179.56 as permitted sender) smtp.mailfrom=bhupesh@igalia.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747808654; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FLnlNaHrEaw8H+WX1bi4GYpuBsRULfbnbCOgBsPrKvQ=; b=sBTzLvS81TmWt9TdT1I0kadig4N1D7nBc0Hotaj4tJ7T0mGo3ekL/4CDC9MnFH5QrKws3a HREQu4Yx+eAWv2rY8gqyLoY4GXn5T+qdBwrH8X8wENK+AVt1oB6kBgaT3+83nUBGOkmDJ5 TLNXTIp0yXM3KqN2J81A3dCwpe/uVE0= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=FLnlNaHrEaw8H+WX1bi4GYpuBsRULfbnbCOgBsPrKvQ=; b=Mxe5soRx264DMUPK1JWNdwLPXq Rc0m42aIbWFiKQUIOURK8pq9srnIElIwgHAq7LKN2EpVwchaVyX4fJ3X//9EiLTrvomEW4EbqrgJe Fid5k4RG3Tyd+DJNgOrPPtYnnHrFxQ3UQFjVD3/rbS1h7YJThFGcfwyNBG6FV6Uiv+g7fGxrAZjlM i1xEn1VKgAoi2i21zAZlZ6wXw1fxEmnpOYBXuTGJGNsuapRmTszTeT47VZc+ayEBR7/R6GuV1/lPj HfMp0evtjenf3bRvx25pdSBp/6VncScW1rSM1Vo4t4DGDD0sXJZAcMO6lrPraAqzSiOLaKfaPaKiK DaO4j4lQ==; Received: from [223.233.70.209] (helo=localhost.localdomain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1uHcs4-00B3oN-O7; Wed, 21 May 2025 08:24:09 +0200 From: Bhupesh To: akpm@linux-foundation.org Cc: bhupesh@igalia.com, kernel-dev@igalia.com, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, oliver.sang@intel.com, lkp@intel.com, laoar.shao@gmail.com, pmladek@suse.com, rostedt@goodmis.org, mathieu.desnoyers@efficios.com, arnaldo.melo@gmail.com, alexei.starovoitov@gmail.com, andrii.nakryiko@gmail.com, mirq-linux@rere.qmqm.pl, peterz@infradead.org, willy@infradead.org, david@redhat.com, viro@zeniv.linux.org.uk, keescook@chromium.org, ebiederm@xmission.com, brauner@kernel.org, jack@suse.cz, mingo@redhat.com, juri.lelli@redhat.com, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, linux-trace-kernel@vger.kernel.org Subject: [PATCH v4 3/3] exec: Add support for 64 byte 'tsk->comm_ext' Date: Wed, 21 May 2025 11:53:37 +0530 Message-Id: <20250521062337.53262-4-bhupesh@igalia.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20250521062337.53262-1-bhupesh@igalia.com> References: <20250521062337.53262-1-bhupesh@igalia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D824940007 X-Rspam-User: X-Stat-Signature: 459k8z5krekgszbt6gqffmx43hawxdct X-HE-Tag: 1747808653-493208 X-HE-Meta: U2FsdGVkX18pfseMs5raXlVFBuGgsPxBscSZWlC3uuux77j0W0pzBcdfIqMYQtwDQ+rwWXtA4DhyjQqVhoCA2pyBaW0giXLbZdiQKMPE/N+AGC4321EopKDDaL41DOWhZc5mL364fdH1aJbD1GUiIpSFzySkVIRvOvahi6qQki8ebtQwukLhyK5sx/XX/qyN6I9onor2hQtaCGUaKoKDEqMJTeGNo4sq5WS15qWg6aVzBWoO4Vo0CR5mkXdcxploH1UyJqL5woMYVelI7QFbch5VBlf82CFpFrSgsMRBrxZ999jlHhbiDwXkZj2vrVPQRdCUvSJSnQJl+DsRKFCnQPUaxPYlXsM1cOOAgq6QoGLlVUYFenxarBpw00axad1V6U4AbWw34z8ozNaeSf7Z05QKZM+P9cUJO4rOOu64QAyhN1R/WvAp8nWntABwL1tDNG1RjXfAC9JV7HvbfwdLBHCOUuSVjwttNf+asXCSAw9Sircgd77A5fUPJWuJG5YEGeYMd1H42trSxax8Ylzru26yr/2TxIGJaoUi7SHQD1pFZ56EwSP2uhsBYzUZvR8YMxnG9W2PJa2Gh55xn2hgpZIU/nyUi4xR7mf8EFfIpBIhbHEKWdjN59ENc8kHvr7nI9ibA78z2Gcb61Y0qr29NLCAFHfdcpdsA16dfVup4lK2xKxosBjQFAftXqyJqAsMQDppwdg6I7+knk/jo9RJb44T4UlrDUWLEpkDlSk3m1uS2y3lNZIhHgHoMo9J5RkmCLZ+b/fY9hVmIpQ5MChxtupPTu2N1sZo5VXfIc9RDxhb4xnvrxqR21l+mKZm9Qosd64l9prvRw2ei7Cy29tIEOXaBwlYV7zQ46x2ejmVvjUpK2go5ikBAyrYpnm8e5WlAXfoz/Xgwlwy5yFZ+DTyv14kv2JNGd2yj8wNDhf+mnGzbEHWIXCiEqBVPvVi3EiBigDGmVaPdy+A4wWexyR 2KB4rlsS Ufhv7QFkXAxyt0pSQCaRk9I7zqesC9K6yB+Hf/0JfeYLHj1IfV3D9AHnsrnpG1QvXDf7/76mYrrdwj7/+rMWGg2wZc4o1kDM59MY5w8ZDtWBNgSnQls8HC0c0BiiV3F4/gLiUOy9lM2mEBxJ+pSuAYX4A5pmtAEs4o+asygNROtpgz1bh2d94CQur927Yi1kaxDWlQPcgcqzt2ZL3Wqr2D0NQCenJCVUa5D0/qwyzKnlb0rkJXeI4nxnQFAeJVla06WA+6B+znbPAYa4nRQw4Pf986xB+u+nTA0fngxzaSVrH9UrF1ZxTRIRgZp0o8l29XeF0ml19jiZqcHF8ngaM4RZbsySEotBegWgLOt8Ect6XN9UfMx74b1panQXzAeO3jL1OKzPH8pRGnr/rXN8rN+SVUuSmnse4nsUDAWInJR+o0aa2HldZ57QZTg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Historically due to the 16-byte length of TASK_COMM_LEN, the users of 'tsk->comm' are restricted to use a fixed-size target buffer also of TASK_COMM_LEN for 'memcpy()' like use-cases. To fix the same, Linus suggested in [1] that we can add the following union inside 'task_struct': union { char comm[TASK_COMM_LEN]; char comm_ext[TASK_COMM_EXT_LEN]; }; and then modify '__set_task_comm()' to pass 'tsk->comm_ext' to the existing users. This would mean that: (1) The old common pattern of just printing with '%s' and tsk->comm would just continue to work (as it is): pr_alert("BUG: Bad page state in process %s pfn:%05lx\n", current->comm, page_to_pfn(page)); (2) And, the memcpy() users of 'tsk->comm' would need to be made more stable by ensuring that the destination buffer always has a closing NUL character (done already in the preceding patch in this series). So, eventually: - users who want the existing 'TASK_COMM_LEN' behavior will get it (existing ABIs would continue to work), - users who just print out 'tsk->comm' as a string will get the longer new "extended comm", - users who do 'sizeof(->comm)' will continue to get the old value because of the union. [1]. https://lore.kernel.org/all/CAHk-=wjAmmHUg6vho1KjzQi2=psR30+CogFd4aXrThr2gsiS4g@mail.gmail.com Signed-off-by: Bhupesh --- fs/exec.c | 6 +++--- include/linux/sched.h | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/fs/exec.c b/fs/exec.c index 1f5fdd2e096e..3b39fbfc8fe4 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1077,11 +1077,11 @@ static int unshare_sighand(struct task_struct *me) */ void __set_task_comm(struct task_struct *tsk, const char *buf, bool exec) { - size_t len = min(strlen(buf), sizeof(tsk->comm) - 1); + size_t len = min(strlen(buf), sizeof(tsk->comm_ext) - 1); trace_task_rename(tsk, buf); - memcpy(tsk->comm, buf, len); - memset(&tsk->comm[len], 0, sizeof(tsk->comm) - len); + memcpy(tsk->comm_ext, buf, len); + memset(&tsk->comm_ext[len], 0, sizeof(tsk->comm_ext) - len); perf_event_comm(tsk, exec); } diff --git a/include/linux/sched.h b/include/linux/sched.h index 704222114dcc..2605207170b4 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -316,6 +316,7 @@ struct user_event_mm; */ enum { TASK_COMM_LEN = 16, + TASK_COMM_EXT_LEN = 64, }; extern void sched_tick(void); @@ -1165,7 +1166,10 @@ struct task_struct { * - logic inside set_task_comm() will ensure it is always NUL-terminated and * zero-padded */ - char comm[TASK_COMM_LEN]; + union { + char comm[TASK_COMM_LEN]; + char comm_ext[TASK_COMM_EXT_LEN]; + }; struct nameidata *nameidata; @@ -2005,7 +2009,7 @@ extern void __set_task_comm(struct task_struct *tsk, const char *from, bool exec */ #define get_task_comm(buf, tsk) ({ \ BUILD_BUG_ON(sizeof(buf) < TASK_COMM_LEN); \ - strscpy_pad(buf, (tsk)->comm); \ + strscpy_pad(buf, (tsk)->comm_ext); \ buf; \ }) -- 2.38.1