Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
d96ec5f
don't switch to alternate stick if already executing on it
Freax13 Feb 21, 2026
b96ff1a
implement MSG_TRUNC for recvmsg
Freax13 Feb 21, 2026
2bd1ba1
implement seek for memfd
Freax13 Feb 21, 2026
c7dc071
return success after connect returned EINPROGRESS
Freax13 Feb 21, 2026
e77a4c8
add KOBJECT_UEVENT netlink family
Freax13 Feb 21, 2026
23270f0
add passcred option for netlink sockets
Freax13 Feb 21, 2026
6570b6b
fix MADV_DONTNEED
Freax13 Feb 21, 2026
7e065ca
implement waitid syscall
Freax13 Feb 21, 2026
ed28206
fix pread64/pwrite64/fallocate on i386
Freax13 Feb 21, 2026
4a8c234
fix timeout behavior for FUTEX_WAIT
Freax13 Feb 21, 2026
35f07d9
inject SIGSEGV when starting a signal handler fails
Freax13 Feb 21, 2026
58bf986
implement shutdown for seqpacket unix sockets
Freax13 Mar 24, 2026
c82351d
implement sendmsg & recvmsg for seqpacket unix sockets
Freax13 Mar 24, 2026
88e98c2
support /proc/<pid> for threads
Freax13 Mar 24, 2026
23d3e50
implement /proc/<pid>/task/<tid>/stat
Freax13 Mar 24, 2026
706ba6c
properly implement non-blocking connects
Freax13 Mar 24, 2026
7c4c73a
fix backlog size for TCP sockets
Freax13 Mar 24, 2026
3bdd6e2
implement sendmsg for netlink sockets
Freax13 Mar 24, 2026
50401a8
consider mmap hints
Freax13 Mar 24, 2026
519be5d
implement PR_GET_PDEATHSIG
Freax13 Mar 24, 2026
3ed73df
implement PR_SET_PTRACER
Freax13 Mar 24, 2026
1913697
implement ARCH_SET_GS
Freax13 Mar 24, 2026
478da60
implement (and ignore) MADV_WILLNEED
Freax13 Mar 24, 2026
9818ab8
start to implement PTRACE_PEEKUSER
Freax13 Mar 24, 2026
4a4dc99
implement PTRACE_GETREGSET
Freax13 Mar 24, 2026
f074653
implement PTRACE_GETFPREGS
Freax13 Mar 24, 2026
5dc5644
don't update MsgHdr after sendmsg call
Freax13 Mar 24, 2026
88a6b08
ignore MSG_NOSIGNAL
Freax13 Mar 24, 2026
19cd7c8
ignore hugetlb bits for MemfdCreateFlags
Freax13 Mar 24, 2026
64adaf1
attempt to pretty print SocketAddr pointers
Freax13 Mar 24, 2026
ec7a3b6
implement Debug for Pollfd
Freax13 Mar 24, 2026
1cb1b7e
fix capitalization for PPid
Freax13 Mar 24, 2026
f044b7e
implement recv_from for netlink sockets
Freax13 Mar 28, 2026
ec90903
only make SetLkW ops interruptable
Freax13 Apr 4, 2026
efa6c3c
implement SO_PRIORITY for seqpacket unix sockets
Freax13 Apr 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions tee/kernel/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,13 @@ pub enum ErrorKind {
AddrInUse = 98,
AddrNotAvail = 99,
NetUnreach = 101,
ConnAborted = 103,
ConnReset = 104,
IsConn = 106,
NotConn = 107,
TimedOut = 110,
ConnRefused = 111,
Already = 114,
InProgress = 115,
RestartNoIntr = 512,
RestartRestartblock = 516,
Expand Down
2 changes: 1 addition & 1 deletion tee/kernel/src/fs/fd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -896,7 +896,7 @@ pub trait OpenFileDescription: Send + Sync + 'static {
&self,
vm: &VirtualMemory,
abi: Abi,
msg_hdr: &mut MsgHdr,
msg_hdr: MsgHdr,
flags: SendMsgFlags,
fdtable: &FileDescriptorTable,
ctx: &FileAccessContext,
Expand Down
6 changes: 6 additions & 0 deletions tee/kernel/src/fs/fd/epoll.rs
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,12 @@ impl EventCounter {
}
}

impl Default for EventCounter {
fn default() -> Self {
Self::new()
}
}

pub struct AtomicEventCounter(AtomicU64);

impl AtomicEventCounter {
Expand Down
42 changes: 40 additions & 2 deletions tee/kernel/src/fs/fd/mem.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use async_trait::async_trait;
use x86_64::structures::paging::{PageSize, Size4KiB};

use crate::{
error::Result,
error::{Result, ensure, err},
fs::{
FileSystem,
fd::{
Expand All @@ -20,7 +20,8 @@ use crate::{
user::{
futex::Futexes,
syscall::args::{
FileMode, FileType, FileTypeAndMode, MemfdCreateFlags, OpenFlags, Seals, Stat, Timespec,
FileMode, FileType, FileTypeAndMode, MemfdCreateFlags, OpenFlags, Seals, Stat,
Timespec, Whence,
},
thread::{Gid, Uid},
},
Expand Down Expand Up @@ -153,6 +154,43 @@ impl OpenFileDescription for MemFd {
guard.buffer.truncate(length)
}

fn seek(&self, offset: usize, whence: Whence, _: &mut FileAccessContext) -> Result<usize> {
let mut guard = self.internal.lock();

match whence {
Whence::Set => guard.cursor_idx = offset,
Whence::Cur => {
guard.cursor_idx = guard
.cursor_idx
.checked_add_signed(offset as isize)
.ok_or(err!(Inval))?
}
Whence::End => {
let size = guard.buffer.len();
guard.cursor_idx = size
.checked_add_signed(offset as isize)
.ok_or(err!(Inval))?
}
Whence::Data => {
// Ensure that `offset` doesn't point past the file.
ensure!(offset < guard.buffer.len(), NxIo);

// We don't support holes so we always jump to `offset`.
guard.cursor_idx = offset;
}
Whence::Hole => {
let size = guard.buffer.len();

// Ensure that `offset` doesn't point past the file.
ensure!(offset < size, NxIo);

// We don't support holes so we always jump to the end of the file.
guard.cursor_idx = size;
}
}
Ok(guard.cursor_idx)
}

fn get_page(&self, page_idx: usize, shared: bool) -> Result<KernelPage> {
let mut guard = self.internal.lock();
guard.buffer.get_page(page_idx, shared)
Expand Down
9 changes: 7 additions & 2 deletions tee/kernel/src/fs/fd/unix_socket/dgram.rs
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,12 @@ impl OpenFileDescription for DgramUnixSocket {
}
drop(cmsg_builder);

Ok(written)
let len = if flags.contains(RecvMsgFlags::TRUNC) {
len
} else {
written
};
Ok(len)
}

fn write(&self, buf: &dyn WriteBuf, ctx: &FileAccessContext) -> Result<usize> {
Expand Down Expand Up @@ -507,7 +512,7 @@ impl OpenFileDescription for DgramUnixSocket {
&self,
vm: &VirtualMemory,
abi: Abi,
msg_hdr: &mut MsgHdr,
mut msg_hdr: MsgHdr,
flags: SendMsgFlags,
fdtable: &FileDescriptorTable,
ctx: &FileAccessContext,
Expand Down
Loading
Loading