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 3B77FC021A0 for ; Wed, 12 Feb 2025 17:34:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AFA3A6B007B; Wed, 12 Feb 2025 12:34:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AAA8D6B0082; Wed, 12 Feb 2025 12:34:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9721C6B0083; Wed, 12 Feb 2025 12:34:03 -0500 (EST) 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 79ECF6B007B for ; Wed, 12 Feb 2025 12:34:03 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id F28DF1202CC for ; Wed, 12 Feb 2025 17:34:02 +0000 (UTC) X-FDA: 83111990724.14.633D1A3 Received: from mout.perfora.net (mout.perfora.net [74.208.4.194]) by imf13.hostedemail.com (Postfix) with ESMTP id AF30520010 for ; Wed, 12 Feb 2025 17:34:00 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=jordanrome.com header.s=s1-ionos header.b="z23///Xj"; spf=pass (imf13.hostedemail.com: domain of linux@jordanrome.com designates 74.208.4.194 as permitted sender) smtp.mailfrom=linux@jordanrome.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739381641; 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=ByANMfm1xiq2Jv/kw72ponfJbhIOJ6j+ZFzbj6o8Vbs=; b=furdDvfnAv64t5zesX5jjIhav8qAA1WVdHHlvLU9EqYrO3Xma0mn6xCrNwd+0tW0SBzQEH AEanhvF3f9RFFHncUp46HoRgS38lBhvTxZJduOE/axK0SGLAx0ZnUayO0g0WpA7bg7cnQK EOoyeaHk2vgaOXD0+IUv/NhnTwFdwFc= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=jordanrome.com header.s=s1-ionos header.b="z23///Xj"; spf=pass (imf13.hostedemail.com: domain of linux@jordanrome.com designates 74.208.4.194 as permitted sender) smtp.mailfrom=linux@jordanrome.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739381641; a=rsa-sha256; cv=none; b=15QTmXG2W9af9c3oH8r6bZvUo84A05+Yd2rQ0RAMPV1sHwaOM7xxDGPLyKzHFxprNdtdV0 bXwaJRVRlp9YPQLYIKl/jtr4OODKTmRMOB8E/RagDpvNummZ3MBi/7KSB/OyR6bsGUL3db O4u+HUzr57Z5DuuQVmTWacJMkSfSVDg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jordanrome.com; s=s1-ionos; t=1739381639; x=1739986439; i=linux@jordanrome.com; bh=ByANMfm1xiq2Jv/kw72ponfJbhIOJ6j+ZFzbj6o8Vbs=; h=X-UI-Sender-Class:MIME-Version:References:In-Reply-To:From:Date: Message-ID:Subject:To:Cc:Content-Type:Content-Transfer-Encoding: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=z23///XjGfJD05MLTfofqKhHMcMqYYH+tBAPP2i4tPWam/YiOLqyUGKq+F1pesqz 8Rg+RKO33JAXWVmvPyfTNf9KTfRBdBKcem9eyBKYfoI4dqbaKJA7OUynMg6p0amq4 lnsk2HybRYN0Rre7C0EHmLq79WL/zz1JGsP5gsidgbLlSkQ3mVCtco+rhyscyb/z5 dqa7MsFP6Sy1+zBhvyHuXnbUxPDGiUnGfH83JT3TKhoJO/1UBm/U2EMtNrGYVlB3B s+G6tLzRat+LbOx4xp1EqCR69udXkBlQsDfJHqtAzjNhex+4atAb6ULQX4w2+HYdJ MFYikokG3OZVAkihtw== X-UI-Sender-Class: 55c96926-9e95-11ee-ae09-1f7a4046a0f6 Received: from mail-io1-f53.google.com ([209.85.166.53]) by mrelay.perfora.net (mreueus004 [74.208.5.2]) with ESMTPSA (Nemesis) id 1MKc4m-1twUeZ2p2K-00NeZX for ; Wed, 12 Feb 2025 18:33:59 +0100 Received: by mail-io1-f53.google.com with SMTP id ca18e2360f4ac-855190e244bso323374939f.2 for ; Wed, 12 Feb 2025 09:33:59 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCXg00XlUFPGh7plkQw4LWXDdnYBTjPmE5EuxPyHWGG/KiCKLVezJDmJQoVmR9Llk7YhOvGln9Sxvg==@kvack.org X-Gm-Message-State: AOJu0YyEV2sgrJIKldKOSUQndB5o57os3fLYuypCmkhyOIHSQtdwvJoT lXEbYdGPQeg4XYtqPKlcops6spSw3M6e434kV5iwBv3GdKtayhHfU9RfwLE/8wBXQJppcB9/ZXc 30QEk6coj6nRITKlOhlpp+w2Wp/Q= X-Google-Smtp-Source: AGHT+IHYtYCs1Zfc4tIRaiA2ngDcck6IGsVWQtsvnMOAw58zkYn+teEUY7Jgb74jfFZQqDyi7vAyaxt3u48ic4JRYY0= X-Received: by 2002:a05:6e02:17cf:b0:3d0:1fc4:edf0 with SMTP id e9e14a558f8ab-3d18c2d5526mr1580435ab.15.1739381639162; Wed, 12 Feb 2025 09:33:59 -0800 (PST) MIME-Version: 1.0 References: <20250210221626.2098522-1-linux@jordanrome.com> In-Reply-To: From: Jordan Rome Date: Wed, 12 Feb 2025 12:33:47 -0500 X-Gmail-Original-Message-ID: X-Gm-Features: AWEUYZmwFNnaAmfKVyum6PuSMCiemWAIejoB_RcHEEXKSV1pnmDA-bxGONJ6cE0 Message-ID: Subject: Re: [bpf-next v7 1/3] mm: add copy_remote_vm_str To: Shakeel Butt Cc: Andrii Nakryiko , bpf@vger.kernel.org, linux-mm@kvack.org, Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Kernel Team , Andrew Morton , Alexander Potapenko Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Uknw3IKmc25ZxYzQ5fLLTuVAtlk9Xu0yyw1Xsk7BW1hQyyYiN7F IeQ6FDlomIjiNewwiLH0hTaWWJdAm6oEw8UOTaEv0OpwLdusqHkQ63DbKNRxkpWJVnSlmah Im0fz8mVnkD2ZKcIMNv+PIt4ErPeRilcV8Fy6+2ASyB3nIokMbhZR96g6JLAhA5Shn4Syzo jnGn1asL512qOKf03f1XQ== UI-OutboundReport: notjunk:1;M01:P0:jSsCn914uAA=;/3WGVBYd9EubpzL51Qk5QDq84H4 wh8TphcuGV9JQi1UUg/TCOWSQmXG8Y/r4WsUkD7KVxYvgBbNnHecgYr5RlOLIythaoB/qS7YM JxJviT2TN8SX5A1wLK4h+VZjI8rpBcFex00SWJFeh87IIdHz5Y3P4nzKoDxxxhLZN2quC3L1+ Y6BZR+zG9bPEwM0pLK19LrASgjlhonR6VdBPib3rSY/Hk0FHwNeixrV4b+/pftyUdUKUGxBH8 pIQsyM1a8c7+KaYtfx2rDNdOGFx8l8Re9d6S2MUGf2GHxJeI8/hjx9l6TqeYiHgANboWyBysh pJzx82ggVSDz7eaJmA0ilNoQ2YD6rndjzBmMO3heJEq1JSWKpIYvZpx+Cdfj0qkGQV1wNLJv+ 939CujpNzbUUIIaT7D6XzyEaOkI07QTNH1nCAZDFyj5DLqzlIjLd1trqeSRrjqQafYmrTPzeR Sk+7mLn5Zfm6Cye/oc8DgByw9K81RlDH1vo+zCkuXfNR+c7GYE0ksyX7V/bEOhvlu3IZ2Abe5 05VpIlEmP8gTerVBWrOAJZH7SIwGWuRZoUGs9rOBLrpGBRDRUy98U5nkCmA1C2m/+Muv/saz3 Il4X5JcPbRECwUw9WAF+0KdzTPUDACfroKbiLQ2ShLKylbliKrbfW9elbrzywZNOlb1YBYzjW 80ANOE0YIlgUge65ZpbFl+oWaAKXqkI6prFfi05efxMlC9S4TDKlUnbqK3TD88C4rnmpVdaHt eEUiJ82nQaAfIlc3MHSnh0WSoHcgo8G9Bw23T1s3gWwzrlkkL2ZHLT1SFzZAFDOJeD2bIenCj 51ZIpz30cl3MMQDqf9APKZw3VtE6504Eo8qbpj3hg5ZkYWngpdME8K1QpZTYDV5kw4qyzr80c 40OmAxd1+1YcTOuztUrbJmgCxPol05aemXLj/xC/CMu5RmHITHPoEpJBszJmexd65QhWSaxtn saeyiQ+3rZpU0jd9llX18RZIurN9fmLdznKm++3VxJ0rfqsjvMTNZcT7REkIqzNlhF7YTyPIE iqwU4V6iWDmoLqrzl8Zmq7/CIB/i4np0vfbVH165vu8PwEt+qpoe5Inn4MtvhHs2Az0eS8drc j21NAym3V8+OwmHz5jaB08pcyLhKisvwAILZ82iTSbYRnKyOV0yDX5HHmh25zAJ7+gojmCLme HvT/Oo2y5VRk005EAdRyes4toDDmE13lkpJ2TGbzpKB49BAV4ymTygRTuwy0RRcNUrRyCt2WX xni50+fzM7zu98mXeoBO6AhzKW/t4BQ6hJbpi/mfZyq+u0y6SuOSARD+2HsthLCUxOrAXK5h/ VU5NB0MVCJask8Rtr/UhRJJYl+BzFqFw4GoVmPYKHFLKyZ6td3yKV3nPr4dT4WkCdnx X-Rspam-User: X-Rspamd-Queue-Id: AF30520010 X-Stat-Signature: ed1snzty1erxcjnbhhcqe8gaeh5cdy83 X-Rspamd-Server: rspam03 X-HE-Tag: 1739381640-505955 X-HE-Meta: U2FsdGVkX1+Hmpbyb9DMW7Jypr6n4nDoL5cLAsneLizoMn5bi1OcVPiKEzuCETvzIx54K7QZbbLQC53bMJwD4H3c/5o8rdrOgPT2wXXUTK+KN6dwn9TjyXt2Cml1GSqR21tIyCWJ3Ou9uqmHiX4oqh3eo4druPAsUg3iEaAIiREg3nUXlOX0eTydkrL0zjJ+seoDVdAgK07l3tMBk7mo2QGvCNSCOfda+LNDdzhA7uKyWj+8evZoSNcz7sFGfTf2n/VDcyqvPDR+x91vUVe+2FUc3Q1mHJ+r/moJk7E1//AjaJ3nkn+oMLElpLETMVLJheyqYOMXeukvv5d0/OsGQAxP+/1V3UqyAUIQXKnA7ozGtdaP1swBuqGEom7lfDSffDxgJETDgWcApOg6gvSjb9Tszett+NB4PkCALaHfh7eET+oKWHyHwsopJZzlnuCsYlDa4UXU45+UWPECH0dw6D6pPL4nsuhfcZS7zatTDiu66W+oruU3jbXCyLJprIQiS9JMxPy8cHEOiaI8GjApjPSM51XrOhDF5eULzxon0jgLM2yJ8p8BlqvBwXsbC1iKRsuBoWOpJkUVz/Yw+bIF7o/s6nMVQCSEq4QUDSynCk00mZkWnVL3/YArxFgCFby6OACtGJ1fwmX3DQuxoc8rbzYgFw5NrF0muk1m542JM53BpsVBGqNKfrgZF4xGcysssF2Rv4t7DIcXcSw4KxzJs+nLgL3KU5/dFwlDnwBO/Ji/G+1F37Oknrp4LrdtVbZJUYTR7LKIrAmAlGJyPgN2tiFOKhCPnbsKTOlUpqevObMFbrvmRnL7bxvdQm13zwNprv/IoS3FL3QywqPvqOV8fNKQ119gi05vUax1AQgq0lTDPGT8fr9QmHubA9mZ4dGMX6chiMn3jxQ/Ikc95gQLW3GL5CEdUo7PDLEM/JzihTNFZYi1wR3OiWJDd+JeWmtWihV/C2vfEcqaAURjAi2 roZYdkzv DTxx9v7J3IpRQgE+MP9+DFES1lpJRYMIPQJumxqje0UHbS/Ag6oV/fo1olGkxndzSaN0OfSbzw5bKBWx8T7oOhMssCS+HdW68qytoQByVT9JhN6//cJ4/SCNSvbp+edAk5Z4NrgxVTVksJYY4bjqk7kFPt60HGlDZN26RAZPIlk1tApKibBsVy4OpqblGsOzWJNOT3Pv1D1Eaomiv6n6YWKKjw6AMxganJzcmkdRx6kUohB3SAtjssrdYbnj5N8zVhgp3GBDd7RWCvUXESAzoqqOBIMVyJ/RI8RDfTdWbENkTfuH1Q9m23GUec7RGeLG86YuPHR3MiocrC1ohdcmwTQfTwEm13Oodt07+IAb6ZP4qDCuFEdViSO5TMsNPDBGxhCNac62kuUZspAJ/LcWCYm0h9ayK6mJiYV/Fm0PFFy7tGNY= 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 Tue, Feb 11, 2025 at 9:19=E2=80=AFPM Shakeel Butt wrote: > > On Tue, Feb 11, 2025 at 02:07:31PM -0800, Andrii Nakryiko wrote: > > On Mon, Feb 10, 2025 at 2:23=E2=80=AFPM Jordan Rome wrote: > > > > > > Similar to `access_process_vm` but specific to strings. > > > Also chunks reads by page and utilizes `strscpy` > > > for handling null termination. > > > > > > Signed-off-by: Jordan Rome > > > --- > > > include/linux/mm.h | 3 ++ > > > mm/memory.c | 119 +++++++++++++++++++++++++++++++++++++++++++= ++ > > > mm/nommu.c | 73 +++++++++++++++++++++++++++ > > > 3 files changed, 195 insertions(+) > > > > > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > > index 7b1068ddcbb7..aee23d84ce01 100644 > > > --- a/include/linux/mm.h > > > +++ b/include/linux/mm.h > > > @@ -2486,6 +2486,9 @@ extern int access_process_vm(struct task_struct= *tsk, unsigned long addr, > > > extern int access_remote_vm(struct mm_struct *mm, unsigned long addr= , > > > void *buf, int len, unsigned int gup_flags); > > > > > > +extern int copy_remote_vm_str(struct task_struct *tsk, unsigned long= addr, > > > + void *buf, int len, unsigned int gup_flags); > > > + > > > long get_user_pages_remote(struct mm_struct *mm, > > > unsigned long start, unsigned long nr_page= s, > > > unsigned int gup_flags, struct page **page= s, > > > diff --git a/mm/memory.c b/mm/memory.c > > > index 539c0f7c6d54..e9d8584a7f56 100644 > > > --- a/mm/memory.c > > > +++ b/mm/memory.c > > > @@ -6803,6 +6803,125 @@ int access_process_vm(struct task_struct *tsk= , unsigned long addr, > > > } > > > EXPORT_SYMBOL_GPL(access_process_vm); > > > > > > +/* > > > + * Copy a string from another process's address space as given in mm= . > > > + * If there is any error return -EFAULT. > > > + */ > > > +static int __copy_remote_vm_str(struct mm_struct *mm, unsigned long = addr, > > > + void *buf, int len, unsigned int gup_fl= ags) > > > +{ > > > + void *old_buf =3D buf; > > > + int err =3D 0; > > > + > > > + *(char *)buf =3D '\0'; > > > > LGTM overall: > > > > Acked-by: Andrii Nakryiko > > > > But note that all this unconditional buf access will be incorrect if > > len =3D=3D 0. So either all of that has to be guarded with `if (len)`, > > just dropped, or declared unsupported, depending on what mm folks > > think. BPF helper won't ever call with len =3D=3D 0, so that's why my a= ck. > > I think early return 0 on len =3D=3D 0 should be fine. Ack.