Skip to content

Commit

Permalink
Auto merge of #3982 - RalfJung:epoll_ctl, r=RalfJung
Browse files Browse the repository at this point in the history
epoll_ctl: throw unsupported error on unsupported opcode

`@tiif` this is a somewhat suspicious "return -1" without setting the `errno` -- what is the reasoning behind that?

Throwing a clear error seems better to me.
  • Loading branch information
bors committed Oct 22, 2024
2 parents c4dea49 + b681885 commit cebaefc
Showing 1 changed file with 4 additions and 11 deletions.
15 changes: 4 additions & 11 deletions src/shims/unix/linux/epoll.rs
Original file line number Diff line number Diff line change
Expand Up @@ -256,14 +256,6 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
let epollhup = this.eval_libc_u32("EPOLLHUP");
let epollerr = this.eval_libc_u32("EPOLLERR");

// Fail on unsupported operations.
if op & epoll_ctl_add != epoll_ctl_add
&& op & epoll_ctl_mod != epoll_ctl_mod
&& op & epoll_ctl_del != epoll_ctl_del
{
throw_unsup_format!("epoll_ctl: encountered unknown unsupported operation {:#x}", op);
}

// Throw EINVAL if epfd and fd have the same value.
if epfd_value == fd {
return this.set_last_error_and_return_i32(LibcError("EINVAL"));
Expand Down Expand Up @@ -363,7 +355,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
// Notification will be returned for current epfd if there is event in the file
// descriptor we registered.
check_and_update_one_event_interest(&fd_ref, interest, id, this)?;
return interp_ok(Scalar::from_i32(0));
interp_ok(Scalar::from_i32(0))
} else if op == epoll_ctl_del {
let epoll_key = (id, fd);

Expand All @@ -387,9 +379,10 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
.unwrap()
.retain(|event| event.upgrade().is_some());

return interp_ok(Scalar::from_i32(0));
interp_ok(Scalar::from_i32(0))
} else {
throw_unsup_format!("unsupported epoll_ctl operation: {op}");
}
interp_ok(Scalar::from_i32(-1))
}

/// The `epoll_wait()` system call waits for events on the `Epoll`
Expand Down

0 comments on commit cebaefc

Please sign in to comment.