Lines Matching full:let

153         let ancestors_i = self  in validate_parent_fixup()
159 let sg_idx = self.ancestors[ancestors_i]; in validate_parent_fixup()
160 let sg_entry = match self.sg_entries.get(sg_idx) { in validate_parent_fixup()
180 let new_min_offset = parent_offset.checked_add(length).ok_or(EINVAL)?; in validate_parent_fixup()
189 let target_offset = sg_entry.offset.checked_add(parent_offset).ok_or(EINVAL)?; in validate_parent_fixup()
215 let size = ptr_align(size).ok_or(EINVAL)?; in claim_next()
216 let new_offset = self.offset.checked_add(size).ok_or(EINVAL)?; in claim_next()
219 let offset = self.offset; in claim_next()
306 let ret = self.work_list.pop_front(); in pop_work()
322 if let Ok(work) = ListArc::try_from_arc(self.reply_work.clone()) { in push_reply_work()
331 if let Ok(work) = ListArc::try_from_arc(self.return_work.clone()) { in push_return_work()
351 let transaction = self.current_transaction.take().ok_or(EINVAL)?; in pop_transaction_to_reply()
448 let inner = InnerThread::new()?; in new()
466 let inner = self.inner.lock(); in debug_print()
478 let mut t_opt = inner.current_transaction.as_ref(); in debug_print()
479 while let Some(t) = t_opt { in debug_print()
499 let mut writer = data.writer(); in get_extended_error()
500 let ee = self.inner.lock().extended_error; in get_extended_error()
518 let mut inner = self.inner.lock(); in get_work_local()
530 let mut inner = self.inner.lock(); in get_work_local()
532 if let Some(work) = inner.pop_work() { in get_work_local()
537 let signal_pending = self.work_condvar.wait_interruptible_freezable(&mut inner); in get_work_local()
557 let mut inner = self.inner.lock(); in get_work()
558 if let Some(work) = inner.pop_work() { in get_work()
576 let reg = match self.process.get_work_or_register(self) { in get_work()
581 let mut inner = self.inner.lock(); in get_work()
583 if let Some(work) = inner.pop_work() { in get_work()
588 let signal_pending = self.work_condvar.wait_interruptible_freezable(&mut inner); in get_work()
599 let res = match self.inner.lock().pop_work() { in get_work()
613 let sync = work.should_sync_wakeup(); in push_work()
615 let res = self.inner.lock().push_work(work); in push_work()
631 let mut inner = self.inner.lock(); in push_work_if_looper()
660 let strong = obj.hdr.type_ == BINDER_TYPE_BINDER; in translate_object()
663 let ptr = unsafe { obj.__bindgen_anon_1.binder } as _; in translate_object()
664 let cookie = obj.cookie as _; in translate_object()
665 let flags = obj.flags as _; in translate_object()
666 let node = self in translate_object()
674 let strong = obj.hdr.type_ == BINDER_TYPE_HANDLE; in translate_object()
676 let handle = unsafe { obj.__bindgen_anon_1.handle } as _; in translate_object()
677 let node = self.process.get_node_from_handle(handle, strong)?; in translate_object()
687 let fd = unsafe { obj.__bindgen_anon_1.fd }; in translate_object()
688 let file = LocalFile::fget(fd)?; in translate_object()
691 let file = unsafe { LocalFile::assume_no_fdget_pos(file) }; in translate_object()
698 let mut obj_write = BinderFdObject::default(); in translate_object()
708 let field_offset = offset + FD_FIELD_OFFSET; in translate_object()
713 let obj_length = obj.length.try_into().map_err(|_| EINVAL)?; in translate_object()
714 let alloc_offset = match sg_state.unused_buffer_space.claim_next(obj_length) { in translate_object()
727 let sg_state_idx = sg_state.sg_entries.len(); in translate_object()
740 let buffer_ptr_in_user_space = (view.alloc.ptr + alloc_offset) as u64; in translate_object()
749 let parent_index = usize::try_from(obj.parent).map_err(|_| EINVAL)?; in translate_object()
750 let parent_offset = usize::try_from(obj.parent_offset).map_err(|_| EINVAL)?; in translate_object()
752 let info = sg_state.validate_parent_fixup( in translate_object()
761 let parent_entry = match sg_state.sg_entries.get_mut(info.parent_sg_index) { in translate_object()
781 let mut obj_write = BinderBufferObject::default(); in translate_object()
794 let parent_index = usize::try_from(obj.parent).map_err(|_| EINVAL)?; in translate_object()
795 let parent_offset = usize::try_from(obj.parent_offset).map_err(|_| EINVAL)?; in translate_object()
796 let num_fds = usize::try_from(obj.num_fds).map_err(|_| EINVAL)?; in translate_object()
797 let fds_len = num_fds.checked_mul(size_of::<u32>()).ok_or(EINVAL)?; in translate_object()
803 let info = sg_state.validate_parent_fixup(parent_index, parent_offset, fds_len)?; in translate_object()
807 let parent_entry = match sg_state.sg_entries.get_mut(info.parent_sg_index) { in translate_object()
833 let fda_uaddr = parent_entry in translate_object()
838 let mut fda_bytes = KVec::new(); in translate_object()
848 let fd = { in translate_object()
849 let mut fd_bytes = [0u8; size_of::<u32>()]; in translate_object()
854 let file = LocalFile::fget(fd)?; in translate_object()
857 let file = unsafe { LocalFile::assume_no_fdget_pos(file) }; in translate_object()
870 let mut obj_write = BinderFdArrayObject::default(); in translate_object()
883 let mut end_of_previous_fixup = sg_entry.offset; in apply_sg()
884 let offset_end = sg_entry.offset.checked_add(sg_entry.length).ok_or(EINVAL)?; in apply_sg()
886 let mut reader = in apply_sg()
889 let (fixup_len, fixup_offset) = match fixup { in apply_sg()
899 let target_offset_end = fixup_offset.checked_add(fixup_len).ok_or(EINVAL)?; in apply_sg()
911 let copy_off = end_of_previous_fixup; in apply_sg()
912 let copy_len = fixup_offset - end_of_previous_fixup; in apply_sg()
913 if let Err(err) = alloc.copy_into(&mut reader, copy_off, copy_len) { in apply_sg()
917 if let PointerFixupEntry::Fixup { pointer_value, .. } = fixup { in apply_sg()
918 let res = alloc.write::<u64>(fixup_offset, pointer_value); in apply_sg()
919 if let Err(err) = res { in apply_sg()
924 if let Err(err) = reader.skip(fixup_len) { in apply_sg()
930 let copy_off = end_of_previous_fixup; in apply_sg()
931 let copy_len = offset_end - end_of_previous_fixup; in apply_sg()
932 if let Err(err) = alloc.copy_into(&mut reader, copy_off, copy_len) { in apply_sg()
953 let trd = &tr.transaction_data; in copy_transaction_data()
954 let is_oneway = trd.flags & TF_ONE_WAY != 0; in copy_transaction_data()
955 let mut secctx = if let Some(offset) = txn_security_ctx_offset { in copy_transaction_data()
956 let secid = self.process.cred.get_secid(); in copy_transaction_data()
957 let ctx = match security::SecurityCtx::from_secid(secid) { in copy_transaction_data()
969 let data_size = trd.data_size.try_into().map_err(|_| EINVAL)?; in copy_transaction_data()
970 let aligned_data_size = ptr_align(data_size).ok_or(EINVAL)?; in copy_transaction_data()
971 let offsets_size: usize = trd.offsets_size.try_into().map_err(|_| EINVAL)?; in copy_transaction_data()
972 let buffers_size: usize = tr.buffers_size.try_into().map_err(|_| EINVAL)?; in copy_transaction_data()
973 let aligned_secctx_size = match secctx.as_ref() { in copy_transaction_data()
986 let len = usize::max( in copy_transaction_data()
994 let secctx_off = aligned_data_size + offsets_size + buffers_size; in copy_transaction_data()
995 let mut alloc = in copy_transaction_data()
1010 let trd_data_ptr = unsafe { &trd.data.ptr }; in copy_transaction_data()
1011 let mut buffer_reader = in copy_transaction_data()
1013 let mut end_of_previous_object = 0; in copy_transaction_data()
1014 let mut sg_state = None; in copy_transaction_data()
1018 let mut offsets_reader = in copy_transaction_data()
1022 let offsets_start = aligned_data_size; in copy_transaction_data()
1023 let offsets_end = aligned_data_size + offsets_size; in copy_transaction_data()
1026 let sg_state = sg_state.insert(ScatterGatherState { in copy_transaction_data()
1036 let mut view = AllocationView::new(&mut alloc, data_size); in copy_transaction_data()
1041 let offset = offsets_reader.read::<u64>()?; in copy_transaction_data()
1043 let offset: usize = offset.try_into().map_err(|_| EINVAL)?; in copy_transaction_data()
1059 let mut object = BinderObject::read_from(&mut buffer_reader)?; in copy_transaction_data()
1077 let offset_after_object = index_offset + size_of::<u64>(); in copy_transaction_data()
1090 if let Some(sg_state) = sg_state.as_mut() { in copy_transaction_data()
1091 if let Err(err) = self.apply_sg(&mut alloc, sg_state) { in copy_transaction_data()
1097 if let Some((off_out, secctx)) = secctx.as_mut() { in copy_transaction_data()
1098 if let Err(err) = alloc.write(secctx_off, secctx.as_bytes()) { in copy_transaction_data()
1108 let mut thread = self.clone(); in unwind_transaction_stack()
1109 while let Ok(transaction) = { in unwind_transaction_stack()
1110 let mut inner = thread.inner.lock(); in unwind_transaction_stack()
1113 let reply = Err(BR_DEAD_REPLY); in unwind_transaction_stack()
1142 if let Ok(transaction) = &reply { in deliver_single_reply()
1148 let mut inner = self.inner.lock(); in deliver_single_reply()
1172 let inner = self.inner.lock(); in is_current_transaction()
1183 let inner = self.inner.lock(); in top_of_transaction_stack()
1184 if let Some(cur) = &inner.current_transaction { in top_of_transaction_stack()
1199 if let Err(err) = inner(self, tr) { in transaction()
1201 let mut ee = self.inner.lock().extended_error; in transaction()
1217 let handle = unsafe { tr.transaction_data.target.handle }; in transaction_inner()
1218 let node_ref = self.process.get_transaction_node(handle)?; in transaction_inner()
1222 let top = self.top_of_transaction_stack()?; in transaction_inner()
1223 let list_completion = DTRWrap::arc_try_new(DeliverCode::new(BR_TRANSACTION_COMPLETE))?; in transaction_inner()
1224 let completion = list_completion.clone_arc(); in transaction_inner()
1225 let transaction = Transaction::new(node_ref, top, self, tr)?; in transaction_inner()
1230 let mut inner = self.inner.lock(); in transaction_inner()
1241 if let Err(e) = transaction.submit() { in transaction_inner()
1244 let transaction; in transaction_inner()
1245 let mut inner = self.inner.lock(); in transaction_inner()
1255 let orig = self.inner.lock().pop_transaction_to_reply(self)?; in reply_inner()
1261 let out = (|| -> BinderResult<_> { in reply_inner()
1262 let completion = DTRWrap::arc_try_new(DeliverCode::new(BR_TRANSACTION_COMPLETE))?; in reply_inner()
1263 let process = orig.from.process.clone(); in reply_inner()
1264 let allow_fds = orig.flags & TF_ACCEPT_FDS != 0; in reply_inner()
1265 let reply = Transaction::new_reply(self, process, tr, allow_fds)?; in reply_inner()
1271 // At this point we only return `BR_TRANSACTION_COMPLETE` to the caller, and we must let in reply_inner()
1277 let reply = Err(BR_FAILED_REPLY); in reply_inner()
1289 let handle = unsafe { tr.transaction_data.target.handle }; in oneway_transaction_inner()
1290 let node_ref = self.process.get_transaction_node(handle)?; in oneway_transaction_inner()
1292 let transaction = Transaction::new(node_ref, None, self, tr)?; in oneway_transaction_inner()
1293 let code = if self.process.is_oneway_spam_detection_enabled() in oneway_transaction_inner()
1300 let list_completion = DTRWrap::arc_try_new(DeliverCode::new(code))?; in oneway_transaction_inner()
1301 let completion = list_completion.clone_arc(); in oneway_transaction_inner()
1313 let write_start = req.write_buffer.wrapping_add(req.write_consumed); in write()
1314 let write_len = req.write_size.saturating_sub(req.write_consumed); in write()
1315 let mut reader = in write()
1319 let before = reader.len(); in write()
1320 let cmd = reader.read::<u32>()?; in write()
1325 let tr = reader.read::<BinderTransactionData>()?.with_buffers_size(0); in write()
1333 let tr = reader.read::<BinderTransactionDataSg>()?; in write()
1341 let tr = reader.read::<BinderTransactionData>()?.with_buffers_size(0); in write()
1345 let tr = reader.read::<BinderTransactionDataSg>()?; in write()
1349 let buffer = self.process.buffer_get(reader.read()?); in write()
1350 if let Some(buffer) = buffer { in write()
1383 let valid = self.process.register_thread(); in write()
1404 let read_start = req.read_buffer.wrapping_add(req.read_consumed); in read()
1405 let read_len = req.read_size.saturating_sub(req.read_consumed); in read()
1406 let mut writer = BinderReturnWriter::new( in read()
1410 let (in_pool, use_proc_queue) = { in read()
1411 let inner = self.inner.lock(); in read()
1415 let getter = if use_proc_queue { in read()
1423 let mut has_noop_placeholder = false; in read()
1425 if let Err(err) = writer.write_code(BR_NOOP) { in read()
1433 let initial_len = writer.len(); in read()
1464 let mut writer = in read()
1473 let (mut reader, mut writer) = data.reader_writer(); in write_read()
1474 let mut req = reader.read::<BinderWriteRead>()?; in write_read()
1477 let mut ret = Ok(()); in write_read()
1480 if let Err(err) = ret { in write_read()
1515 let mut inner = self.inner.lock(); in poll()
1521 let mut inner = self.inner.lock(); in exit_looper()
1522 let should_notify = inner.looper_flags & LOOPER_WAITING != 0; in exit_looper()
1535 let inner = self.inner.lock(); in notify_if_poll_ready()
1536 let notify = inner.looper_flags & LOOPER_POLL != 0 && inner.should_use_process_work_queue(); in notify_if_poll_ready()
1556 while let Ok(Some(work)) = self.get_work_local(false) { in release()
1593 let code = self.error_code.load(Relaxed); in do_work()