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 2C480CDD0FB for ; Tue, 22 Oct 2024 23:08:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AA11A6B00B3; Tue, 22 Oct 2024 19:08:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A2A576B00B7; Tue, 22 Oct 2024 19:08:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87C2F6B00B8; Tue, 22 Oct 2024 19:08:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 66B216B00B3 for ; Tue, 22 Oct 2024 19:08:07 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 2490CA05CE for ; Tue, 22 Oct 2024 23:07:36 +0000 (UTC) X-FDA: 82702777584.06.E1E2CB4 Received: from out-170.mta0.migadu.com (out-170.mta0.migadu.com [91.218.175.170]) by imf26.hostedemail.com (Postfix) with ESMTP id B0946140016 for ; Tue, 22 Oct 2024 23:07:50 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=pIn2BieM; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf26.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.170 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729638373; a=rsa-sha256; cv=none; b=3iWQbWUKWuxRNcMJqe3waSDmJOtAf9ZUmmDJKmBtMYQwkNQJJic7NVMBSUgsh6N+ddk2Qs ie8bMTNKj7f2NprTZz93fCfnstFFx0APPkoig8CZec+mBwrIMUohV9zsDYZMvtYtloW5mV TGgfo0SXGFrs6jc96YnJHhrYoXkWZFQ= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=pIn2BieM; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf26.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.170 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729638373; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7xjrcnL/e30DbPJqsC6F/MsDuBR8H51xexJNnjASfUQ=; b=7P5MbqZTULQT7iw+p3UVsSkgYVKE/gf5f/euuXo9dy+JO1UrFR5iTxV59eKXOxbbEy0H/C mSFAFkxqpiV246bFnpwdFd/zZso7FBaOhrpaJB4BJGkmJPQYUHzIXZnYg6ahyCsjJi1/TH q6aK1MKshrMv4qEOLjb6hO/fNk9GJGw= Date: Tue, 22 Oct 2024 16:07:50 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1729638480; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=7xjrcnL/e30DbPJqsC6F/MsDuBR8H51xexJNnjASfUQ=; b=pIn2BieM4mNZOGCG5/W/QFYFLa0lSoVyV1FeC+poO14SoCL7n8JT4VzjkTZiBggUAj1W/2 segB0IttUvqJqdIfuGnDaUjSW6R7J96pi3d5ger5wi9G5MMXj/f+tKa7/99RTSUOkZiJSP V5/Wq8sUK7P/SxGifV+FDc7Q2ogEN1Y= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Shakeel Butt To: Martin KaFai Lau Cc: bpf@vger.kernel.org, Alexei Starovoitov , Andrii Nakryiko , Daniel Borkmann , Kui-Feng Lee , kernel-team@meta.com, linux-mm@kvack.org Subject: Re: [PATCH v5 bpf-next 06/12] bpf: Add uptr support in the map_value of the task local storage. Message-ID: References: <20241015005008.767267-1-martin.lau@linux.dev> <20241015005008.767267-7-martin.lau@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241015005008.767267-7-martin.lau@linux.dev> X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: B0946140016 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: ihcm5tif4bebm1mmjhuqmbr5wi5afmqs X-HE-Tag: 1729638470-325056 X-HE-Meta: U2FsdGVkX1/b/lgkq9grmN1slRlhdEPLdIHOwzyhdSo5u550DHMle4YLRZh+JqqLBpqtpBO4e6dAGXJr8Zw/uUt4iqcyDUVyH807Wr3I2wjv7YQambcOmqvrhofx9J6B3+bGunRLCN7yK1uDJYiJZNhj/NBJpNNHPscMm9GLFjI780xUUJu2kXU0X06SLwJaXepZ65tOHCqgiLj4oRlHFcGwMMeHr04RojM+5xUOIyA4FWw2btd90teNnMX9x5jmaAa59HWClt4Baa7NX3xXcthLXir/PdsGLmcZNypXiVInwWowSe2nYZb+LHuEs7k4z7Ylwf+vhSGAA6UAY/4EGCxhQ7qd0fHJWzjzCcRi/QKNUrllj/TPac4kW0zwLI0PHtJCjk4TOhI8PLQhaaZ1KPxV8obc7vyM/9nD0UHVoaqx8vTIFgmYDhZhWeDQUG/o9s534TCPq2fUrlty5fE2bQGtsud0GMG0RFAk+APtuIQuyszhuip+E/l6uecX/veEtvC+kiBdI5uhlJLAsLMmgzWiEf53tVUIXJd9hsMtJhJeeU+X/nMz5IJP7fYXgnzUjkaF4hO4qMwPeu8CefLqyF5rfgpOvBOb1fFsAjrgTiQhYpwYvgwiw4KHbdoQb4WPr5JETgRsacYSTU0T/L5EabeWqPyBtKGWoZ4Zm7ANY+y5Y2WMU28KD7rs+kGYqTE0r2yT13GHzOew5c6Oz5xu4fuPhDyefckAshBgjz75XkNjz4i3r1AUUE/UWEVLTaB5WGs2qz/2tVbEEXv+keLi40cicf772MOzb/42RkfpyZDRAmlWgqqMOE6rV5BeAc/ALq45Pw5YCQ+EtL3i3k84pvp6G5OJFUMWIWBE98sy3V/QGgN27lSl1bS8uiHOYRBpTYp0aeUXx7WqyFZmHMxPe0NU7UXYfs43u1wDTYwwDgpzxB83jRQa8zyugBWqfLpLx+HV1wzcnJPR2ALCZ4r NIA2ZDef ShHsU4DAJow8pZkz4C/OjrowD+veQdgpDk4H8PMZXKgwyHltIUxWAmxv0pVfjAVYMIHXjJ7TNhcYvZG/l06gY0I6SBW2INyswADMjMEMkDID4gT/gyoasWj2BAYI3HKSfs8r1ogfiEmlXjHziP+2fXlUxE2+NPwnKhLvLVByTsWhRJt6zFt5e24PZJ6Ddrsfa3TXTM/jmUw8jfN7gL60a2pTfbXBUCREDURmjBNzIvDRm4kYIVuuBdCxpqR8L5LUPNxJrvkE+vcMU8t20OyiYox2xl1DSehNHmDYO 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, Oct 14, 2024 at 05:49:56PM GMT, Martin KaFai Lau wrote: > From: Martin KaFai Lau > [...] > +static void unpin_uptr_kaddr(void *kaddr) > +{ > + if (kaddr) > + unpin_user_page(virt_to_page(kaddr)); > +} > + > +static void __bpf_obj_unpin_uptrs(struct btf_record *rec, u32 cnt, void *obj) > +{ > + const struct btf_field *field; > + void **uptr_addr; > + int i; > + > + for (i = 0, field = rec->fields; i < cnt; i++, field++) { > + if (field->type != BPF_UPTR) > + continue; > + > + uptr_addr = obj + field->offset; > + unpin_uptr_kaddr(*uptr_addr); > + } > +} > + > +static void bpf_obj_unpin_uptrs(struct btf_record *rec, void *obj) > +{ > + if (!btf_record_has_field(rec, BPF_UPTR)) > + return; > + > + __bpf_obj_unpin_uptrs(rec, rec->cnt, obj); > +} > + > +static int bpf_obj_pin_uptrs(struct btf_record *rec, void *obj) > +{ > + const struct btf_field *field; > + const struct btf_type *t; > + unsigned long start, end; > + struct page *page; > + void **uptr_addr; > + int i, err; > + > + if (!btf_record_has_field(rec, BPF_UPTR)) > + return 0; > + > + for (i = 0, field = rec->fields; i < rec->cnt; i++, field++) { > + if (field->type != BPF_UPTR) > + continue; > + > + uptr_addr = obj + field->offset; > + start = *(unsigned long *)uptr_addr; > + if (!start) > + continue; > + > + t = btf_type_by_id(field->kptr.btf, field->kptr.btf_id); > + if (check_add_overflow(start, t->size, &end)) { > + err = -EFAULT; > + goto unpin_all; > + } > + > + /* The uptr's struct cannot span across two pages */ > + if ((start & PAGE_MASK) != (end & PAGE_MASK)) { > + err = -EOPNOTSUPP; > + goto unpin_all; > + } > + > + err = pin_user_pages_fast(start, 1, FOLL_LONGTERM | FOLL_WRITE, &page); > + if (err != 1) > + goto unpin_all; > + > + *uptr_addr = page_address(page) + offset_in_page(start); Please use kmap(page) instead of page_address(page) and then you will need to kunmap(kptr) on the unpin side.