From nobody Mon Apr 6 22:03:57 2026 Received: from outbound.pv.icloud.com (pv-2001d-snip4-11.eps.apple.com [57.103.64.123]) (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 BDA7D3E8C76 for ; Tue, 17 Mar 2026 14:50:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.64.123 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759012; cv=none; b=NVhnzaDf+TiZdQ1tb03w62TThDEI6X57+E5a9tzGNmfzRQ6AW79WrAp9GLr3OTtedi1K8Y563bs2soTBcrkQbWjzQXJogzZoFJbIZLoMi3HOO4RrK+MX+RM+92D3EGqD0RUMfo4C55bVwBw07IZcFJVzwLmZIoTca5Fl5wANnA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759012; c=relaxed/simple; bh=EN4THpN3VqyQF2w+rMfC+eWsm/QDClEDGyZQwV1YeHA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pUw+Qy287Bc7HfvYS0WPgY1nHys9gB3IU0ORaEnYc+a2RiGa3PNktCFfxF2oozjd8BgQYfgHqvftr4GJxvr1DyTniN/Z6Pb8sBqAFhaAeBcDWxI53FPfwUdRpKYErw3E8wQhwGkeZhOFAkKHmWK9q6Vy749k61EYUv7DVzZixVk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc; spf=pass smtp.mailfrom=sdhn.cc; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b=zFoI6YpA; arc=none smtp.client-ip=57.103.64.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b="zFoI6YpA" Received: from outbound.pv.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPS id 36A611800118; Tue, 17 Mar 2026 14:50:08 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdhn.cc; s=sig1; t=1773759010; x=1776351010; bh=KnTnv0WO1WeD6UIqFYUTwgAn8I9b7HtpOLAyFjdzJSw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:x-icloud-hme; b=zFoI6YpAAZib2VkBj6PFpuYvrCR3tYMqTgYu30jSBeSwzk6EJpjSjx2c6hIbV2XkcDg7kp05MGB0E4ERhoxmtd9T93nHafYPgYslMxuZfGxkmqdQ2Xnt0LYGvo+fDIWcafxZEoR93UfVksqmENDazmcCrRJKfw/TlXsItRz+gytOlnbaLsZ759wBTKkRufR2jJzyI1Zti2UmcQZVybY2UZK82RCTRe/IpWsZX60+XqAhlu4wS7MEiEY9yGmvLm6qjRIeHciTZoBNxtfWYXlBj2KJzHPksTHXQYkMUEfQIwSQh5eZjH2e4eaI5MizGdcK1auwbokDI8iHvzsZxGkoWQ== mail-alias-created-date: 1772007648188 Received: from [127.0.0.1] (unknown [17.56.9.36]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPSA id AE9131800112; Tue, 17 Mar 2026 14:50:03 +0000 (UTC) From: Mohamad Alsadhan Date: Tue, 17 Mar 2026 17:49:42 +0300 Subject: [PATCH v3 1/6] rust_binder: remove "rust_" prefix from tracepoints Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260317-rust-binder-trace-v3-1-6fae4fbcf637@sdhn.cc> References: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> In-Reply-To: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> To: Greg Kroah-Hartman , =?utf-8?q?Arve_Hj=C3=B8nnev=C3=A5g?= , Todd Kjos , Christian Brauner , Carlos Llamas , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Danilo Krummrich Cc: Alice Ryhl , linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Mohamad Alsadhan X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2587; i=mo@sdhn.cc; h=from:subject:message-id; bh=EN4THpN3VqyQF2w+rMfC+eWsm/QDClEDGyZQwV1YeHA=; b=owGbwMvMwCV2WSbwWIGm61bG02pJDJk7s8QC25w26xyS6DRZFHprf75xJtM3FvuAVi2JMMMzr w/suuPTUcrCIMbFICumyPL8vPfRgz9umJ05v/cUzBxWJpAhDFycAjAROTFGhg3yu2UTykV+qYie vqgUxuCjs7sz6qhg67eT8y4+VVeJTWL4Z/IhPrFrV7vYTQZT2eqnr9x/3phQEuka6+n5/YfikuP aXAA= X-Developer-Key: i=mo@sdhn.cc; a=openpgp; fpr=E7CF4BC5C1F8D836CCCFBDCAD31C51C6702945B5 X-Proofpoint-GUID: j6nZ4Pm1omiYkgTe2dmY3vYkFyZ8EP4S X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEzMSBTYWx0ZWRfX0aB22v80Qlff hCACIWgnSbm4TW7EALIk1iQznCdcBn1jflzZoBpiKzemKW75AFkEYzc0O3cWWURBT3jdkQI2Ucw rfUe5YVI+AUa4kFO0M3tJL/f6yQQYMfP0A+/ZzXEmJZK1QzzojdhiHW+9pClBlr8oXxrv/VTzep iMBmzVy30sy0d3jNwfp4patDQ8COgKSqsSSPutvPn4+s5j3NaeVVTg97sYcMPbGOIZXFMGGunlw QQw8rjTX0SLXNtUU0VDaRkqIphCWqOCUg6eT22LNLMg9MqYgynfCHiCrJCzPtULPKUKB5ESi5Bq tz5byIMGqpMaRudyhuDHWh5l13fw7GEs6y4dP0hEK9UzqGxwvLmxGKUMUVjfrw= X-Authority-Info-Out: v=2.4 cv=fLk0HJae c=1 sm=1 tr=0 ts=69b96a21 cx=c_apl:c_pps:t_out a=azHRBMxVc17uSn+fyuI/eg==:117 a=azHRBMxVc17uSn+fyuI/eg==:17 a=IkcTkHD0fZMA:10 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=NEAV23lmAAAA:8 a=1XWaLZrsAAAA:8 a=9KE4tSwBFA36Xu7-v7wA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: j6nZ4Pm1omiYkgTe2dmY3vYkFyZ8EP4S X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=648 malwarescore=0 mlxscore=0 bulkscore=0 phishscore=0 clxscore=1030 suspectscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603170131 Remove the "rust_" prefix as the name is part of the uapi, and userspace expects tracepoints to have the old names. Link: https://github.com/Rust-for-Linux/linux/issues/1226 Suggested-by: Alice Ryhl Reviewed-by: Alice Ryhl Signed-off-by: Mohamad Alsadhan --- drivers/android/binder/rust_binder_events.h | 4 ++-- drivers/android/binder/trace.rs | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/android/binder/rust_binder_events.h b/drivers/android/= binder/rust_binder_events.h index 8ad785c6b..e3adfb931 100644 --- a/drivers/android/binder/rust_binder_events.h +++ b/drivers/android/binder/rust_binder_events.h @@ -15,7 +15,7 @@ =20 #include =20 -TRACE_EVENT(rust_binder_ioctl, +TRACE_EVENT(binder_ioctl, TP_PROTO(unsigned int cmd, unsigned long arg), TP_ARGS(cmd, arg), =20 @@ -30,7 +30,7 @@ TRACE_EVENT(rust_binder_ioctl, TP_printk("cmd=3D0x%x arg=3D0x%lx", __entry->cmd, __entry->arg) ); =20 -TRACE_EVENT(rust_binder_transaction, +TRACE_EVENT(binder_transaction, TP_PROTO(bool reply, rust_binder_transaction t, struct task_struct *threa= d), TP_ARGS(reply, t, thread), TP_STRUCT__entry( diff --git a/drivers/android/binder/trace.rs b/drivers/android/binder/trace= .rs index 9839901c7..d54b18ab7 100644 --- a/drivers/android/binder/trace.rs +++ b/drivers/android/binder/trace.rs @@ -10,8 +10,8 @@ use kernel::tracepoint::declare_trace; =20 declare_trace! { - unsafe fn rust_binder_ioctl(cmd: c_uint, arg: c_ulong); - unsafe fn rust_binder_transaction(reply: bool, t: rust_binder_transact= ion, thread: *mut task_struct); + unsafe fn binder_ioctl(cmd: c_uint, arg: c_ulong); + unsafe fn binder_transaction(reply: bool, t: rust_binder_transaction, = thread: *mut task_struct); } =20 #[inline] @@ -22,7 +22,7 @@ fn raw_transaction(t: &Transaction) -> rust_binder_transa= ction { #[inline] pub(crate) fn trace_ioctl(cmd: u32, arg: usize) { // SAFETY: Always safe to call. - unsafe { rust_binder_ioctl(cmd, arg as c_ulong) } + unsafe { binder_ioctl(cmd, arg as c_ulong) } } =20 #[inline] @@ -33,5 +33,5 @@ pub(crate) fn trace_transaction(reply: bool, t: &Transact= ion, thread: Option<&Ta }; // SAFETY: The raw transaction is valid for the duration of this call.= The thread pointer is // valid or null. - unsafe { rust_binder_transaction(reply, raw_transaction(t), thread) } + unsafe { binder_transaction(reply, raw_transaction(t), thread) } } --=20 2.52.0 From nobody Mon Apr 6 22:03:57 2026 Received: from outbound.pv.icloud.com (pv-2001l-snip4-7.eps.apple.com [57.103.64.20]) (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 1ACA63EAC62 for ; Tue, 17 Mar 2026 14:50:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.64.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759016; cv=none; b=lXxMTpZ0RilesXCVIjVR2Scd9M5ptufJ1wU+huvrRIE9BBqyFQleMf4Yd/NjolF3wv4Cj2lg9S6xo33mvVlFrAz/wrJJUblkqLpBjRm895RnNGylUaZNKfB5gC8mTDxUOaKCPBJECWPOcCVNofoVGlAEgv4MiMOy6/zE/ds2DrU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759016; c=relaxed/simple; bh=rZ5vmLfwmAILf4BW/mDo5iQH52qia9nO5WjD7vk/frQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=L0/GLOFQCpIX6smmPMNVWwZmoya1d3KNsK7qGQWB1vPCVxxXt1fuLiuka1FjN5PO3DRsNGrp0MgNF8vFACowy2aM4fuGAOiRpEdovFoJ0ecoctFJEfFcqA+HpKyEKF2JwNLWnUCowbfQxpR/qxumky0IvR0GhBuCBJt3WgrE+M0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc; spf=pass smtp.mailfrom=sdhn.cc; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b=H7OnABFs; arc=none smtp.client-ip=57.103.64.20 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b="H7OnABFs" Received: from outbound.pv.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPS id A5646180032C; Tue, 17 Mar 2026 14:50:12 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdhn.cc; s=sig1; t=1773759014; x=1776351014; bh=4aiSl+Rr7WuyZ37AduFnlgEdsISQgjhqsxKN6FfXFbI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:x-icloud-hme; b=H7OnABFsK63hfycDYNhEcQmN3wnp61FoIehghIGJTOWAfeoUSQijrYcgMYosT+yQuzgSHr4G0S3EbmUKGWLk8Ed3dRxIPpyJZQPTjQ0aHWzbqQZZVae3ffvy9lsAmJYQk5mmFd37JLtXcbH3YQUt9XlbjOhkD5sl85Qj7JoiXu1HA+RLo0Qf/JGYMA20lGqzoOidaRZTkve1qNWk983K+bANxedpGln6x/s9xfJzSale1Bxk7NrzhHPJ4tHrUS1/rIps4w7qr7OjtZ4Zg76gh2imBCQjAfgag37jDScjWatzRQWWubP3D8HCk4r4MFr+Q2DCSqraTta6m+OgHZMglg== mail-alias-created-date: 1772007648188 Received: from [127.0.0.1] (unknown [17.56.9.36]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPSA id 2BA6B18000B7; Tue, 17 Mar 2026 14:50:07 +0000 (UTC) From: Mohamad Alsadhan Date: Tue, 17 Mar 2026 17:49:43 +0300 Subject: [PATCH v3 2/6] rust_binder: add ioctl/read/write done tracepoints Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260317-rust-binder-trace-v3-2-6fae4fbcf637@sdhn.cc> References: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> In-Reply-To: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> To: Greg Kroah-Hartman , =?utf-8?q?Arve_Hj=C3=B8nnev=C3=A5g?= , Todd Kjos , Christian Brauner , Carlos Llamas , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Danilo Krummrich Cc: Alice Ryhl , linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Mohamad Alsadhan X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5411; i=mo@sdhn.cc; h=from:subject:message-id; bh=rZ5vmLfwmAILf4BW/mDo5iQH52qia9nO5WjD7vk/frQ=; b=owGbwMvMwCV2WSbwWIGm61bG02pJDJk7s8Q2d93kYdz08M50joLimRUT2qJazj/5cTnfW712p XC9e9ShjlIWBjEuBlkxRZbn572PHvxxw+zM+b2nYOawMoEMYeDiFICJ7FnNyPDH7DPT3R8Cl4vf zD/o6bPqg92uvgMeVU5sh1cp3A9tqLZiZDj0bpZWqeyp8G/9r1YfsYt8d/z4tKNK+TNvMLOc3sd ev4gLAA== X-Developer-Key: i=mo@sdhn.cc; a=openpgp; fpr=E7CF4BC5C1F8D836CCCFBDCAD31C51C6702945B5 X-Proofpoint-ORIG-GUID: WuAH2WXJLwNQIWLbLamneFRJfvBLrWHO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEzMSBTYWx0ZWRfXwh0W3tJw/tkQ LNDuVfBQkIzeGGTggUcLm4gccBRYJJrWIMOrIUl8WkMVsTQrzaIQj39SUjzAUJXbCigr5+6cgbI uuRfKCGMe//fE51Hde8nR27ZXXE2hByYj8RosSBBTesmknhfgV0Mqc9hyr5BFpV4niUkscwlMV0 jNIdESQP5KTBGhjlT7MrC42XJeeybZ/lzUGfU5+/MWY7QcNI0jNH9BQyT0p026H+++L0jzBlFAd s2Bup5FGootOsevz9eCxUt7kxAudmRUkTR82DF6WIqugjaARqsliMAh8e8PmquDXfSj6nzegm4w E0qiHyBR+B5o4k+jFXxT6c2w1PP2cn5nQXUwE14rpbL6pPLcbWC5A/8hcdSGhY= X-Authority-Info-Out: v=2.4 cv=d+34CBjE c=1 sm=1 tr=0 ts=69b96a25 cx=c_apl:c_pps:t_out a=azHRBMxVc17uSn+fyuI/eg==:117 a=azHRBMxVc17uSn+fyuI/eg==:17 a=IkcTkHD0fZMA:10 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=mWTqjtZJWV9exWTXMMAA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: WuAH2WXJLwNQIWLbLamneFRJfvBLrWHO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 mlxscore=0 adultscore=0 clxscore=1030 mlxlogscore=999 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603170131 Add Rust Binder tracepoints declarations for `ioctl_done`, `read_done` and `write_done`. Additionally, wire in the new tracepoints into the corresponding Binder call sites. Note that the new tracepoints report final errno-style return values, matching the existing C model for operation completion. Signed-off-by: Mohamad Alsadhan Suggested-by: Alice Ryhl --- drivers/android/binder/process.rs | 7 +++++-- drivers/android/binder/rust_binder_events.h | 21 ++++++++++++++++++++ drivers/android/binder/thread.rs | 2 ++ drivers/android/binder/trace.rs | 30 +++++++++++++++++++++++++= +++- 4 files changed, 57 insertions(+), 3 deletions(-) diff --git a/drivers/android/binder/process.rs b/drivers/android/binder/pro= cess.rs index 41de55931..4d7b165e7 100644 --- a/drivers/android/binder/process.rs +++ b/drivers/android/binder/process.rs @@ -1656,11 +1656,14 @@ pub(crate) fn ioctl(this: ArcBorrow<'_, Process>, f= ile: &File, cmd: u32, arg: us =20 const _IOC_READ_WRITE: u32 =3D _IOC_READ | _IOC_WRITE; =20 - match _IOC_DIR(cmd) { + let res =3D match _IOC_DIR(cmd) { _IOC_WRITE =3D> Self::ioctl_write_only(this, file, cmd, &mut u= ser_slice.reader()), _IOC_READ_WRITE =3D> Self::ioctl_write_read(this, file, cmd, u= ser_slice), _ =3D> Err(EINVAL), - } + }; + + crate::trace::trace_ioctl_done(res); + res } =20 pub(crate) fn mmap( diff --git a/drivers/android/binder/rust_binder_events.h b/drivers/android/= binder/rust_binder_events.h index e3adfb931..4fda8576c 100644 --- a/drivers/android/binder/rust_binder_events.h +++ b/drivers/android/binder/rust_binder_events.h @@ -30,6 +30,27 @@ TRACE_EVENT(binder_ioctl, TP_printk("cmd=3D0x%x arg=3D0x%lx", __entry->cmd, __entry->arg) ); =20 +DECLARE_EVENT_CLASS(binder_function_return_class, + TP_PROTO(int ret), + TP_ARGS(ret), + TP_STRUCT__entry( + __field(int, ret) + ), + TP_fast_assign( + __entry->ret =3D ret; + ), + TP_printk("ret=3D%d", __entry->ret) +); + +#define DEFINE_RBINDER_FUNCTION_RETURN_EVENT(name) \ +DEFINE_EVENT(binder_function_return_class, name, \ + TP_PROTO(int ret), \ + TP_ARGS(ret)) + +DEFINE_RBINDER_FUNCTION_RETURN_EVENT(binder_ioctl_done); +DEFINE_RBINDER_FUNCTION_RETURN_EVENT(binder_read_done); +DEFINE_RBINDER_FUNCTION_RETURN_EVENT(binder_write_done); + TRACE_EVENT(binder_transaction, TP_PROTO(bool reply, rust_binder_transaction t, struct task_struct *threa= d), TP_ARGS(reply, t, thread), diff --git a/drivers/android/binder/thread.rs b/drivers/android/binder/thre= ad.rs index 0b62d24b2..bb36c5228 100644 --- a/drivers/android/binder/thread.rs +++ b/drivers/android/binder/thread.rs @@ -1482,6 +1482,7 @@ pub(crate) fn write_read(self: &Arc, data: User= Slice, wait: bool) -> Resul let mut ret =3D Ok(()); if req.write_size > 0 { ret =3D self.write(&mut req); + crate::trace::trace_write_done(ret); if let Err(err) =3D ret { pr_warn!( "Write failure {:?} in pid:{}", @@ -1498,6 +1499,7 @@ pub(crate) fn write_read(self: &Arc, data: User= Slice, wait: bool) -> Resul // Go through the work queue. if req.read_size > 0 { ret =3D self.read(&mut req, wait); + crate::trace::trace_read_done(ret); if ret.is_err() && ret !=3D Err(EINTR) { pr_warn!( "Read failure {:?} in pid:{}", diff --git a/drivers/android/binder/trace.rs b/drivers/android/binder/trace= .rs index d54b18ab7..3b0458e27 100644 --- a/drivers/android/binder/trace.rs +++ b/drivers/android/binder/trace.rs @@ -5,12 +5,16 @@ use crate::transaction::Transaction; =20 use kernel::bindings::{rust_binder_transaction, task_struct}; -use kernel::ffi::{c_uint, c_ulong}; +use kernel::error::Result; +use kernel::ffi::{c_int, c_uint, c_ulong}; use kernel::task::Task; use kernel::tracepoint::declare_trace; =20 declare_trace! { unsafe fn binder_ioctl(cmd: c_uint, arg: c_ulong); + unsafe fn binder_ioctl_done(ret: c_int); + unsafe fn binder_read_done(ret: c_int); + unsafe fn binder_write_done(ret: c_int); unsafe fn binder_transaction(reply: bool, t: rust_binder_transaction, = thread: *mut task_struct); } =20 @@ -19,12 +23,36 @@ fn raw_transaction(t: &Transaction) -> rust_binder_tran= saction { t as *const Transaction as rust_binder_transaction } =20 +#[inline] +fn to_errno(ret: Result) -> i32 { + match ret { + Ok(()) =3D> 0, + Err(err) =3D> err.to_errno(), + } +} + #[inline] pub(crate) fn trace_ioctl(cmd: u32, arg: usize) { // SAFETY: Always safe to call. unsafe { binder_ioctl(cmd, arg as c_ulong) } } =20 +#[inline] +pub(crate) fn trace_ioctl_done(ret: Result) { + // SAFETY: Always safe to call. + unsafe { binder_ioctl_done(to_errno(ret)) } +} +#[inline] +pub(crate) fn trace_read_done(ret: Result) { + // SAFETY: Always safe to call. + unsafe { binder_read_done(to_errno(ret)) } +} +#[inline] +pub(crate) fn trace_write_done(ret: Result) { + // SAFETY: Always safe to call. + unsafe { binder_write_done(to_errno(ret)) } +} + #[inline] pub(crate) fn trace_transaction(reply: bool, t: &Transaction, thread: Opti= on<&Task>) { let thread =3D match thread { --=20 2.52.0 From nobody Mon Apr 6 22:03:57 2026 Received: from outbound.pv.icloud.com (p-west1-cluster6-host1-snip4-7.eps.apple.com [57.103.67.30]) (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 522893EAC97 for ; Tue, 17 Mar 2026 14:50:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.67.30 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759022; cv=none; b=oaeKIMU234IxhjgWBQ+ePPyjwBPCTo57IfsrX0vjMjPE2BEvIS5ALm8yucF0E1PT0htbGUi/AKnta8jugntpaziYBRXeiH2mjpgm/lZ0rCjgXZ1OoU2o1K5i1EkiOp4Wyr2krd7czXDt/xj24huLIypEKUNYCqeltQMz8cJc/vk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759022; c=relaxed/simple; bh=b3sKiA3I2UPrO7DFxlsM9gt3rNS2y+IjIW3zFRGLlgY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JwSa6kS70n57qfYpJCuDEBv2sP0/FTPIKAXtdQs7akQkUOdgkIpz2UVtO5DHh8Pfky/hiwqwNWe8DPN532n2UWz5aOIiI12E9POWGUlx2/bz6gBXGVGn0XMAtkepA8v5OHUchk/uHH/ouN9t4QumgxxG+p9w6KXx40J5vf9XrDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc; spf=pass smtp.mailfrom=sdhn.cc; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b=whDnnoUq; arc=none smtp.client-ip=57.103.67.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b="whDnnoUq" Received: from outbound.pv.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPS id 56E7D180026C; Tue, 17 Mar 2026 14:50:17 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdhn.cc; s=sig1; t=1773759020; x=1776351020; bh=qJVh9GgUDfmmBe+voBK0cst60oUO4R21Zh7R7K3Vfco=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:x-icloud-hme; b=whDnnoUqz9t1UxefLJ8OsZOO8ja3EmOwik7fvVJt6LpLaC2lG8jFmFcBByTLLUxKAw6zsLRQ1uCaZVgYgcZAByP7pmU6/1DbpKBUOzHJPmGFtNVAPVRjYVo2IaKpZDsduDuSdxOQ6h/JKcOZu97418ZZuIENAcBlFdVc1ZY23pmDwt4avOZw4Rjtqv8CYriHmjOBOb5Gag5uNa1En5x/Dz+Qnnj7DIF4tpR5fsrJTWZkKGQFv7pwg/56R8kbgA3RANdPt68hI+TIU3I8wxVj65U5/5y6iqDBW0JpmAXENfE62+ThwRNhU0bvMhAt6x13I2TvRaqssDZlf+akjzRgqg== mail-alias-created-date: 1772007648188 Received: from [127.0.0.1] (unknown [17.56.9.36]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPSA id 9EF291800324; Tue, 17 Mar 2026 14:50:12 +0000 (UTC) From: Mohamad Alsadhan Date: Tue, 17 Mar 2026 17:49:44 +0300 Subject: [PATCH v3 3/6] rust_binder: add `wait_for_work` tracepoint Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260317-rust-binder-trace-v3-3-6fae4fbcf637@sdhn.cc> References: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> In-Reply-To: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> To: Greg Kroah-Hartman , =?utf-8?q?Arve_Hj=C3=B8nnev=C3=A5g?= , Todd Kjos , Christian Brauner , Carlos Llamas , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Danilo Krummrich Cc: Alice Ryhl , linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Mohamad Alsadhan X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3767; i=mo@sdhn.cc; h=from:subject:message-id; bh=b3sKiA3I2UPrO7DFxlsM9gt3rNS2y+IjIW3zFRGLlgY=; b=owGbwMvMwCV2WSbwWIGm61bG02pJDJk7s8SmuEyeOnfhjI5aT4dOGYGKB8H9S65c5r7r8HTvB YuiO65OHaUsDGJcDLJiiizPz3sfPfjjhtmZ83tPwcxhZQIZwsDFKQATebyO4X9utEnNZZlmCW0Z Pb263Rv4P+47fHCnfmWJ7599vEy5f8IY/rs6yF6stol/PXNdy8u0ACHT9wzpDyKY9zE+SWz6fSg mmw0A X-Developer-Key: i=mo@sdhn.cc; a=openpgp; fpr=E7CF4BC5C1F8D836CCCFBDCAD31C51C6702945B5 X-Authority-Info-Out: v=2.4 cv=Wp4m8Nfv c=1 sm=1 tr=0 ts=69b96a2b cx=c_apl:c_pps:t_out a=azHRBMxVc17uSn+fyuI/eg==:117 a=azHRBMxVc17uSn+fyuI/eg==:17 a=IkcTkHD0fZMA:10 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jL07GuSrIXuna8Q43BAA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEzMSBTYWx0ZWRfX1HZj2JpKXXza DH/CvzgCV5XKMBaC45Sm3EwjaQ3Si0NgHG8PQQaZ+RU4su9qGeEDtfObKcYY87mckt59o6K5Sc+ yVg48YaUaQrnUgBAZjMarniQgej6kjDi0tN+grimxiBChinnh1THiAWKGUQga62lU8nlDLNeMu2 ivC0BRz6AALwufoR7RYMB3MCE3fyVZgsq09rg5LsB9DCzW++8z2lDBM7iYoBfdn7WSC5oO95Xzu U+tdDxtNVHvs6iPZqzYafw5fSMAbkw/0VxXhZp3yLFzR79C5xF4WJyA1rhJfdv8patVfeX/c6Cx mkj6RJmNBEezdhCK/0B53caB6A/c9vUKv1fLyCtNiBbw9maTQd2Vs3I3pT1O4s= X-Proofpoint-ORIG-GUID: j0qkV-2h2s56BqRdMZ9aERvHMnBBeCnS X-Proofpoint-GUID: j0qkV-2h2s56BqRdMZ9aERvHMnBBeCnS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 lowpriorityscore=0 adultscore=0 phishscore=0 suspectscore=0 clxscore=1030 mlxlogscore=980 spamscore=0 bulkscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603170131 Add the Rust Binder `wait_for_work` tracepoint declaration and wire it into the thread read path before selecting the work source. Signed-off-by: Mohamad Alsadhan Suggested-by: Alice Ryhl --- drivers/android/binder/rust_binder_events.h | 18 ++++++++++++++++++ drivers/android/binder/thread.rs | 11 +++++++++-- drivers/android/binder/trace.rs | 7 +++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/drivers/android/binder/rust_binder_events.h b/drivers/android/= binder/rust_binder_events.h index 4fda8576c..62b587c7c 100644 --- a/drivers/android/binder/rust_binder_events.h +++ b/drivers/android/binder/rust_binder_events.h @@ -51,6 +51,24 @@ DEFINE_RBINDER_FUNCTION_RETURN_EVENT(binder_ioctl_done); DEFINE_RBINDER_FUNCTION_RETURN_EVENT(binder_read_done); DEFINE_RBINDER_FUNCTION_RETURN_EVENT(binder_write_done); =20 +TRACE_EVENT(binder_wait_for_work, + TP_PROTO(bool proc_work, bool transaction_stack, bool thread_todo), + TP_ARGS(proc_work, transaction_stack, thread_todo), + TP_STRUCT__entry( + __field(bool, proc_work) + __field(bool, transaction_stack) + __field(bool, thread_todo) + ), + TP_fast_assign( + __entry->proc_work =3D proc_work; + __entry->transaction_stack =3D transaction_stack; + __entry->thread_todo =3D thread_todo; + ), + TP_printk("proc_work=3D%d transaction_stack=3D%d thread_todo=3D%d", + __entry->proc_work, __entry->transaction_stack, + __entry->thread_todo) +); + TRACE_EVENT(binder_transaction, TP_PROTO(bool reply, rust_binder_transaction t, struct task_struct *threa= d), TP_ARGS(reply, t, thread), diff --git a/drivers/android/binder/thread.rs b/drivers/android/binder/thre= ad.rs index bb36c5228..15657d6e9 100644 --- a/drivers/android/binder/thread.rs +++ b/drivers/android/binder/thread.rs @@ -1412,11 +1412,18 @@ fn read(self: &Arc, req: &mut BinderWriteRead= , wait: bool) -> Result { UserSlice::new(UserPtr::from_addr(read_start as _), read_len a= s _).writer(), self, ); - let (in_pool, use_proc_queue) =3D { + let (in_pool, has_transaction, thread_todo, use_proc_queue) =3D { let inner =3D self.inner.lock(); - (inner.is_looper(), inner.should_use_process_work_queue()) + ( + inner.is_looper(), + inner.current_transaction.is_some(), + !inner.work_list.is_empty(), + inner.should_use_process_work_queue(), + ) }; =20 + crate::trace::trace_wait_for_work(use_proc_queue, has_transaction,= thread_todo); + let getter =3D if use_proc_queue { Self::get_work } else { diff --git a/drivers/android/binder/trace.rs b/drivers/android/binder/trace= .rs index 3b0458e27..1f62b2276 100644 --- a/drivers/android/binder/trace.rs +++ b/drivers/android/binder/trace.rs @@ -15,6 +15,7 @@ unsafe fn binder_ioctl_done(ret: c_int); unsafe fn binder_read_done(ret: c_int); unsafe fn binder_write_done(ret: c_int); + unsafe fn binder_wait_for_work(proc_work: bool, transaction_stack: boo= l, thread_todo: bool); unsafe fn binder_transaction(reply: bool, t: rust_binder_transaction, = thread: *mut task_struct); } =20 @@ -53,6 +54,12 @@ pub(crate) fn trace_write_done(ret: Result) { unsafe { binder_write_done(to_errno(ret)) } } =20 +#[inline] +pub(crate) fn trace_wait_for_work(proc_work: bool, transaction_stack: bool= , thread_todo: bool) { + // SAFETY: Always safe to call. + unsafe { binder_wait_for_work(proc_work, transaction_stack, thread_tod= o) } +} + #[inline] pub(crate) fn trace_transaction(reply: bool, t: &Transaction, thread: Opti= on<&Task>) { let thread =3D match thread { --=20 2.52.0 From nobody Mon Apr 6 22:03:57 2026 Received: from outbound.pv.icloud.com (p-west1-cluster6-host9-snip4-4.eps.apple.com [57.103.67.87]) (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 7CFE43E868B for ; Tue, 17 Mar 2026 14:50:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.67.87 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759030; cv=none; b=QEXs2TpVMuvHjWemQ2zdx2YizowSPxwReDoiKQedXPO6dNFVzHF/mGC51XsWPw2dVl0loLOVBN189HC/ecpKVV0WAw8BNe9JMNmogoFrorNWjQEXt4zsvZxXgFxfU/fRSv30xJKBrGlvNnhJP7d2dTY8+VvUv20GfZs3D0ZbJ30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759030; c=relaxed/simple; bh=iCd9xQ8byN7xa1LukoJWNMW0Yl6pCDonH61CQFQ6728=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A+sNWvWiP2aK2/eJE0cLhzCgKl0r3GsRlDiOMyMBGJThbtSPj/WUu4MsA/UylCOiglPyJYy4NgfEldPAbfNXnc39NYCWIv1ZS70G9Zxd/dwWyZxJ+w1ng2byZJoQtp8QAoS1F7dvtYElQjIKDBtgAkxYn3nBrwPZBlV5foPAbcw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc; spf=pass smtp.mailfrom=sdhn.cc; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b=g6fuR2NJ; arc=none smtp.client-ip=57.103.67.87 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b="g6fuR2NJ" Received: from outbound.pv.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPS id 1B14C1800124; Tue, 17 Mar 2026 14:50:21 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdhn.cc; s=sig1; t=1773759029; x=1776351029; bh=+a8oTW2ZYIRofrdUPBjh04w02SW1/OBL4k352l+t8sk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:x-icloud-hme; b=g6fuR2NJUBrg3XDQJ/MPC2rzY75mT5dWmA4YTNctALclj+iEiba0A2cuDwLq9tFlOPsdZSMOzQYaDBo8dBtqdDutsVHFL+RNXHg8yiVWp1Xs6AB5ClWRFAIn8V6O74FOdcHO0vnjFm3WQbd6QtRnmpE9DIEzmemQNNY0HTMGznPMAy/G/pARBakLFXmb+heLbfMbDxDw1n4yr3JxrUUuG+iGW8QOk8XkXFC+Tfh+0ENLCvAjI9wQWeDl9m8pg85qPsDN/iTe517pkvJQudRDOHIvNTaO5UHRq6xKsdB0SFrvPsH6/b9XjxkHpDLcKEAxbNghhHCo+koQB4IQpqUBOQ== mail-alias-created-date: 1772007648188 Received: from [127.0.0.1] (unknown [17.56.9.36]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPSA id 1B9AB180011A; Tue, 17 Mar 2026 14:50:16 +0000 (UTC) From: Mohamad Alsadhan Date: Tue, 17 Mar 2026 17:49:45 +0300 Subject: [PATCH v3 4/6] rust_binder: add `transaction_received` tracepoint Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260317-rust-binder-trace-v3-4-6fae4fbcf637@sdhn.cc> References: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> In-Reply-To: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> To: Greg Kroah-Hartman , =?utf-8?q?Arve_Hj=C3=B8nnev=C3=A5g?= , Todd Kjos , Christian Brauner , Carlos Llamas , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Danilo Krummrich Cc: Alice Ryhl , linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Mohamad Alsadhan X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2795; i=mo@sdhn.cc; h=from:subject:message-id; bh=iCd9xQ8byN7xa1LukoJWNMW0Yl6pCDonH61CQFQ6728=; b=owGbwMvMwCV2WSbwWIGm61bG02pJDJk7s8REPaK23lhx49q0mr0bAxaaLP63cmHlPp0XG9481 uI6rzC7v6OUhUGMi0FWTJHl+Xnvowd/3DA7c37vKZg5rEwgQxi4OAVgIh80Gf5X5nVtPvSw7shh wR3GjGKVH8XvarL1SjAtcoxRf+YklTeZkeHTl/hv69X2+pzj9Kie7X5oxzYTriT92Nf/u5p6bNs Xe7ADAA== X-Developer-Key: i=mo@sdhn.cc; a=openpgp; fpr=E7CF4BC5C1F8D836CCCFBDCAD31C51C6702945B5 X-Proofpoint-GUID: MyQcepXi30fQznIBOVJLRu2-YSgYk0Vi X-Proofpoint-ORIG-GUID: MyQcepXi30fQznIBOVJLRu2-YSgYk0Vi X-Authority-Info-Out: v=2.4 cv=dJqrWeZb c=1 sm=1 tr=0 ts=69b96a30 cx=c_apl:c_pps:t_out a=azHRBMxVc17uSn+fyuI/eg==:117 a=azHRBMxVc17uSn+fyuI/eg==:17 a=IkcTkHD0fZMA:10 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=mH4rWqNsxHqjp7PTL2IA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEzMSBTYWx0ZWRfX3hg1CrjeSDa5 WgLjZ0PutyXtiVsWYASmmgHz3yks/vomouo6UOvOGqRZSTFcd/xQ6chtkxnp/dL07cv0K1RPhJS dxJJYIG0/aw2xbIjF2oK8u7/V2wo0HilRy0vqOuWuQRdaaxFoVdj3AhaFsW57jMwFfwkPbmYEa9 kzoUc2lmrkOUW8XmOzwBjOWuCwzbfiTiUXpudVc9jOgpf0dOOliAiebf+KdNLGDF7Z7SVoV1QHv oOtgS5ulQVRcSTvOLirYgbrp9Q6HJOFyCJd/5aJ8D0zCtKV0/EB3jw1BSlMfKQd6FZmto4OG0+Q SUN4C68cX9yetIRjVRTvmxy3EgM2VMiylEj5K8NDBz8eLEwzKjPXJYQ82iZOdg= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 suspectscore=0 mlxlogscore=719 phishscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603170131 Add Rust Binder `transaction_received` tracepoint decalaration and wire in the corresponding trace call when a transaction work item is accepted for execution. Signed-off-by: Mohamad Alsadhan Suggested-by: Alice Ryhl --- drivers/android/binder/rust_binder_events.h | 12 ++++++++++++ drivers/android/binder/trace.rs | 7 +++++++ drivers/android/binder/transaction.rs | 2 ++ 3 files changed, 21 insertions(+) diff --git a/drivers/android/binder/rust_binder_events.h b/drivers/android/= binder/rust_binder_events.h index 62b587c7c..8a0b72bf0 100644 --- a/drivers/android/binder/rust_binder_events.h +++ b/drivers/android/binder/rust_binder_events.h @@ -99,6 +99,18 @@ TRACE_EVENT(binder_transaction, __entry->reply, __entry->flags, __entry->code) ); =20 +TRACE_EVENT(binder_transaction_received, + TP_PROTO(rust_binder_transaction t), + TP_ARGS(t), + TP_STRUCT__entry( + __field(int, debug_id) + ), + TP_fast_assign( + __entry->debug_id =3D rust_binder_transaction_debug_id(t); + ), + TP_printk("transaction=3D%d", __entry->debug_id) +); + #endif /* _RUST_BINDER_TRACE_H */ =20 /* This part must be outside protection */ diff --git a/drivers/android/binder/trace.rs b/drivers/android/binder/trace= .rs index 1f62b2276..d96afdb79 100644 --- a/drivers/android/binder/trace.rs +++ b/drivers/android/binder/trace.rs @@ -17,6 +17,7 @@ unsafe fn binder_write_done(ret: c_int); unsafe fn binder_wait_for_work(proc_work: bool, transaction_stack: boo= l, thread_todo: bool); unsafe fn binder_transaction(reply: bool, t: rust_binder_transaction, = thread: *mut task_struct); + unsafe fn binder_transaction_received(t: rust_binder_transaction); } =20 #[inline] @@ -70,3 +71,9 @@ pub(crate) fn trace_transaction(reply: bool, t: &Transact= ion, thread: Option<&Ta // valid or null. unsafe { binder_transaction(reply, raw_transaction(t), thread) } } + +#[inline] +pub(crate) fn trace_transaction_received(t: &Transaction) { + // SAFETY: The raw transaction is valid for the duration of this call. + unsafe { binder_transaction_received(raw_transaction(t)) } +} diff --git a/drivers/android/binder/transaction.rs b/drivers/android/binder= /transaction.rs index 75e6f5fba..c43846bb7 100644 --- a/drivers/android/binder/transaction.rs +++ b/drivers/android/binder/transaction.rs @@ -430,6 +430,8 @@ fn do_work( =20 self.drop_outstanding_txn(); =20 + crate::trace::trace_transaction_received(&self); + // When this is not a reply and not a oneway transaction, update `= current_transaction`. If // it's a reply, `current_transaction` has already been updated ap= propriately. if self.target_node.is_some() && tr_sec.transaction_data.flags & T= F_ONE_WAY =3D=3D 0 { --=20 2.52.0 From nobody Mon Apr 6 22:03:57 2026 Received: from outbound.pv.icloud.com (p-west1-cluster6-host7-snip4-10.eps.apple.com [57.103.67.113]) (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 563A63E8C7F for ; Tue, 17 Mar 2026 14:50:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.67.113 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759031; cv=none; b=dtRb3iTU9pfT10o6Kdv+JgQvu/Eo8/JPskp3hkw+BvAiYNd2OwrDFCryCRefkrxhh0WAMh0rE2YTOShWp0MRxVsr+Jib8SW+GYyrJyNq7dBCmvkLAdC5CjTnZslBiRBP/24/j/7Mzc645a1eDYx6eRv7VTbiqoVr8pnxAJ58Y3w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759031; c=relaxed/simple; bh=Ufd27E/w023CbcsK9unZtdTj58IEkiQWwrkpWVCkpO8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dyETgSMlwMZAjjzmPSzXg2Fv9D5pvvqHMusWSllrBr1H9D+nU71HxCPm7kD+EeTvJuBrM0WK3J8tjypm7VwYfwbqtmR45MnrduaYiG2HmJ8UPQN1SbABfCSI+gQKPq0wn7yf2nvSUp13ydSLJyDEHPmGRP6PMwmhciPzJN+/xqU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc; spf=pass smtp.mailfrom=sdhn.cc; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b=KdirNtPO; arc=none smtp.client-ip=57.103.67.113 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b="KdirNtPO" Received: from outbound.pv.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPS id 651CE1800118; Tue, 17 Mar 2026 14:50:26 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdhn.cc; s=sig1; t=1773759029; x=1776351029; bh=5BrcoQ7R4KH3Vp94QqZwz7zmQGWW0dMOlFj/ol/THg0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:x-icloud-hme; b=KdirNtPO1QqV+r5vlImmBEYJQb2q3fRXYseZFflvhKBjMdrCAsCnUab7rVcYX2zYkScz6URuLbA1F5U4m8bpMQ6LB1TtW/WpOWM3zfutwKS75troxS9pkCBSfMBXl6nxS7HAxc/BkWL57+sPCDQOj+t7wmgy9Cdugs4FVnvcoXvjF9hqb3rdp6mecYDhKk6ccKN86eBUf6iAtrKDA4DQFIX1eG2k4XslYmmq68Il7NawgIh74vCYVhISnCYOlO9CuW6qgTi0mzMmKFGNuNpFuSj+rqy4YXj85HO+PYJFO10UP80IkR9gyXBvGQIRyJQZoIc9C8kQNAqVogBK035jzw== mail-alias-created-date: 1772007648188 Received: from [127.0.0.1] (unknown [17.56.9.36]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPSA id 870391800099; Tue, 17 Mar 2026 14:50:21 +0000 (UTC) From: Mohamad Alsadhan Date: Tue, 17 Mar 2026 17:49:46 +0300 Subject: [PATCH v3 5/6] rust_binder: add fd translation tracepoints Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260317-rust-binder-trace-v3-5-6fae4fbcf637@sdhn.cc> References: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> In-Reply-To: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> To: Greg Kroah-Hartman , =?utf-8?q?Arve_Hj=C3=B8nnev=C3=A5g?= , Todd Kjos , Christian Brauner , Carlos Llamas , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Danilo Krummrich Cc: Alice Ryhl , linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Mohamad Alsadhan X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5146; i=mo@sdhn.cc; h=from:subject:message-id; bh=Ufd27E/w023CbcsK9unZtdTj58IEkiQWwrkpWVCkpO8=; b=owGbwMvMwCV2WSbwWIGm61bG02pJDJk7s8SWvjub3jt3WcZ/MaZHNwIfajkFClz/fDuJ1dt11 6qpCstaOkpZGMS4GGTFFFmen/c+evDHDbMz5/eegpnDygQyhIGLUwAmIniDkeH3Dovl5QHfdeoq nu8OkCvw+25mccfp4+GUy0GHIvw3V91g+J+2X/x97qypc8/N3/Be7fIZjmWXlj+f5WBqec181oV Zc3IYAQ== X-Developer-Key: i=mo@sdhn.cc; a=openpgp; fpr=E7CF4BC5C1F8D836CCCFBDCAD31C51C6702945B5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEzMSBTYWx0ZWRfX4Uh4zvKxNOIL LAy45kpjt2wG6l7otyx2t4jBA2+DHy4LHfsroIvEVDoTlYfrZHwpX5oVXc2hcsmHnlxhBO+Dxtj IOK+jFwhuR7M54gcXx7omUxz0nD4yhDkex9IU53KdAIENj5M9PYcmfaCnjEX3EC0GAki7Wi/Z50 QYusYgLF+fDUQRb7Yk/K3w628/X+zEqsA4H97jaWapztNqx/Ok3bqkbIoa7V9wWicf6w9nqa8vv v4Z5FEsEX0M8vwbTb+Ix8xVP4wusLsdGoJ6av425e5eZ2r68briZiiBjZCM0CdB6G3Xeoqo6jka O1ppWczWiLyYWTBzjR7kl1r5Iv0ArdgIpu2uVbrqqrBn6lX2HfkhToUuc4FznE= X-Authority-Info-Out: v=2.4 cv=K6Mv3iWI c=1 sm=1 tr=0 ts=69b96a34 cx=c_apl:c_pps:t_out a=azHRBMxVc17uSn+fyuI/eg==:117 a=azHRBMxVc17uSn+fyuI/eg==:17 a=IkcTkHD0fZMA:10 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=ARmr7P9M_ubLem6nxnMA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: ilByIYBr00OjB2UdofX2k-VnZ1r-y_xA X-Proofpoint-ORIG-GUID: ilByIYBr00OjB2UdofX2k-VnZ1r-y_xA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=924 malwarescore=0 mlxscore=0 phishscore=0 bulkscore=0 suspectscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603170131 Add Rust Binder tracepoint declarations for both `transaction_fd_send` and `transaction_fd_recv`. Also, wire in the corresponding trace calls where fd objects are serialised/deserialised. Signed-off-by: Mohamad Alsadhan Suggested-by: Alice Ryhl --- drivers/android/binder/allocation.rs | 1 + drivers/android/binder/rust_binder.h | 5 +++++ drivers/android/binder/rust_binder_events.h | 34 +++++++++++++++++++++++++= ++++ drivers/android/binder/thread.rs | 1 + drivers/android/binder/trace.rs | 13 +++++++++++ 5 files changed, 54 insertions(+) diff --git a/drivers/android/binder/allocation.rs b/drivers/android/binder/= allocation.rs index 7f65a9c3a..8c0f94463 100644 --- a/drivers/android/binder/allocation.rs +++ b/drivers/android/binder/allocation.rs @@ -208,6 +208,7 @@ pub(crate) fn translate_fds(&mut self) -> Result { let res =3D FileDescriptorReservation::get_unused_fd_flags(bin= dings::O_CLOEXEC)?; let fd =3D res.reserved_fd(); self.write::(file_info.buffer_offset, &fd)?; + crate::trace::trace_transaction_fd_recv(self.debug_id, fd, fil= e_info.buffer_offset); =20 reservations.push( Reservation { diff --git a/drivers/android/binder/rust_binder.h b/drivers/android/binder/= rust_binder.h index d2284726c..3936b9d0b 100644 --- a/drivers/android/binder/rust_binder.h +++ b/drivers/android/binder/rust_binder.h @@ -99,4 +99,9 @@ static inline size_t rust_binder_node_debug_id(rust_binde= r_node t) return *(size_t *) (t + RUST_BINDER_LAYOUT.n.debug_id); } =20 +static inline binder_uintptr_t rust_binder_node_ptr(rust_binder_node t) +{ + return *(binder_uintptr_t *) (t + RUST_BINDER_LAYOUT.n.ptr); +} + #endif diff --git a/drivers/android/binder/rust_binder_events.h b/drivers/android/= binder/rust_binder_events.h index 8a0b72bf0..572a4bf7d 100644 --- a/drivers/android/binder/rust_binder_events.h +++ b/drivers/android/binder/rust_binder_events.h @@ -111,6 +111,40 @@ TRACE_EVENT(binder_transaction_received, TP_printk("transaction=3D%d", __entry->debug_id) ); =20 +TRACE_EVENT(binder_transaction_fd_send, + TP_PROTO(int t_debug_id, int fd, size_t offset), + TP_ARGS(t_debug_id, fd, offset), + TP_STRUCT__entry( + __field(int, debug_id) + __field(int, fd) + __field(size_t, offset) + ), + TP_fast_assign( + __entry->debug_id =3D t_debug_id; + __entry->fd =3D fd; + __entry->offset =3D offset; + ), + TP_printk("transaction=3D%d src_fd=3D%d offset=3D%zu", + __entry->debug_id, __entry->fd, __entry->offset) +); + +TRACE_EVENT(binder_transaction_fd_recv, + TP_PROTO(int t_debug_id, int fd, size_t offset), + TP_ARGS(t_debug_id, fd, offset), + TP_STRUCT__entry( + __field(int, debug_id) + __field(int, fd) + __field(size_t, offset) + ), + TP_fast_assign( + __entry->debug_id =3D t_debug_id; + __entry->fd =3D fd; + __entry->offset =3D offset; + ), + TP_printk("transaction=3D%d dest_fd=3D%d offset=3D%zu", + __entry->debug_id, __entry->fd, __entry->offset) +); + #endif /* _RUST_BINDER_TRACE_H */ =20 /* This part must be outside protection */ diff --git a/drivers/android/binder/thread.rs b/drivers/android/binder/thre= ad.rs index 15657d6e9..7301fc26d 100644 --- a/drivers/android/binder/thread.rs +++ b/drivers/android/binder/thread.rs @@ -706,6 +706,7 @@ fn translate_object( core::mem::offset_of!(uapi::binder_fd_object, __bindge= n_anon_1.fd); =20 let field_offset =3D offset + FD_FIELD_OFFSET; + crate::trace::trace_transaction_fd_send(view.alloc.debug_i= d, fd, field_offset); =20 view.alloc.info_add_fd(file, field_offset, false)?; } diff --git a/drivers/android/binder/trace.rs b/drivers/android/binder/trace= .rs index d96afdb79..c6f39d833 100644 --- a/drivers/android/binder/trace.rs +++ b/drivers/android/binder/trace.rs @@ -18,6 +18,8 @@ unsafe fn binder_wait_for_work(proc_work: bool, transaction_stack: boo= l, thread_todo: bool); unsafe fn binder_transaction(reply: bool, t: rust_binder_transaction, = thread: *mut task_struct); unsafe fn binder_transaction_received(t: rust_binder_transaction); + unsafe fn binder_transaction_fd_send(t_debug_id: c_int, fd: c_int, off= set: usize); + unsafe fn binder_transaction_fd_recv(t_debug_id: c_int, fd: c_int, off= set: usize); } =20 #[inline] @@ -77,3 +79,14 @@ pub(crate) fn trace_transaction_received(t: &Transaction= ) { // SAFETY: The raw transaction is valid for the duration of this call. unsafe { binder_transaction_received(raw_transaction(t)) } } + +#[inline] +pub(crate) fn trace_transaction_fd_send(t_debug_id: usize, fd: u32, offset= : usize) { + // SAFETY: This function is always safe to call. + unsafe { binder_transaction_fd_send(t_debug_id as c_int, fd as c_int, = offset) } +} +#[inline] +pub(crate) fn trace_transaction_fd_recv(t_debug_id: usize, fd: u32, offset= : usize) { + // SAFETY: This function is always safe to call. + unsafe { binder_transaction_fd_recv(t_debug_id as c_int, fd as c_int, = offset) } +} --=20 2.52.0 From nobody Mon Apr 6 22:03:57 2026 Received: from outbound.pv.icloud.com (p-west1-cluster6-host1-snip4-3.eps.apple.com [57.103.67.26]) (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 898F13E8C76 for ; Tue, 17 Mar 2026 14:50:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=57.103.67.26 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759039; cv=none; b=l7WUyFzuRGm86sJNjzxMTHISNNliL1Wq+v/djxuU+3jr5wAK5srM4BvgjJ4bwcA5dClLQHxPggocwOekvlQRSSebgcNIrnoC8jklPejmJn77mKw+tU+efA/YYJhSSNXF770UpQ0sjiS19qWeBJWcxn8rG9+JcHoFt5nUu77SHgk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773759039; c=relaxed/simple; bh=lkB1cONJcYWK2pz8dnnJqwTyDVKxcbl+6T8fBGvDhDY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rQ1LkwsPnBbA6smfISmmElNhKM1+WmbJMSkTSagNj3hPm04gs10zN2tRxR8QIQVd0kia3Pexvd0FtMR5Sngd8ooNlBDGih2jvV8OynntsR3K52hML62hgAWSHBIhNsFV4LOJP/j7MTkQADDtiCtgn7ERzqfAaqjdTIynmgnOPE0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc; spf=pass smtp.mailfrom=sdhn.cc; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b=1Kk2nMAV; arc=none smtp.client-ip=57.103.67.26 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sdhn.cc Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sdhn.cc header.i=@sdhn.cc header.b="1Kk2nMAV" Received: from outbound.pv.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPS id 0579F180010C; Tue, 17 Mar 2026 14:50:30 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sdhn.cc; s=sig1; t=1773759038; x=1776351038; bh=5Af5R8AxBDtH7s4zwcQPN/pEvlnEtehUL32N393YgMM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:x-icloud-hme; b=1Kk2nMAV7+GxandBBg7j5MtewITVAjII2tIDgjOEkSeOnpnljg/36jB3I20O5tWOlAhX2/7oIppu47HRuLsRpKlsXP2yVHPS8CCfZN5NaTDmjcbVLYzPLd7JqhC5rrutaxmFgFloIWF218MmkO4Dzp9Mnm9p310l0f9sBhc18s4mg06FhwVyrZ9eEKXghMg0A+kZZPrriRrl+8k8iFQsE7mAqw9+QQxrnMWS5HmptTOc/CEsbQu4/lBUqtno6So4sL2K7Qzog1X+PXMbfI6oDitmzsWLyxCXYeCEfwsiQpbBMhbJ4AQgkP8mTRvNkU9wol6JIAuvOsVWNq8WoXajYw== mail-alias-created-date: 1772007648188 Received: from [127.0.0.1] (unknown [17.56.9.36]) by p00-icloudmta-asmtp-us-west-1a-100-percent-4 (Postfix) with ESMTPSA id 0699818000B1; Tue, 17 Mar 2026 14:50:25 +0000 (UTC) From: Mohamad Alsadhan Date: Tue, 17 Mar 2026 17:49:47 +0300 Subject: [PATCH v3 6/6] rust_binder: add `command`/`return` tracepoints Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260317-rust-binder-trace-v3-6-6fae4fbcf637@sdhn.cc> References: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> In-Reply-To: <20260317-rust-binder-trace-v3-0-6fae4fbcf637@sdhn.cc> To: Greg Kroah-Hartman , =?utf-8?q?Arve_Hj=C3=B8nnev=C3=A5g?= , Todd Kjos , Christian Brauner , Carlos Llamas , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , Danilo Krummrich Cc: Alice Ryhl , linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Mohamad Alsadhan X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4138; i=mo@sdhn.cc; h=from:subject:message-id; bh=lkB1cONJcYWK2pz8dnnJqwTyDVKxcbl+6T8fBGvDhDY=; b=owGbwMvMwCV2WSbwWIGm61bG02pJDJk7s8S2x33VWdt/I+DY0+vbAnnElUU55BvObb6wx21zw r9T85/YdJSyMIhxMciKKbI8P+999OCPG2Znzu89BTOHlQlkCAMXpwBM5OoDhv/1tVOjzMzOa0U8 aGi/mn/g8jGps1ONjX5Vh17mu5F4wo2D4X+UR01iwsfpRxe9W7es0710TRLnCZawPdsenSz8zm3 ArMYLAA== X-Developer-Key: i=mo@sdhn.cc; a=openpgp; fpr=E7CF4BC5C1F8D836CCCFBDCAD31C51C6702945B5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEzMSBTYWx0ZWRfX5h0fZFkHh6AS 2VgxMq5PuRYdBDUi9IH2cZI+MuQ1Ldwc8uVnjdQ3JnaJoisPs7l1h1vMqRGiNh5FlXnWVNIhF2l X7FWIZGOq9/fDmi8E5Oq2BKW+UvVQXXQEkZoKCxQyYvaWUIhkTG/owW3HnefSTeYrO+jF5pyrLy of9ROC2guaq7j70+j3cy859jRvZzBIKEvaqqFFJwlz+WUESQMDTnf1UiXNBqfoE+8XaH4faoIlT xcdj3Zs/gQj6T9e6pJWoB1293/r8vqQyxu6NQ/OoQvjXi9rl7HTMERQkIYODJE3up5Q+c5rebph ostx8WrS2qdcwKNkFSGXx1dixEkP/EHPbBBoa8/wQwr+gFbB45Z7yr4OpCP/J8= X-Authority-Info-Out: v=2.4 cv=Xb2EDY55 c=1 sm=1 tr=0 ts=69b96a39 cx=c_apl:c_pps:t_out a=azHRBMxVc17uSn+fyuI/eg==:117 a=azHRBMxVc17uSn+fyuI/eg==:17 a=IkcTkHD0fZMA:10 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=36TEhVjZt8-RUwybJdwA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: Whv-eyvqe4c0CUTHkH-atgsxhk0wi9qm X-Proofpoint-ORIG-GUID: Whv-eyvqe4c0CUTHkH-atgsxhk0wi9qm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 lowpriorityscore=0 clxscore=1030 adultscore=0 bulkscore=0 malwarescore=0 mlxlogscore=772 spamscore=0 mlxscore=0 suspectscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603170131 Add Rust Binder `command` and `return` tracepoint declarations and wire them in where BC commands are parsed and BR return codes are emitted to userspace. Signed-off-by: Mohamad Alsadhan Suggested-by: Alice Ryhl --- drivers/android/binder/rust_binder_events.h | 32 +++++++++++++++++++++++++= ++++ drivers/android/binder/rust_binder_main.rs | 1 + drivers/android/binder/thread.rs | 1 + drivers/android/binder/trace.rs | 13 ++++++++++++ 4 files changed, 47 insertions(+) diff --git a/drivers/android/binder/rust_binder_events.h b/drivers/android/= binder/rust_binder_events.h index 572a4bf7d..1a446787c 100644 --- a/drivers/android/binder/rust_binder_events.h +++ b/drivers/android/binder/rust_binder_events.h @@ -145,6 +145,38 @@ TRACE_EVENT(binder_transaction_fd_recv, __entry->debug_id, __entry->fd, __entry->offset) ); =20 +TRACE_EVENT(binder_command, + TP_PROTO(uint32_t cmd), + TP_ARGS(cmd), + TP_STRUCT__entry( + __field(uint32_t, cmd) + ), + TP_fast_assign( + __entry->cmd =3D cmd; + ), + TP_printk("cmd=3D0x%x %s", + __entry->cmd, + _IOC_NR(__entry->cmd) < ARRAY_SIZE(binder_command_strings) ? + binder_command_strings[_IOC_NR(__entry->cmd)] : + "unknown") +); + +TRACE_EVENT(binder_return, + TP_PROTO(uint32_t cmd), + TP_ARGS(cmd), + TP_STRUCT__entry( + __field(uint32_t, cmd) + ), + TP_fast_assign( + __entry->cmd =3D cmd; + ), + TP_printk("cmd=3D0x%x %s", + __entry->cmd, + _IOC_NR(__entry->cmd) < ARRAY_SIZE(binder_return_strings) ? + binder_return_strings[_IOC_NR(__entry->cmd)] : + "unknown") +); + #endif /* _RUST_BINDER_TRACE_H */ =20 /* This part must be outside protection */ diff --git a/drivers/android/binder/rust_binder_main.rs b/drivers/android/b= inder/rust_binder_main.rs index aa5f2a75a..1028e0a8a 100644 --- a/drivers/android/binder/rust_binder_main.rs +++ b/drivers/android/binder/rust_binder_main.rs @@ -116,6 +116,7 @@ fn new(writer: UserSliceWriter, thread: &'a Thread) -> = Self { /// Write a return code back to user space. /// Should be a `BR_` constant from [`defs`] e.g. [`defs::BR_TRANSACTI= ON_COMPLETE`]. fn write_code(&mut self, code: u32) -> Result { + crate::trace::trace_return(code); stats::GLOBAL_STATS.inc_br(code); self.thread.process.stats.inc_br(code); self.writer.write(&code) diff --git a/drivers/android/binder/thread.rs b/drivers/android/binder/thre= ad.rs index 7301fc26d..ef7fba700 100644 --- a/drivers/android/binder/thread.rs +++ b/drivers/android/binder/thread.rs @@ -1324,6 +1324,7 @@ fn write(self: &Arc, req: &mut BinderWriteRead)= -> Result { while reader.len() >=3D size_of::() && self.inner.lock().retu= rn_work.is_unused() { let before =3D reader.len(); let cmd =3D reader.read::()?; + crate::trace::trace_command(cmd); GLOBAL_STATS.inc_bc(cmd); self.process.stats.inc_bc(cmd); match cmd { diff --git a/drivers/android/binder/trace.rs b/drivers/android/binder/trace= .rs index c6f39d833..5539672d7 100644 --- a/drivers/android/binder/trace.rs +++ b/drivers/android/binder/trace.rs @@ -20,6 +20,8 @@ unsafe fn binder_transaction_received(t: rust_binder_transaction); unsafe fn binder_transaction_fd_send(t_debug_id: c_int, fd: c_int, off= set: usize); unsafe fn binder_transaction_fd_recv(t_debug_id: c_int, fd: c_int, off= set: usize); + unsafe fn binder_command(cmd: u32); + unsafe fn binder_return(ret: u32); } =20 #[inline] @@ -90,3 +92,14 @@ pub(crate) fn trace_transaction_fd_recv(t_debug_id: usiz= e, fd: u32, offset: usiz // SAFETY: This function is always safe to call. unsafe { binder_transaction_fd_recv(t_debug_id as c_int, fd as c_int, = offset) } } + +#[inline] +pub(crate) fn trace_command(cmd: u32) { + // SAFETY: This function is always safe to call. + unsafe { binder_command(cmd) } +} +#[inline] +pub(crate) fn trace_return(ret: u32) { + // SAFETY: This function is always safe to call. + unsafe { binder_return(ret) } +} --=20 2.52.0