From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9383203706; Thu, 26 Jun 2025 20:01:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750968065; cv=none; b=UHXmZBZuRPMhBH6pgGaPW3a6XQ1LnRUuIqgk+tcdv/hDNCxCAAx7chPIclMmVF2GeehH/a5ccG4dn6IsIDqI9T+npdxFIg+wYjp3fV5BJ5ySnnjLzQP/AjGpe/RInJ/kVFIg9kp/CKXxoE+1m+LF1b2JJuXvyk7RV7E6vq5CB4w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750968065; c=relaxed/simple; bh=HcFaulFtC1Q2YuLQK6Yl9c2cSI0ryIdx5q7fmtmagns=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mgrOQO4Uz7PlNePjpQ0UGvl5uUkgjoTtMzR8vku7iNbGr+WVlq7MBVXiaJf0BJRu+7s8LbSfkPLYNdmIKXirlffnhQ2IqnWAWQ+yTm4HO8rVlCX/dO5j/FW2cqJv+AKaQIYcqpbwmb+KZnW+iUFJ6fEFAtNVg1ucCtAmjFqRjNo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F6XB3FS2; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="F6XB3FS2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DB9EC4CEEF; Thu, 26 Jun 2025 20:01:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750968065; bh=HcFaulFtC1Q2YuLQK6Yl9c2cSI0ryIdx5q7fmtmagns=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F6XB3FS2RMY1iAqbuo9dNyGQo/k+w5iLHe4q+Pq2ysSCqRUMO6uYk8e47mw1jOtmp wWdO1bdfwlZN/HDNFE3jEUp5QB3OW0Ks44Xu9KUKtodhKDzuH3kIkq24lDXR6NS5IL BX3V1KvXWtIJv4DCkcB4QKGtA8etqbOSpQR9StOwiqhU4r7MflSt8xBEg49rSxwr1f uzA7I77DIsijQcRvMHKIqtqOp+uoiSsubyRiYGadmocUZMa6HcAX5tcfbx9fI+uqWJ R9psKeLKx4CoJBKT8AM2khjTs3o5zCqfGD7y08DDCUEiQmb441TVMFSndvNmNy1YgV aaca3DbQBNbGw== From: Danilo Krummrich To: gregkh@linuxfoundation.org, rafael@kernel.org, ojeda@kernel.org, alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, lossin@kernel.org, a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu, david.m.ertman@intel.com, ira.weiny@intel.com, leon@kernel.org, kwilczynski@kernel.org, bhelgaas@google.com Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, Danilo Krummrich Subject: [PATCH v4 1/5] rust: revocable: support fallible PinInit types Date: Thu, 26 Jun 2025 22:00:39 +0200 Message-ID: <20250626200054.243480-2-dakr@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250626200054.243480-1-dakr@kernel.org> References: <20250626200054.243480-1-dakr@kernel.org> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Currently, Revocable::new() only supports infallible PinInit implementations, i.e. impl PinInit. This has been sufficient so far, since users such as Devres do not support fallibility. Since this is about to change, make Revocable::new() generic over the error type E. Reviewed-by: Benno Lossin Reviewed-by: Alice Ryhl Acked-by: Miguel Ojeda Signed-off-by: Danilo Krummrich --- rust/kernel/devres.rs | 2 +- rust/kernel/revocable.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/kernel/devres.rs b/rust/kernel/devres.rs index 8ede607414fd..fd8b75aa03bc 100644 --- a/rust/kernel/devres.rs +++ b/rust/kernel/devres.rs @@ -100,7 +100,7 @@ struct DevresInner { impl DevresInner { fn new(dev: &Device, data: T, flags: Flags) -> Result>> { let inner = Arc::pin_init( - pin_init!( DevresInner { + try_pin_init!( DevresInner { dev: dev.into(), callback: Self::devres_callback, data <- Revocable::new(data), diff --git a/rust/kernel/revocable.rs b/rust/kernel/revocable.rs index fa1fd70efa27..46768b374656 100644 --- a/rust/kernel/revocable.rs +++ b/rust/kernel/revocable.rs @@ -82,11 +82,11 @@ unsafe impl Sync for Revocable {} impl Revocable { /// Creates a new revocable instance of the given data. - pub fn new(data: impl PinInit) -> impl PinInit { - pin_init!(Self { + pub fn new(data: impl PinInit) -> impl PinInit { + try_pin_init!(Self { is_available: AtomicBool::new(true), data <- Opaque::pin_init(data), - }) + }? E) } /// Tries to access the revocable wrapped object. -- 2.49.0