diff --git a/drivers/android/binder/process.rs b/drivers/android/binder/process.rs index 8ae013580494..d6359ab57315 100644 --- a/drivers/android/binder/process.rs +++ b/drivers/android/binder/process.rs @@ -1550,11 +1550,13 @@ pub(crate) fn open(ctx: ArcBorrow<'_, Context>, file: &File) -> Result, _file: &File) { + let binderfs_file; let should_schedule; { let mut inner = this.inner.lock(); should_schedule = inner.defer_work == 0; inner.defer_work |= PROC_DEFER_RELEASE; + binderfs_file = inner.binderfs_file.take(); } if should_schedule { @@ -1562,6 +1564,8 @@ pub(crate) fn release(this: Arc, _file: &File) { // scheduled for execution. let _ = workqueue::system().enqueue(this); } + + drop(binderfs_file); } pub(crate) fn flush(this: ArcBorrow<'_, Process>) -> Result {