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 6CBF8C3DA4A for ; Wed, 14 Aug 2024 16:59:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 041286B00A1; Wed, 14 Aug 2024 12:59:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F33296B00A4; Wed, 14 Aug 2024 12:59:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E21C16B00A5; Wed, 14 Aug 2024 12:59:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id C4B4E6B00A1 for ; Wed, 14 Aug 2024 12:59:20 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 7204C161071 for ; Wed, 14 Aug 2024 16:59:20 +0000 (UTC) X-FDA: 82451461680.11.4DB9D92 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf24.hostedemail.com (Postfix) with ESMTP id C9211180014 for ; Wed, 14 Aug 2024 16:59:18 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=slcQPiUX; spf=pass (imf24.hostedemail.com: domain of dakr@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=dakr@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1723654686; 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=RqqIlYtuaGrqRm1HtU+eJgF7/YwRgTb9yWThAJf9v4E=; b=Svptb9pHis/1oE77whX3obU+TylTF0S5uta3DnHnQ+0MI/cgb1UaE+YuI2say+K9/+ArMZ X5XKeytcK+INgZrh/JofvN2eSpcRHjl/E60uVTNvk5/kxpxIwBpQqRQjDacYSNbeVEwRk4 O/MvDKtWseeMEDh21YZVUza41x+uAA4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723654686; a=rsa-sha256; cv=none; b=JY7ILGWCAzDcb+e/o2JL63clYYQEqcxk99lbVf63aNikxaqPW0GxYHT+SQxqIyQzE4OXi4 j9G82rz7vh7uY2HBj1JPz7ORoVcig11HU431SkSsn6AjFDzdJZ/QRFSZ4PblWJG+pR3GBY wmRboAJx3rkt1NGhDQJvDO+djfGywkQ= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=slcQPiUX; spf=pass (imf24.hostedemail.com: domain of dakr@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=dakr@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id E7EDE61B06; Wed, 14 Aug 2024 16:59:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E917BC116B1; Wed, 14 Aug 2024 16:59:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1723654757; bh=HMTmDAOSpmRRolPtV/6I4D5FtnhihYkeC2k4jN/oSFM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=slcQPiUXa5GufO0GPlWSRRWDijaId2m4Y707MeVF3Ukc2jJEvX5xmcEqPBtPm05gN rNxVyRHWoLIJYcIB85s4JMYMWOGExNouoS2Z/U1pT34MmwUbpK5LEa2FjvmNtPP2lb 7Nr/rh4FCjsnpSsslGftr7RW3brfFE5R9flNfIqThMtiL6px0UzblM//1osmiQnwMs 8iWK9h+EbEgBJbmZ0MC8O8m/+Em3it+6F/ELzvlsqPcPK4Gc4eabFal8zXWUeyiqQw l+F3jg7EGuUICenia3lWleCJ46osXX5EIY3CbcxLFsRaKWp7DWfJCZ94m0pdnkaI3V eW3VRXEm0icMA== Date: Wed, 14 Aug 2024 18:59:10 +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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: C9211180014 X-Stat-Signature: u75cgaxn9cntqfwo6r5qbzattq9mriya X-HE-Tag: 1723654758-435303 X-HE-Meta: U2FsdGVkX188GbeI+P/V+zRCK45+kn+wW/HRoiJaZJ1u1NLpCwxFeUSxwsXgUmMbW9KAFjxZ8NrcSqMs9XiqKw/+OXu6tGEfaMXNPBhcVKdsREeFXFluh2GErWM3X+TyK7zGCGgo2cCR9hOvpR5m9Qw1+XcqONL35qBo5eI/xJWiIFrt5hMZAvWoV2iP5gIn0HlQFoLqjpb0/Gc4nLsbSyQtGyHsyICuI5vMY9wuAMQ+NBxfDOecAamvMsO3Xl51T/7W4ZkQy7NFp/ra15ptoHhJ1/14KdVSaD0A/ew3Njd4yrJ3U/mF0fT7Ha3OWEbczy+sVwyY6YlVR/nTYGEmPD1biboiSm19hLCc/rpFkYavOLSXuP/gHpf3dZIHGgFuCwJzKRTnTIbdKEz21YziHFj3j2hjOw9Tf8s+v7B3gYZX9A+JZPYuKVOg8a3RcpHt9xenBH+o4tklBCxsnXv+CTa++GwbLzu0FXQXVpl9qpVJsbKDjgl6O4eMNCQJCImqk2D/EnwK16ZP8WNYvIZKlVM9jH0B/iJlkhzhUl2/eLcsE8n7/EY+GslohTsKoV5U5DcKquA+iEs/+uqdKH00az4ZgGrfs1VkWn2I5/NQ0OKUR+t439PbkRZfsZea/5GHINgkysW3MnY3IPx/CLoOA7xg0zrd4X/C+GHD6CDFgxjXJ85z1Yx97lxj1urmJbpK88BOOyFqv8fLeKTZ+eRqDv+2Dcl9e8fdLuclJU4eVto7lD0aF27eyP+M6QgDjWlkRNiRT/EYxJtu2yNT+wSeCGOkOzQ7PQOZOTTP6FWwOgEPha4yCMv0cEB4E74AF6tVxbrJSQyAQTnRfFxEi77IK4O4nQQNg1lTXGVXw7sdZQBJfMnel9u6zeWw/DlyLZ90DxdJNI5KXwKhwVf2VAeLPufLQcMY//CC+4MTM1XnWDp/MBj/fGyMV6iqUswKdu3AHObm/l/nU8m4DDHYR4Y zC6TRaG3 fyrRVTbQQWC8Cw2eCVjuio0PeJEqdI0MoJyeGvtwHVfdTb1buUMKP6EV39TP3R8HziGAfuIdIEYX0mxg5ey/CMROSOzB8MKD6E6vVm5ZnsqK5mzHM375MNCzjSY7iAQ4wvcOE+B8R99R6LNKaLj4/Hnb3oD4ujEhxiFz51XKEdpbqoiTr86sv9ZEfpvPM1VDESprmEPmAg3zL8WStqvEIn1Zsk+SLCZoe4HTbpS04358z3AQ4sccF4Tw6iVUjNXFjJBK4dos7w3jSRTf0K63o5hZ1bc4fjmA7M+GgECLpU3eHGag= 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 04:21:38PM +0000, Benno Lossin wrote: > On 12.08.24 20:22, Danilo Krummrich wrote: > > + /// # Safety > > + /// > > + /// This method has the same safety requirements as `Allocator::realloc`. > > Please make this a link. Sure. > > > + 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. > > --- > Cheers, > Benno > > > + NonNull::dangling() > > + } else { > > + NonNull::new(raw_ptr).ok_or(AllocError)? > > + }; > > + > > + Ok(NonNull::slice_from_raw_parts(ptr, size)) > > + } > > +} >