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 D168EEE49A5 for ; Wed, 11 Sep 2024 13:32:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4688594003A; Wed, 11 Sep 2024 09:32:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4188F940021; Wed, 11 Sep 2024 09:32:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3071D94003A; Wed, 11 Sep 2024 09:32:43 -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 1222D940021 for ; Wed, 11 Sep 2024 09:32:43 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 93B581A17ED for ; Wed, 11 Sep 2024 13:32:42 +0000 (UTC) X-FDA: 82552547364.18.910529F Received: from mail-40133.protonmail.ch (mail-40133.protonmail.ch [185.70.40.133]) by imf20.hostedemail.com (Postfix) with ESMTP id 3CC0A1C0011 for ; Wed, 11 Sep 2024 13:32:39 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=proton.me header.s=protonmail header.b=cJl6WIRo; spf=pass (imf20.hostedemail.com: domain of benno.lossin@proton.me designates 185.70.40.133 as permitted sender) smtp.mailfrom=benno.lossin@proton.me; dmarc=pass (policy=quarantine) header.from=proton.me ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726061508; a=rsa-sha256; cv=none; b=3qZlPZGhocSlK+k1k3R7KS3NvuySlZKkKUHzlOfUWmX4KE+m8bL/hoP/SoIhKaEaPMErW5 HTSSYpdgoawFSwFb7zucoe4AiUGZsNBCm27qcH7YIGsukNDmTd8+Vr0upJzky7ZOgd7Ljo i+NnotcnLLYoQ7GEk3IbZNXWTCe0Kj4= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=proton.me header.s=protonmail header.b=cJl6WIRo; spf=pass (imf20.hostedemail.com: domain of benno.lossin@proton.me designates 185.70.40.133 as permitted sender) smtp.mailfrom=benno.lossin@proton.me; dmarc=pass (policy=quarantine) header.from=proton.me ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726061508; 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=Aw/QVQINynoS1n4l+50LTXZgDbgxxENr3OB8jCOzqlE=; b=QLGWd+OdVbi/Rs+c05UrAe1dopWSrtTBi5o6mr51mPa8DPQqJpH3Qv2cSvDd12Tmf6XQFt yQO+GkDi0CdBoLahGGjlEco9u9gF1Z1TNx6pxyDMql8bitVvG/aAimkuk8uBmbiwpc8Wc9 4c3wSW2aGYK7Zrnz5oRNqSiZru+72CM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=protonmail; t=1726061557; x=1726320757; bh=Aw/QVQINynoS1n4l+50LTXZgDbgxxENr3OB8jCOzqlE=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=cJl6WIRoFO3p9/rUyKgmNd+yxgh0Ra24LWdX7Iq1RoxrJKhtGh7FtmdBPiJ1l4p15 4a1LY9h6sXrGzdpiX+eTUdvsKQEQAvYJVhY9Hr/V7jQc/uTy5kP8jNoccNcpfL185t TOKBF6V78gsXPX3amf/PEATMLRYwKu6NehM5ftEy9c7vR8Cy00K1VBiYe+ZRcrhZLq QVQOZ56w9hiIIMbkIJLr50QsadIWEq4hAqx97SE1iPoZLOumDNaeEuE8gDPxIA03Xc qkIPuy1gXKB42GugN0L9UwSVAhFk8En+0dLvoJv9mw9kt5RnxFwkZ1oZsiXIoleCRm NW3Lk+lzIGxEA== Date: Wed, 11 Sep 2024 13:32:31 +0000 To: Danilo Krummrich From: 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 v6 22/26] rust: alloc: implement `Cmalloc` in module allocator_test Message-ID: In-Reply-To: References: <20240816001216.26575-1-dakr@kernel.org> <20240816001216.26575-23-dakr@kernel.org> Feedback-ID: 71780778:user:proton X-Pm-Message-ID: 90b55a6673420a147a5498f65a28e7d0f52158e1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Stat-Signature: 7ncxinn3y5hkjkbboa5a6quzczaah8x9 X-Rspamd-Queue-Id: 3CC0A1C0011 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1726061559-564086 X-HE-Meta: U2FsdGVkX1+pak/Jm/NvZiy3fYW43V569n/SxuqlY2vkOG9obbh/5a+KrG33yGXpBPHuOZSbvqxCPs+XcniX5hFTCIzZoGb8FatPnBTt9D2wIrKzLvJ4XaztSh7YsOruJaIPjqddTGqUMS2J821eO6WYoIZg13+n4/AD/qr/0amLLMRuHI8plIF+CrE2Vur6pbGczqnAMukSxOwHNF1SqLtTgoWsRY5knwPQr04uS6KOfONk0J65D7Iw3OAvfCrSY00xJVDJchq1RJ8dKHRNkSyM62jzs3WDz4haSM5BA3w1lIexpYRkNYnu+KcMVhSenLsAW0gNx0t5m32OmXCLRBhpZlsYfryApXiDqJx66I5hRKddqocQeZfhZaHhKCnHg1ar1Pd8ZXz1il5qZhmAwSwR4zWL28y5qkrFAMlQHJO0hRAo8trn6yXxiexlfg0LIwg//qf0tA3X3LdlOigIk7m5/PQVImB64nvorihWGHQFmZLVbg8SBk/0aGe6EBI1Mz8K/n3hT/34g9ubPLILKO99Xva+wsKX+iokZopLFcYgLcaj5Oy3Xq0E/MrnBMuYvvse+OsXfNwufVYnquQXzbVzQpwaZ4ZUiD+rwbM8aiEtviliUD3N0NhzRoWDClPbE6tM7oyOVGmyRdTLUa7eytuevKLe0ZUYMcHPuvXLl/HfQPQKUwyt2sFEwLvXOV9J3W4MR6hgnEQDzh0HcWP5TNWbn/pQ4B9VpHBIzf1yV9o0vnz65mumzOHyi9KxzG0CdyyHPricSnDhANI4eFXOanL9GVb1FRghsncZMMCEsbS/oGNu81k/Je2bJlp3m5iUS3kxvxBb2YqSXs3nYMbFUPYoVeek4H/y33hizVW2+f5ppMeNrnQxlsQ6uh+/ZSBbqdXip1wEa3aIS7rTRCVrvSFksvQBys3+fVWQWKbeVzRqlt3i4BY5W4x4YSFZSvJ/qVSuTuASqa6kiSSyZzk f4QufmYX HIURhuOLBjZIe+cCNXgEj+iAnemtHtqNRpqoCqc3MUNEI+yeyx+blsIWGEUYScGgQKrzYB6pEGP5hKrGpcIgaVRaneycmL1W1yRnFEEyljRumseQ5GsClgaQZSYTwmZPUf86mKVwbIKfiOASI8/2BQiPKUBrVI+get2OhYAVatqnG8vx51hi2KuYvtZsucXqVHftzMWM2AoeNyX1I/2xmDmZvkAitxV2MKBH5Lc/zpsXak/9K/o/NFOFi0IaIM/raJP+eJRlNbMqUypRZA56xcc28E9BZQPH4EhAO+8nITqNafgWeKMKld5DJC05aMEkT5NcIkoI/2BOkbx0e65CVOrYDSBm6XbjvqqersuABff8V56tYTNLXufBJdmvYqw+I6RTifC4ML0Bek9HUmQ2/OoKDJiHSW3WRqQmKnwskduQ63Gg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, 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 11.09.24 14:31, Danilo Krummrich wrote: > On Fri, Aug 30, 2024 at 12:25:27AM +0200, Danilo Krummrich wrote: >> On Thu, Aug 29, 2024 at 07:14:18PM +0000, Benno Lossin wrote: >>> On 16.08.24 02:11, Danilo Krummrich wrote: >>>> + >>>> + if layout.size() =3D=3D 0 { >>>> + // SAFETY: `src` has been created by `Self::alloc_store_d= ata`. >>> >>> This is not true, consider: >>> >>> let ptr =3D alloc(size =3D 0); >>> free(ptr) >>> >>> Alloc will return a dangling pointer due to the first if statement and >>> then this function will pass it to `free_read_data`, even though it >>> wasn't created by `alloc_store_data`. >>> This isn't forbidden by the `Allocator` trait function's safety >>> requirements. >>> >>>> + unsafe { Self::free_read_data(src) }; >>>> + >>>> + return Ok(NonNull::slice_from_raw_parts(NonNull::dangling= (), 0)); >>>> + } >>>> + >>>> + let dst =3D Self::alloc(layout, flags)?; >>>> + >>>> + // SAFETY: `src` has been created by `Self::alloc_store_data`= . >>>> + let data =3D unsafe { Self::data(src) }; >>> >>> Same issue here, if the allocation passed in is zero size. I think you >>> have no other choice than to allocate even for zero size requests... >>> Otherwise how would you know that they are zero-sized. >> >> Good catch - gonna fix it. >=20 > Almost got me. :) I think the code is fine, callers are not allowed to pa= ss > pointers to `realloc` and `free`, which haven't been allocated with the s= ame > corresponding allocator or are dangling. But what about the example above (ie the `alloc(size =3D 0)` and then `free`)? I guess this all depends on how one interprets the term "existing, valid memory allocation". To me that describes anything an `Allocator` returns via `alloc` and `realloc`, including zero-sized allocations. But if you argue that those are not valid allocations from that allocator, then that is not properly documented in the safety requirements of `Allocator`.=20 --- Cheers, Benno