From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 A927236606A for ; Mon, 25 May 2026 10:42:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779705768; cv=none; b=PGTM2kxZNXK8GeZJnZ+JYLOMoeDHmL9thzPKTHtN4/FKWk8yG0Fps6pRftkTbT5gokt7vX/moc8YZcGTYagXcgJ0GrGAesX8SwgVVnx3ne9uTZJHSV2sHI3N62Ldxj8XOLqElQT5kcMwmoTSgAbsPvA6n4QB6PtV0dEsTm2ELgM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779705768; c=relaxed/simple; bh=ku8y9vd3yPYRGF0AX/sLztGjsUzSXbH5w1d1bDEIIRc=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hyQEVIQpWh6VvW3Y7+cKPbHfr88f9R//IWt6JDXnwm+v1dj6dyBb2rGQimJctRKGCsxXzZvtwd7mFl7v3U/bj9bBVquBrMZdEcJZ6S+hvnKyHFnEGQdGDB26VitRCKy6yaetsvoyQtehcbsSriVP+yQGETlS3NFRzn9FNBl3p+c= 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=JDLESzdv; arc=none smtp.client-ip=209.85.128.42 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="JDLESzdv" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-49050bfe053so21562165e9.3 for ; Mon, 25 May 2026 03:42:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779705764; x=1780310564; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=Zc9LvU3e/f54K4oHyIoq4+XKoWb/QRX1RMbSGSqgSQI=; b=JDLESzdvRDYf7bUq6zSAU/TVaNUhe7IAydptxUaYlhVWaW/rgco8FQY5tmBN5lGxsq FOwyHfjvS+SHrHJqo2/Ti8m8vb+3yd0hXq/YDerliGbmjhG16kn9fliWAjW5jGKbg7E0 o1BBuLCtiEFmB/M3QvNu4dS0g+SgYiSdxTH6SoOuxzRsW++2aJjpCxwPZo50YqZmzzKV FkPZyarbcQ61WhO8MDatDBfuBft1BpXjL52RrtzhN2ME6FXPjPJ7ulc63mL5dj58n8NX UBKptAHBdp8KDuzbiH4VLxJHEUtxMVZIFagGsJhn7FbNQ27qdpdiG2Ov9sIZwmKrMVhv yxUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779705764; x=1780310564; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Zc9LvU3e/f54K4oHyIoq4+XKoWb/QRX1RMbSGSqgSQI=; b=jK3hhYCig6rLaXMzIggpIoeAuXAQgIyRRSesnHHO0mkWC3zNcO1FpLGtGLCUfIC13v wBYG2JlT0udQxWpbTpI9d+yNeoEuerSEi+VWCDCviuWJKgHbQLmVJigwCbHWQQ4fdGIP F0z51ysTvFUleP2r+BIfme8o6Pdllnc0QsUCOurso/CCM3MFp/rjRKF5oYFl2vhTul/B kOIjtoNbhrIVOy6BMr+fPqsDLvYeBBqHL/dojxqDXcIBpJ+w/LWplxo1vKT9Imk0W1O0 NrmNntxOGt1Q/eybueox8OPKJjpsCRKVLMJAYw46ZtwOyQRZcAHcLZBgIf8XzzsfaR/6 pkoQ== X-Forwarded-Encrypted: i=1; AFNElJ/JKQRnPZrqhyj2wPsE3St7JJNm4eu7fyux8kr+ccfth7p+z3Kk1SBPp/ZG7iMlQY8KS89gJHDR9ZlJVtQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yyf8my1zWH+MvtJ2MqX6u+roC8zDxB2H3jmA/QjYOlmlV1VmzH0 qOITLRvZ36W+TkirzkedtY0Di5eTw4CqbaVVUkgfKkB/Q3Lgnd6gkBtP X-Gm-Gg: Acq92OEKoqR0WV1obdTyT8WMDfyIR9n7m5pRncJY+LmCHx8FHGf194TpiEaT2LFVMaj UMuiYHm9Qg8NKMADitaAPgJ0+WomD2aKJJk6ziFcko3FSsIhVXhcUNO5pDFjeBfz7UeKMe7lYXG PweJmTXixLI9z3WPlqtRVIitTPHxLVnTIKjnp2viDeXGdMOas8YeO6NOAYxDyl0AspzKKpnvRLq btaNvBXqxgneAjgwcXf5sJrhw6SUyU+XezOcaUyvXnXFo4XvKzLOx6N/cZ/X7NkeA3/2Pf+pX3Q yC6/VYA57N3Cb0McN3xSqiyMExuxdeAXTwjIAY2qP6WgtIyXBp5JHmdaHMwuJXUMqCowL3jdYbv 866uBkLymq81/o2WK7/hPcewq+GQKhtwilb9XdTB0Us0AgxWalE1fv3fYVRQa8o5lPLFipmz+qI 3O7OI4pw+32jCq0bupZBqJjtLRJU7srPpUVs/pBSt7tApNaUjwl6zcmfvrHkbve1FU7UVbJpr7/ j4= X-Received: by 2002:a05:600c:45ce:b0:490:5cd8:d213 with SMTP id 5b1f17b1804b1-4905cd8d33emr89808645e9.15.1779705763319; Mon, 25 May 2026 03:42:43 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49049973b71sm67696445e9.29.2026.05.25.03.42.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 03:42:42 -0700 (PDT) Date: Mon, 25 May 2026 11:42:41 +0100 From: David Laight To: =?UTF-8?B?QW5kcsOp?= Almeida Cc: Peter Zijlstra , Juri Lelli , Vincent Guittot , Steven Rostedt , Christian Brauner , Kees Cook , Shuah Khan , willy@infradead.org, mathieu.desnoyers@efficios.com, Linus Torvalds , akpm@linux-foundation.org, Yafang Shao , andrii.nakryiko@gmail.com, arnaldo.melo@gmail.com, Petr Mladek , linux-kernel@vger.kernel.org, kernel-dev@igalia.com, linux-mm@kvack.org, linux-api@vger.kernel.org, Bhupesh Subject: Re: [PATCH v2 4/6] sched: Extend task command name to 64 bytes Message-ID: <20260525114241.4b6f3050@pumpkin> In-Reply-To: <20260525114107.7fa5b4c1@pumpkin> References: <20260524-tonyk-long_name-v2-0-332f6bd041c4@igalia.com> <20260524-tonyk-long_name-v2-4-332f6bd041c4@igalia.com> <20260525114107.7fa5b4c1@pumpkin> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) 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: quoted-printable On Mon, 25 May 2026 11:41:07 +0100 David Laight wrote: > On Sun, 24 May 2026 19:38:54 -0300 > Andr=C3=A9 Almeida wrote: >=20 > > Command name has been restrict to only 16 bytes, which is too limiting, > > specially when debugging and tracing complex software with thousands of > > threads and the need to differentiate them. > >=20 > > Just as it was done with kthreads in commit 6b59808bfe48 ("workqueue: > > Show the latest workqueue name in /proc/PID/{comm,stat,status}"), suppo= rt > > long names for userspace threads as well. > >=20 > > To avoid buffer overflows, cap all existing userspace APIs to > > TASK_COMM_LEN, and leave the full extended name for a new interface. > >=20 > > Co-developed-by: Bhupesh > > Signed-off-by: Bhupesh > > Signed-off-by: Andr=C3=A9 Almeida > > --- > > fs/proc/array.c | 2 +- > > include/linux/sched.h | 3 ++- > > kernel/sys.c | 10 +++++----- > > 3 files changed, 8 insertions(+), 7 deletions(-) > >=20 > > diff --git a/fs/proc/array.c b/fs/proc/array.c > > index c8c3fbd9bfa9..312371eddc7f 100644 > > --- a/fs/proc/array.c > > +++ b/fs/proc/array.c > > @@ -110,7 +110,7 @@ void proc_task_name(struct seq_file *m, struct task= _struct *p, bool escape) > > else if (p->flags & PF_KTHREAD) > > get_kthread_comm(tcomm, sizeof(tcomm), p); > > else > > - strscpy_pad(tcomm, p->comm); > > + strscpy_pad(tcomm, p->comm, TASK_COMM_LEN); > > =20 > > if (escape) > > seq_escape_str(m, tcomm, ESCAPE_SPACE | ESCAPE_SPECIAL, "\n\\"); > > diff --git a/include/linux/sched.h b/include/linux/sched.h > > index b6de742b1155..f7fd2b7d131d 100644 > > --- a/include/linux/sched.h > > +++ b/include/linux/sched.h > > @@ -323,6 +323,7 @@ struct user_event_mm; > > */ > > enum { > > TASK_COMM_LEN =3D 16, > > + TASK_COMM_EXT_LEN =3D 64, > > }; > > =20 > > extern void sched_tick(void); > > @@ -1167,7 +1168,7 @@ struct task_struct { > > * - set it with set_task_comm() to ensure it is always > > * NUL-terminated and zero-padded > > */ > > - char comm[TASK_COMM_LEN]; > > + char comm[TASK_COMM_EXT_LEN]; > > =20 > > struct nameidata *nameidata; > > =20 > > diff --git a/kernel/sys.c b/kernel/sys.c > > index 1d5152d2395e..76d77218ab19 100644 > > --- a/kernel/sys.c > > +++ b/kernel/sys.c > > @@ -2535,7 +2535,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long= , arg2, unsigned long, arg3, > > unsigned long, arg4, unsigned long, arg5) > > { > > struct task_struct *me =3D current; > > - unsigned char comm[sizeof(me->comm)]; > > + unsigned char comm[TASK_COMM_LEN]; > > long error; > > =20 > > error =3D security_task_prctl(option, arg2, arg3, arg4, arg5); > > @@ -2601,16 +2601,16 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned lo= ng, arg2, unsigned long, arg3, > > error =3D -EINVAL; > > break; > > case PR_SET_NAME: > > - comm[sizeof(me->comm) - 1] =3D 0; > > + comm[TASK_COMM_LEN - 1] =3D 0; > > if (strncpy_from_user(comm, (char __user *)arg2, > > - sizeof(me->comm) - 1) < 0) > > + TASK_COMM_LEN - 1) < 0) =20 >=20 > Nak - you can't do that. > You are reading data that the application doesn't expect you to read. Or have I got confused over the names... -- David >=20 > > return -EFAULT; > > set_task_comm(me, comm); > > proc_comm_connector(me); > > break; > > case PR_GET_NAME: > > - strscpy_pad(comm, me->comm); > > - if (copy_to_user((char __user *)arg2, comm, sizeof(comm))) > > + strscpy_pad(comm, me->comm, TASK_COMM_LEN); > > + if (copy_to_user((char __user *)arg2, comm, TASK_COMM_LEN)) =20 >=20 > Double-nak - you are writing beyond the end of the applications buffer. >=20 > You can't change the user memory that the syscalls access. >=20 > You can support the longer name for read/write of /proc/self/comm. >=20 > -- David >=20 > > return -EFAULT; > > break; > > case PR_GET_ENDIAN: > > =20 >=20