Skip to content

Commit fd5510e

Browse files
committed
fix(driver,poll): mark submit unsafe
1 parent a70d5d7 commit fd5510e

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

compio-driver/src/poll/mod.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -186,19 +186,19 @@ impl Driver {
186186
RawOp::new(user_data, op)
187187
}
188188

189-
fn submit(&mut self, user_data: usize, arg: WaitArg) -> io::Result<()> {
189+
/// # Safety
190+
/// The input fd should be valid.
191+
unsafe fn submit(&mut self, user_data: usize, arg: WaitArg) -> io::Result<()> {
190192
let need_add = !self.registry.contains_key(&arg.fd);
191193
let queue = self.registry.entry(arg.fd).or_default();
192194
queue.push_back_interest(user_data, arg.interest);
193195
// We use fd as the key.
194196
let event = queue.event(arg.fd as usize);
195-
unsafe {
196-
if need_add {
197-
self.poll.add(arg.fd, event)?;
198-
} else {
199-
let fd = BorrowedFd::borrow_raw(arg.fd);
200-
self.poll.modify(fd, event)?;
201-
}
197+
if need_add {
198+
self.poll.add(arg.fd, event)?;
199+
} else {
200+
let fd = BorrowedFd::borrow_raw(arg.fd);
201+
self.poll.modify(fd, event)?;
202202
}
203203
Ok(())
204204
}
@@ -218,7 +218,10 @@ impl Driver {
218218
let op_pin = op.as_pin();
219219
match op_pin.pre_submit() {
220220
Ok(Decision::Wait(arg)) => {
221-
self.submit(user_data, arg)?;
221+
// SAFETY: fd is from the OpCode.
222+
unsafe {
223+
self.submit(user_data, arg)?;
224+
}
222225
Poll::Pending
223226
}
224227
Ok(Decision::Completed(res)) => Poll::Ready(Ok(res)),

0 commit comments

Comments
 (0)