diff --git a/changelog/2783.fixed.md b/changelog/2783.fixed.md new file mode 100644 index 0000000000..f1ecae676e --- /dev/null +++ b/changelog/2783.fixed.md @@ -0,0 +1,3 @@ +Fixed `EpollEvent::events()` to use `from_bits_retain` instead of +`from_bits().unwrap()`, preventing panics when the kernel returns +unknown epoll flags. diff --git a/src/sys/epoll.rs b/src/sys/epoll.rs index a4ff9b1b6d..9728061d7f 100644 --- a/src/sys/epoll.rs +++ b/src/sys/epoll.rs @@ -63,7 +63,7 @@ impl EpollEvent { } pub fn events(&self) -> EpollFlags { - EpollFlags::from_bits(self.event.events as c_int).unwrap() + EpollFlags::from_bits_retain(self.event.events as c_int) } pub const fn data(&self) -> u64 {