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 AA4DBC3DA4A for ; Wed, 14 Aug 2024 17:15:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3F68E6B0082; Wed, 14 Aug 2024 13:15:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 37F8A6B0095; Wed, 14 Aug 2024 13:15:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1F9396B0096; Wed, 14 Aug 2024 13:15:17 -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 EECFF6B0082 for ; Wed, 14 Aug 2024 13:15:16 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 817CF160F60 for ; Wed, 14 Aug 2024 17:15:16 +0000 (UTC) X-FDA: 82451501832.25.72FBAB1 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf16.hostedemail.com (Postfix) with ESMTP id BDAB5180026 for ; Wed, 14 Aug 2024 17:15:12 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=TsMhsC1b; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf16.hostedemail.com: domain of dakr@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=dakr@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723655654; a=rsa-sha256; cv=none; b=x2r+qxd5poxsJ5HBDfT8CdZ3fCjyFP8EV7cn2DGbD2c/mcJkC1qQBBY3ZBfjIU7NiEgBce KhKcMrr+fzvB3+7IP9ZzGJCB4mbySZl+2GBpSwnM4IWebMl+AuA20VxIQMa3DuUNYmQ7+Z +Dsn426sdyjJE2EF7UBjd2UxBk1Z9Oo= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=TsMhsC1b; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf16.hostedemail.com: domain of dakr@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=dakr@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1723655654; 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=OR4Pw+odD7Ft3pzUBBh5zuGKZoxkY2Od1BgNfflkQCM=; b=dkKgFTlaRYfB1e0eLSKguPmOKaIuz11uHY/TnQwHT6dHNxarqXsTPNtHHMkGtcbnLUsA28 y+ICVYwBIVgpXbgHEOiQNAjdHf8EwK18Gm1HtDe6MuM8rYQpUHWZeZ4aTMLFUlk/vilV+X +sW9HCF+rxTZEw2q66uRyqzQM22Znr8= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id EC291CE1A71; Wed, 14 Aug 2024 17:15:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 29ECAC116B1; Wed, 14 Aug 2024 17:15:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1723655707; bh=LZNl/0dMNUwtsIJ7Bs4q3NpAqp++UT74bj432Awj02Y=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=TsMhsC1bTlMV+1CFcJDzm9Q9JN8DPtirmVnULKyLMmGs+c922ngMXJJlmR7aWRzv/ pSVoZ3DF9GPZKGLCjHKkJ5FSfzfmqgpxNU6C8mvGXpmBLBSN+Bukg/YfB4ukHmw5CW O4c7dhpOT5SrvHwq9dFrM+vl3j3RpE48cxYkU1VaqBswn3me2mmHwKvViFaDVNeURo qy/tQouX9m82sbdFKufG9BjiBK6GJbypq4TjrSiIs3lqQmcalnl2acDIUD2gQQRABI YbQgDsXmcfdAztqXjU1z2GgkXTNubeoz+ez0yPmnLWg+6AOjx9A5A9TJbCyWnhRFRm NI71ngU277img== Date: Wed, 14 Aug 2024 19:15:00 +0200 From: Danilo Krummrich To: Benno Lossin Cc: ojeda@kernel.org, alex.gaynor@gmail.com, wedsonaf@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, a.hindborg@samsung.com, aliceryhl@google.com, akpm@linux-foundation.org, daniel.almeida@collabora.com, faith.ekstrand@collabora.com, boris.brezillon@collabora.com, lina@asahilina.net, mcanal@igalia.com, zhiw@nvidia.com, cjia@nvidia.com, jhubbard@nvidia.com, airlied@redhat.com, ajanulgu@redhat.com, lyude@redhat.com, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v5 04/26] rust: alloc: implement `Allocator` for `Kmalloc` Message-ID: References: <20240812182355.11641-1-dakr@kernel.org> <20240812182355.11641-5-dakr@kernel.org> <17bcfe21-1af3-4247-98d1-480944be400e@proton.me> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <17bcfe21-1af3-4247-98d1-480944be400e@proton.me> X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: BDAB5180026 X-Stat-Signature: k9ksnrceepouprtr3yfdo9z1ibnue3dj X-Rspam-User: X-HE-Tag: 1723655712-157267 X-HE-Meta: U2FsdGVkX1+fiwpiVQlmpdOuPY+miQEiYqc5uniMqAuxTfSN9S4j6or6+rpRpV6RHbYrY4h+9vnXxQru6HwTc+FPvBugVHU0+AtDNTOMiXXmzZJtMcqvdhVmTGDlEX4bCVywowufCj6Qun56LuKIBIs6RzHUqIvfnKPbiPwe4dibpeyUT+r3Jdl5d9/qRmSsOv5iflRysbPGEQhmSddi3IJHZOmlfy6mdYpYt+H5rT6xOr0arWEbWKO0xVG0+TJUcct/X5aekOEUTmy2sGch7yxQKghkYDAB/ftVxgA9M7tEVdreBa4TtHnLy9noGyfzaAWY+A2F/mWXonRW7wNMBJqlDBFxl8Wv06Mx2Q4HuYrXvAcj77HBuJVhuIb+AMzsBbfPXbSNk0WgAqfUHnhcino14oC6AJKEpzQpzyG6rjwmwhBn4BQBhm1AI6Eha3IhMARgdSJjIcV0CJCV6oaIMX5b23AFRQs7dMR70Ja3mAwH26UEFbU+DOn6mJ4zSZ5jIUA2UlGHbZUYgakk2sfbcw0AZd20o99+BF016sBo/JD1uM2MwnbG3ExyHlIqGEBh+ws074lKj69w3OXpouRDu8nwJOoyriLdjuYuo0ufzHoCuqaAbykLCLfdTSerj9Qnd6fBylE1QRCXfADKe8U6NKwk7FTKHD9rNyL7WdJ4pQhpn9GU2tp9N52/T1cXIyLtb3nJzkPVnCcP5Gt2P3BYpW5//BifEdIepDw7/S8yF6Yjao/VZlpmfyzeF9rPMdiw5u8VJP+52gwXCOA8t2T3H6wMwgUCRUcjaT5FgZ4/eu6tvz8ZI6XgulE9JMKRTehHWYQFvL7m28qJCQdy2Zje0Hefheu0leDQVD1fxxRsmfoaQ83mqHu3n0fBzedetVF44HAe3nuLrmha16C8tAMLK3lCGa007KV6hbEYr9KNvcQBhNFO2V8zTH1kS6xaTalKYOZjxXMSiHIudxMdrxB 0fn1yxIO umyNZgGyEXpPfN0qc0JWzL5r5fno6gXsuJcxBMrsRsGOYN40/8incy+YVOekhlfgcFxXHHvFMA36+vATZVXJeVpKJ4AoL4VBHk3VQpKXTeSNaqlt8ARpcKW2/STP5/QaKlS/RZ9KvL/7yLVaDBFPiaugjg7aJWbI86G5vBHzTMdAV5UQmQIAaccCeAy5oIuD+4+YFmZA31oo/9yMlydBlhUlCCDtqsnWoGrUHFdYxXhWK7dGK/DajccsqU7zUugNH27eDEezf3JdwBfeEzUiMGUeTB7MiJXgABw49kWS+zlkEnJI= 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 Wed, Aug 14, 2024 at 05:02:53PM +0000, Benno Lossin wrote: > On 14.08.24 18:59, Danilo Krummrich wrote: > > On Wed, Aug 14, 2024 at 04:21:38PM +0000, Benno Lossin wrote: > >> On 12.08.24 20:22, Danilo Krummrich wrote: > >>> + unsafe fn call( > >>> + &self, > >>> + ptr: Option>, > >>> + layout: Layout, > >>> + flags: Flags, > >>> + ) -> Result, AllocError> { > >>> + let size = aligned_size(layout); > >>> + let ptr = match ptr { > >>> + Some(ptr) => ptr.as_ptr(), > >>> + None => ptr::null(), > >>> + }; > >>> + > >>> + // SAFETY: `ptr` is either NULL or valid by the safety requirements of this function. > >>> + let raw_ptr = unsafe { > >>> + // If `size == 0` and `ptr != NULL` the memory behind the pointer is freed. > >>> + self.0(ptr.cast(), size, flags.0).cast() > >>> + }; > >>> + > >>> + let ptr = if size == 0 { > >> > >> Why do you do this check *after* calling `self.0`? > > > > Because I need `raw_ptr` in the else case below. > > But you can just return early above? I would prefer the check be done > before `self.0` is called. No, we can't return early, we need `self.0` to be called, because if `size == 0` we free the given allocation, if any. > > --- > Cheers, > Benno >