diff --git a/kernel/src/net/socket/ip/datagram/mod.rs b/kernel/src/net/socket/ip/datagram/mod.rs
index b1989bc08..b27634af2 100644
--- a/kernel/src/net/socket/ip/datagram/mod.rs
+++ b/kernel/src/net/socket/ip/datagram/mod.rs
@@ -130,7 +130,7 @@ impl DatagramSocket {
}
// Slow path
- let mut inner = self.inner.write();
+ let mut inner = self.inner.write_irq_disabled();
inner.borrow_result(|owned_inner| {
let bound_datagram = match owned_inner.bind_to_ephemeral_endpoint(remote_endpoint) {
Ok(bound_datagram) => bound_datagram,
@@ -278,7 +278,7 @@ impl Socket for DatagramSocket {
let endpoint = socket_addr.try_into()?;
let can_reuse = self.options.read().socket.reuse_addr();
- let mut inner = self.inner.write();
+ let mut inner = self.inner.write_irq_disabled();
inner.borrow_result(|owned_inner| {
let bound_datagram = match owned_inner.bind(&endpoint, can_reuse) {
Ok(bound_datagram) => bound_datagram,
@@ -296,7 +296,7 @@ impl Socket for DatagramSocket {
self.try_bind_ephemeral(&endpoint)?;
- let mut inner = self.inner.write();
+ let mut inner = self.inner.write_irq_disabled();
let Inner::Bound(bound_datagram) = inner.as_mut() else {
return_errno_with_message!(Errno::EINVAL, "the socket is not bound")
};
diff --git a/kernel/src/net/socket/ip/stream/connecting.rs b/kernel/src/net/socket/ip/stream/connecting.rs
index 8a3141208..d2ca8d7ff 100644
--- a/kernel/src/net/socket/ip/stream/connecting.rs
+++ b/kernel/src/net/socket/ip/stream/connecting.rs
@@ -1,14 +1,15 @@
// SPDX-License-Identifier: MPL-2.0
use aster_bigtcp::wire::IpEndpoint;
+use ostd::sync::LocalIrqDisabled;
use super::{connected::ConnectedStream, init::InitStream};
-use crate::{net::iface::BoundTcpSocket, prelude::*, process::signal::Pollee};
+use crate::{events::IoEvents, net::iface::BoundTcpSocket, prelude::*, process::signal::Pollee};
pub struct ConnectingStream {
bound_socket: BoundTcpSocket,
remote_endpoint: IpEndpoint,
- conn_result: RwLock