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 99486C3600C for ; Tue, 1 Apr 2025 02:08:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D8F17280002; Mon, 31 Mar 2025 22:08:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D3C4F280001; Mon, 31 Mar 2025 22:08:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C041C280002; Mon, 31 Mar 2025 22:08:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A46DE280001 for ; Mon, 31 Mar 2025 22:08:13 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id D5DDCC06E6 for ; Tue, 1 Apr 2025 02:08:13 +0000 (UTC) X-FDA: 83283840066.25.0155A95 Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.52]) by imf25.hostedemail.com (Postfix) with ESMTP id EDF0FA0010 for ; Tue, 1 Apr 2025 02:08:11 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GLTFYiWa; spf=pass (imf25.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.219.52 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743473292; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Ms0+har1C2wQOkI4KlWfLkswK693L/k5CGR6bBU56S4=; b=DSjarIpmywIhnd8YYcnSmf9ZflGxlR2nzrEvDluOensCmyh7cv44NdgjLBtjdR8OAv8Wo8 ayzWBbEoGN+zuknVyRI0AZdxf7SfymeYnX+9Ecj8TdUycZPat6o+DZjPawboaulusJ9HwN dJNzSymUUV2DlnkKvW3VZBqTHD7Urs8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743473292; a=rsa-sha256; cv=none; b=GAjOH4hD7rnk3D/RMjy/K5iby5gbP7/0T663yC61FSzpep+83E9gav4Pghuk+luRqmHvA7 HYAAAhwlH8rOnXxk9Ei9gV19QWyUSrH7jHwaoMz0WRnjEnDrKsQlPVKiC/mMxPAJfVqq3I E4eQxtf34UYY79/lWSeY69h0ciU8sVU= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GLTFYiWa; spf=pass (imf25.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.219.52 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-qv1-f52.google.com with SMTP id 6a1803df08f44-6e8f94c2698so27591256d6.0 for ; Mon, 31 Mar 2025 19:08:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743473291; x=1744078091; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Ms0+har1C2wQOkI4KlWfLkswK693L/k5CGR6bBU56S4=; b=GLTFYiWaFsdLkwKNTfJ/hoyXDCzBXwUDLfRdIDj8yoDxYm2Ib+paL+q31B/zbZQKor Hh5a5qjyl0b+e+CvEJ8K07KNnpucQ1n7i8D0ukWCJ8VUFYWwe8F8abxBCkDHWGwH6dd1 VEYHsSPoZ0KSbdMjVPENIa0N1BveLBMFoPKL7BEAMv/595mDkd2x8OkBSdeKi6zOJJbN COMaGrb0CHQdHIVhRBuMpz34kEDq3T0ttryNpwPhhaVkHYY8UpOv7y/9iCA5yUQbylJB rMIxw7WL6T+OpYZwCQgU3iLvtcCv4qP7Ck43oE9wY5Wt+Gjrxf4PH9Qj94lsBrbH55k7 lTBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743473291; x=1744078091; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ms0+har1C2wQOkI4KlWfLkswK693L/k5CGR6bBU56S4=; b=cs893BOj0RUR5AD0IUqcEm3TgegG/SsuQUEmxr5oszHS5VM/+JhlwVYmV04cJQ/J0R 7g3J297cZ4Xaz/U5bnJypTX4dq0eliH4roGouoLQgXpKBcGHqawTf1Ps3ykJb3oVVPby j34nfIKbZ4vJytQrg1rsTB4TpBJ7YeFRWLTW86juZsSF15VKRFSvQbSt/8PIv3/ZmP13 mxB1nt8FEZktw5Hj0S044D1MrfAz+HPt/zbLWH+upo2CE3okqTsZZlZiVI8mweTZOLnW GTb5WXF57p7u8kRfGXDWXNU7DmgcOwrf7nh9wKWg4qYe9Z6Ng3pDjky8Gx9bdieFEMGS d6KA== X-Forwarded-Encrypted: i=1; AJvYcCWDQUKLUAmK99ecLJhGocrk2rFRCupLlXZprjeNuEGntkzO65k3bi8TmZx+Zlt7fZ6XzTVFNBochw==@kvack.org X-Gm-Message-State: AOJu0Yy+MfoyrciuEXlJQZGSzlJTR+SW3SA9i+18D8BQJckVZB8wrbgG 9YDn+nLfDN4XvezIbtc88PABQcraXqtoXgcbZzycOfCEYZeYZb0Zyj+ExOJhdC8Zi0vL69Z/MqA OHD85RtEzay6wWzTEmNoxngU3myc= X-Gm-Gg: ASbGnctY47MdjO5P9PEUrEj8Rlcf5wWIbtCZm2zYKAu/27RksDl3x9c5qCXBTPsOBmS 5CWPtYqJsofcfLLoH9bTykUTarMg7jkSBzOhbR1siTgTR/Jx9qHoHLB6O9ZiUvfAhMRgP/NXY0L PTLLzJ3cJE0yt7eWPPLxlmtY6sFDU= X-Google-Smtp-Source: AGHT+IEwVwo9jlkAbUXTU14Qfh3LA01iPKDDWMjUrm4tnGQHU4i3QsPK8QEDaJfFZ5Z8PEovYhXsWbFiclds5IHQi9M= X-Received: by 2002:ad4:4ea8:0:b0:6e8:9a55:824f with SMTP id 6a1803df08f44-6eed5f60fddmr145906786d6.6.1743473290823; Mon, 31 Mar 2025 19:08:10 -0700 (PDT) MIME-Version: 1.0 References: <20250331121820.455916-1-bhupesh@igalia.com> <20250331121820.455916-2-bhupesh@igalia.com> In-Reply-To: <20250331121820.455916-2-bhupesh@igalia.com> From: Yafang Shao Date: Tue, 1 Apr 2025 10:07:34 +0800 X-Gm-Features: AQ5f1Jogo27TUblm0QChMfxpov615glFLI-myzoObvnllqhLHnsXspUqCVEi74w Message-ID: Subject: Re: [PATCH v2 1/3] exec: Dynamically allocate memory to store task's full name To: Bhupesh , Linus Torvalds Cc: akpm@linux-foundation.org, 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, 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: ioumurj5ne9c5pq1kccsn5pewb8j4w98 X-Rspam-User: X-Rspamd-Queue-Id: EDF0FA0010 X-Rspamd-Server: rspam08 X-HE-Tag: 1743473291-555660 X-HE-Meta: U2FsdGVkX19HdXrbZac3DIl7zWBedQ9ZPVWn+AaKAOL1vntLAUfvdaG8kqt0UKErN3ZZ4STNS9uv/ka2EPSj+aWWuFybjbupjzoTrs7cIUnMSCZBK4G4isiNPFhONDrawND3/OxLEv/O9ON+3LGEKTGa3dwKXSPXTeoxBExFyza83x2GP9IhA3QKxXHhLL39TRi4wK+14JJ7uR3UdzPP6rNuscaiI/A7zu/ADuaE8+S+UbdHO7/fDZningjS9MCr0WcQH2ANdx5iPjpHpE74al5yu3Rxz19lsiAkTcRRQZL2AgbatP+JMYAdAX9O0ss4VgRlm7y1dm/a7gw6zPEzppL5m7u2nRMU5/tOpWMthvhRZnB43CYbiYvajpmg5LUW2JI/GQLuuz6zJtcuTTvF4GkyGMEzNjYmHqJ32ogFL1QSX0gCOZ6nn2tBP/hQWeSwnFE+P0eveg8Wkah5OGS1/WzLaPEBO+h//szFbzsv0PvTWh/09fLo5OnY1zt5sOYgVjjg/c3NHAuSC9EmBK3otNmc2GFzNQHP76siLR3O0JZLWb9//YygLCahUlHHxU+NcHaFq6wZfA07POBy8+xLc+SeSVVkXjy4DJE8zuNIwoJU0XOOMiTEZZxBFZftDCPUCmnxwvBRtXeIw6CxC80AR08nJRYA/N++VD5K1UPollH/dOFCAWYNpecR4pNx6nkRqBdcKp2xmXzvht1YW7YG7kJpph3yC6iMc1QIRUCs+zTxP1AWqmFKpBiEOwxHUYMrltDOiazca7z53JaVxjLiRutwW2oj772e6WIW+A6cAiy3o6SCa6vLOgLvLIhrnY0Q62puchJKx4nrTKKoZfv5GUVe7X8fEjDlUW9g7P5N2ocyaStcGY3oMdeU0/LAm+DJ4G6WtU0MnTHQs6QGLpJWkAf4NJzfYljYLqMXBfPa8PLUv3S926vkhbz3ALo75yc3M549pHKtlt7iP09JoPO VA6n7Uea cKaBnMjnuXgegtdE36p9nkr91OwoVl8bnyAbNOJ3vH5b52RuXxgVBrRzPZNHsbYXo7hSMSvD1Cd1759BmbNcY6NiPRfHGAT14FDy8hdrHjQT12ANckonorl67nwC2S9403ZzA4ZFcgAOR2xVk5xXj6CgEh9eHVzDSpVZfVvRC8i4w+DJtlTs+GeSCeKVIn4v8Pcfh41Rpe1nGAYO5XhgcmwIjAZ9DX5c+EO6ufuxUmdKQHp/xK56iRQZMYgJAMdEUWhMCFxI3JTpx2xKhHb4zpobAR1pgsABvCMJ+P9E2b3qfN2p65K3YyqcftXVQiDx/qKFgFiwgwcvQJOJbsy/2PoC4gOZ9SoQTetCpwtOztUmLoeTuXd94bGlZssqZn9+EXUZwF8PTjWEux0qHwWxBCdniI4EOo7t8cpW/6hqzQVoJWcf5EOmEvWp7PjjyFUeJ1BchfFzYFw8zpfrDCJsa/MbQGiJmWaim7HXebU4EzFtqFCSJ6t9sqeCXQhlP4clIvS2SANYxBrkP8F4q8z08MvsJgQ== 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: On Mon, Mar 31, 2025 at 8:18=E2=80=AFPM Bhupesh wrote: > > Provide a parallel implementation for get_task_comm() called > get_task_full_name() which allows the dynamically allocated > and filled-in task's full name to be passed to interested > users such as 'gdb'. > > Currently while running 'gdb', the 'task->comm' value of a long > task name is truncated due to the limitation of TASK_COMM_LEN. > > For example using gdb to debug a simple app currently which generate > threads with long task names: > # gdb ./threadnames -ex "run info thread" -ex "detach" -ex "quit" > log > # cat log > > NameThatIsTooLo > > This patch does not touch 'TASK_COMM_LEN' at all, i.e. > 'TASK_COMM_LEN' and the 16-byte design remains untouched. Which means > that all the legacy / existing ABI, continue to work as before using > '/proc/$pid/task/$tid/comm'. > > This patch only adds a parallel, dynamically-allocated > 'task->full_name' which can be used by interested users > via '/proc/$pid/task/$tid/full_name'. > > After this change, gdb is able to show full name of the task: > # gdb ./threadnames -ex "run info thread" -ex "detach" -ex "quit" > log > # cat log > > NameThatIsTooLongForComm[4662] > > Signed-off-by: Bhupesh > --- > fs/exec.c | 21 ++++++++++++++++++--- > include/linux/sched.h | 9 +++++++++ > 2 files changed, 27 insertions(+), 3 deletions(-) > > diff --git a/fs/exec.c b/fs/exec.c > index f45859ad13ac..4219d77a519c 100644 > --- a/fs/exec.c > +++ b/fs/exec.c > @@ -1208,6 +1208,9 @@ int begin_new_exec(struct linux_binprm * bprm) > { > struct task_struct *me =3D current; > int retval; > + va_list args; > + char *name; > + const char *fmt; > > /* Once we are committed compute the creds */ > retval =3D bprm_creds_from_file(bprm); > @@ -1348,11 +1351,22 @@ int begin_new_exec(struct linux_binprm * bprm) > * detecting a concurrent rename and just want a terminat= ed name. > */ > rcu_read_lock(); > - __set_task_comm(me, smp_load_acquire(&bprm->file->f_path.= dentry->d_name.name), > - true); > + fmt =3D smp_load_acquire(&bprm->file->f_path.dentry->d_na= me.name); > + name =3D kvasprintf(GFP_KERNEL, fmt, args); > + if (!name) > + return -ENOMEM; > + > + me->full_name =3D name; > + __set_task_comm(me, fmt, true); > rcu_read_unlock(); > } else { > - __set_task_comm(me, kbasename(bprm->filename), true); > + fmt =3D kbasename(bprm->filename); > + name =3D kvasprintf(GFP_KERNEL, fmt, args); > + if (!name) > + return -ENOMEM; > + > + me->full_name =3D name; > + __set_task_comm(me, fmt, true); > } > > /* An exec changes our domain. We are no longer part of the threa= d > @@ -1399,6 +1413,7 @@ int begin_new_exec(struct linux_binprm * bprm) > return 0; > > out_unlock: > + kfree(me->full_name); > up_write(&me->signal->exec_update_lock); > if (!bprm->cred) > mutex_unlock(&me->signal->cred_guard_mutex); > diff --git a/include/linux/sched.h b/include/linux/sched.h > index 56ddeb37b5cd..053b52606652 100644 > --- a/include/linux/sched.h > +++ b/include/linux/sched.h > @@ -1166,6 +1166,9 @@ struct task_struct { > */ > char comm[TASK_COMM_LEN]; > > + /* To store the full name if task comm is truncated. */ > + char *full_name; > + Adding another field to store the task name isn=E2=80=99t ideal. What about combining them into a single field, as Linus suggested [0]? [0]. https://lore.kernel.org/all/CAHk-=3DwjAmmHUg6vho1KjzQi2=3DpsR30+CogFd4= aXrThr2gsiS4g@mail.gmail.com/ --=20 Regards Yafang