summaryrefslogtreecommitdiff
path: root/Kernel
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/FileSystem/Ext2FileSystem.cpp44
-rw-r--r--Kernel/FileSystem/Ext2FileSystem.h2
-rw-r--r--Kernel/FileSystem/ProcFS.cpp6
-rw-r--r--Kernel/FileSystem/VirtualFileSystem.cpp4
-rw-r--r--Kernel/Net/IPv4Socket.cpp4
-rw-r--r--Kernel/Net/IPv4Socket.h2
-rw-r--r--Kernel/Net/LocalSocket.cpp4
-rw-r--r--Kernel/Net/LocalSocket.h2
-rw-r--r--Kernel/Net/Socket.h8
-rw-r--r--Kernel/Process.cpp12
-rw-r--r--Kernel/SharedBuffer.cpp4
-rw-r--r--Kernel/Thread.cpp4
-rw-r--r--Kernel/VM/RangeAllocator.cpp6
13 files changed, 52 insertions, 50 deletions
diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp
index a6d8a510eb..286a6f1023 100644
--- a/Kernel/FileSystem/Ext2FileSystem.cpp
+++ b/Kernel/FileSystem/Ext2FileSystem.cpp
@@ -668,15 +668,15 @@ ssize_t Ext2FSInode::read_bytes(off_t offset, ssize_t count, u8* buffer, FileDes
const int block_size = fs().block_size();
- int first_block_logical_index = offset / block_size;
- int last_block_logical_index = (offset + count) / block_size;
+ size_t first_block_logical_index = offset / block_size;
+ size_t last_block_logical_index = (offset + count) / block_size;
if (last_block_logical_index >= m_block_list.size())
last_block_logical_index = m_block_list.size() - 1;
int offset_into_first_block = offset % block_size;
ssize_t nread = 0;
- int remaining_count = min((off_t)count, (off_t)size() - offset);
+ size_t remaining_count = min((off_t)count, (off_t)size() - offset);
u8* out = buffer;
#ifdef EXT2_DEBUG
@@ -685,7 +685,7 @@ ssize_t Ext2FSInode::read_bytes(off_t offset, ssize_t count, u8* buffer, FileDes
u8 block[max_block_size];
- for (int bi = first_block_logical_index; remaining_count && bi <= last_block_logical_index; ++bi) {
+ for (size_t bi = first_block_logical_index; remaining_count && bi <= last_block_logical_index; ++bi) {
auto block_index = m_block_list[bi];
ASSERT(block_index);
bool success = fs().read_block(block_index, block, description);
@@ -694,8 +694,8 @@ ssize_t Ext2FSInode::read_bytes(off_t offset, ssize_t count, u8* buffer, FileDes
return -EIO;
}
- int offset_into_block = (bi == first_block_logical_index) ? offset_into_first_block : 0;
- int num_bytes_to_copy = min(block_size - offset_into_block, remaining_count);
+ size_t offset_into_block = (bi == first_block_logical_index) ? offset_into_first_block : 0;
+ size_t num_bytes_to_copy = min(block_size - offset_into_block, remaining_count);
memcpy(out, block + offset_into_block, num_bytes_to_copy);
remaining_count -= num_bytes_to_copy;
nread += num_bytes_to_copy;
@@ -712,8 +712,8 @@ KResult Ext2FSInode::resize(u64 new_size)
return KSuccess;
u64 block_size = fs().block_size();
- int blocks_needed_before = ceil_div(old_size, block_size);
- int blocks_needed_after = ceil_div(new_size, block_size);
+ size_t blocks_needed_before = ceil_div(old_size, block_size);
+ size_t blocks_needed_after = ceil_div(new_size, block_size);
#ifdef EXT2_DEBUG
dbgprintf("Ext2FSInode::resize(): blocks needed before (size was %Q): %d\n", old_size, blocks_needed_before);
@@ -777,7 +777,7 @@ ssize_t Ext2FSInode::write_bytes(off_t offset, ssize_t count, const u8* data, Fi
}
}
- const ssize_t block_size = fs().block_size();
+ const size_t block_size = fs().block_size();
u64 old_size = size();
u64 new_size = max(static_cast<u64>(offset) + count, (u64)size());
@@ -793,17 +793,17 @@ ssize_t Ext2FSInode::write_bytes(off_t offset, ssize_t count, const u8* data, Fi
return -EIO;
}
- int first_block_logical_index = offset / block_size;
- int last_block_logical_index = (offset + count) / block_size;
+ size_t first_block_logical_index = offset / block_size;
+ size_t last_block_logical_index = (offset + count) / block_size;
if (last_block_logical_index >= m_block_list.size())
last_block_logical_index = m_block_list.size() - 1;
- int offset_into_first_block = offset % block_size;
+ size_t offset_into_first_block = offset % block_size;
- int last_logical_block_index_in_file = new_size / block_size;
+ size_t last_logical_block_index_in_file = new_size / block_size;
ssize_t nwritten = 0;
- int remaining_count = min((off_t)count, (off_t)new_size - offset);
+ size_t remaining_count = min((off_t)count, (off_t)new_size - offset);
const u8* in = data;
#ifdef EXT2_DEBUG
@@ -811,9 +811,9 @@ ssize_t Ext2FSInode::write_bytes(off_t offset, ssize_t count, const u8* data, Fi
#endif
auto buffer_block = ByteBuffer::create_uninitialized(block_size);
- for (int bi = first_block_logical_index; remaining_count && bi <= last_block_logical_index; ++bi) {
- int offset_into_block = (bi == first_block_logical_index) ? offset_into_first_block : 0;
- int num_bytes_to_copy = min(block_size - offset_into_block, remaining_count);
+ for (size_t bi = first_block_logical_index; remaining_count && bi <= last_block_logical_index; ++bi) {
+ size_t offset_into_block = (bi == first_block_logical_index) ? offset_into_first_block : 0;
+ size_t num_bytes_to_copy = min(block_size - offset_into_block, remaining_count);
ByteBuffer block;
if (offset_into_block != 0 || num_bytes_to_copy != block_size) {
@@ -828,8 +828,8 @@ ssize_t Ext2FSInode::write_bytes(off_t offset, ssize_t count, const u8* data, Fi
memcpy(block.data() + offset_into_block, in, num_bytes_to_copy);
if (bi == last_logical_block_index_in_file && num_bytes_to_copy < block_size) {
- int padding_start = new_size % block_size;
- int padding_bytes = block_size - padding_start;
+ size_t padding_start = new_size % block_size;
+ size_t padding_bytes = block_size - padding_start;
#ifdef EXT2_DEBUG
dbg() << "Ext2FS: Padding last block of file with zero x " << padding_bytes << " (new_size=" << new_size << ", offset_into_block=" << offset_into_block << ", num_bytes_to_copy=" << num_bytes_to_copy << ")";
#endif
@@ -905,7 +905,7 @@ bool Ext2FSInode::write_directory(const Vector<FS::DirectoryEntry>& entries)
auto directory_data = ByteBuffer::create_uninitialized(occupied_size);
BufferStream stream(directory_data);
- for (int i = 0; i < entries.size(); ++i) {
+ for (size_t i = 0; i < entries.size(); ++i) {
auto& entry = entries[i];
int record_length = EXT2_DIR_REC_LEN(entry.name_length);
@@ -1087,7 +1087,7 @@ Ext2FS::BlockIndex Ext2FS::allocate_block(GroupIndex preferred_group_index)
return block_index;
}
-Vector<Ext2FS::BlockIndex> Ext2FS::allocate_blocks(GroupIndex preferred_group_index, int count)
+Vector<Ext2FS::BlockIndex> Ext2FS::allocate_blocks(GroupIndex preferred_group_index, size_t count)
{
LOCKER(m_lock);
#ifdef EXT2_DEBUG
@@ -1424,7 +1424,7 @@ KResultOr<NonnullRefPtr<Inode>> Ext2FS::create_inode(InodeIdentifier parent_id,
dbgprintf("Ext2FS: Adding inode '%s' (mode %o) to parent directory %u:\n", name.characters(), mode, parent_inode->identifier().index());
#endif
- auto needed_blocks = ceil_div(size, block_size());
+ size_t needed_blocks = ceil_div(size, block_size());
if ((size_t)needed_blocks > super_block().s_free_blocks_count) {
dbg() << "Ext2FS: create_inode: not enough free blocks";
return KResult(-ENOSPC);
diff --git a/Kernel/FileSystem/Ext2FileSystem.h b/Kernel/FileSystem/Ext2FileSystem.h
index acf8a7907a..3185a5a567 100644
--- a/Kernel/FileSystem/Ext2FileSystem.h
+++ b/Kernel/FileSystem/Ext2FileSystem.h
@@ -135,7 +135,7 @@ private:
BlockIndex first_block_index() const;
InodeIndex find_a_free_inode(GroupIndex preferred_group, off_t expected_size);
- Vector<BlockIndex> allocate_blocks(GroupIndex preferred_group_index, int count);
+ Vector<BlockIndex> allocate_blocks(GroupIndex preferred_group_index, size_t count);
BlockIndex allocate_block(GroupIndex preferred_group_index);
GroupIndex group_index_from_inode(InodeIndex) const;
GroupIndex group_index_from_block_index(BlockIndex) const;
diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp
index 51fa57c927..78ea8efb9e 100644
--- a/Kernel/FileSystem/ProcFS.cpp
+++ b/Kernel/FileSystem/ProcFS.cpp
@@ -145,7 +145,7 @@ static inline int to_fd(const InodeIdentifier& identifier)
return (identifier.index() & 0xff) - FI_MaxStaticFileIndex;
}
-static inline int to_sys_index(const InodeIdentifier& identifier)
+static inline size_t to_sys_index(const InodeIdentifier& identifier)
{
ASSERT(to_proc_parent_directory(identifier) == PDI_Root_sys);
ASSERT(to_proc_file_type(identifier) == FI_Root_sys_variable);
@@ -1271,7 +1271,7 @@ bool ProcFSInode::traverse_as_directory(Function<bool(const FS::DirectoryEntry&)
break;
case FI_Root_sys:
- for (int i = 1; i < sys_variables().size(); ++i) {
+ for (size_t i = 1; i < sys_variables().size(); ++i) {
auto& variable = sys_variables()[i];
callback({ variable.name.characters(), variable.name.length(), sys_var_to_identifier(fsid(), i), 0 });
}
@@ -1356,7 +1356,7 @@ RefPtr<Inode> ProcFSInode::lookup(StringView name)
}
if (proc_file_type == FI_Root_sys) {
- for (int i = 1; i < sys_variables().size(); ++i) {
+ for (size_t i = 1; i < sys_variables().size(); ++i) {
auto& variable = sys_variables()[i];
if (name == variable.name)
return fs().get_inode(sys_var_to_identifier(fsid(), i));
diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp
index f247757e67..24bfd3f5f7 100644
--- a/Kernel/FileSystem/VirtualFileSystem.cpp
+++ b/Kernel/FileSystem/VirtualFileSystem.cpp
@@ -93,7 +93,7 @@ KResult VFS::unmount(InodeIdentifier guest_inode_id)
LOCKER(m_lock);
dbg() << "VFS: unmount called with inode " << guest_inode_id;
- for (int i = 0; i < m_mounts.size(); ++i) {
+ for (size_t i = 0; i < m_mounts.size(); ++i) {
auto& mount = m_mounts.at(i);
if (mount.guest() == guest_inode_id) {
auto result = mount.guest_fs().prepare_to_unmount();
@@ -788,7 +788,7 @@ KResultOr<NonnullRefPtr<Custody>> VFS::resolve_path(StringView path, Custody& ba
NonnullRefPtr<Custody> custody = path[0] == '/' ? current_root : base;
- for (int i = 0; i < parts.size(); ++i) {
+ for (size_t i = 0; i < parts.size(); ++i) {
Custody& parent = custody;
auto parent_metadata = parent.inode().metadata();
if (!parent_metadata.is_directory())
diff --git a/Kernel/Net/IPv4Socket.cpp b/Kernel/Net/IPv4Socket.cpp
index ec20d1421d..b819b5e24b 100644
--- a/Kernel/Net/IPv4Socket.cpp
+++ b/Kernel/Net/IPv4Socket.cpp
@@ -128,7 +128,7 @@ KResult IPv4Socket::bind(const sockaddr* user_address, socklen_t address_size)
return protocol_bind();
}
-KResult IPv4Socket::listen(int backlog)
+KResult IPv4Socket::listen(size_t backlog)
{
int rc = allocate_local_port_if_needed();
if (rc < 0)
@@ -138,7 +138,7 @@ KResult IPv4Socket::listen(int backlog)
m_role = Role::Listener;
#ifdef IPV4_SOCKET_DEBUG
- kprintf("IPv4Socket{%p} listening with backlog=%d\n", this, backlog);
+ kprintf("IPv4Socket{%p} listening with backlog=%zu\n", this, backlog);
#endif
return protocol_listen();
diff --git a/Kernel/Net/IPv4Socket.h b/Kernel/Net/IPv4Socket.h
index 8f45a34ad6..3a210dd9f8 100644
--- a/Kernel/Net/IPv4Socket.h
+++ b/Kernel/Net/IPv4Socket.h
@@ -51,7 +51,7 @@ public:
virtual void close() override;
virtual KResult bind(const sockaddr*, socklen_t) override;
virtual KResult connect(FileDescription&, const sockaddr*, socklen_t, ShouldBlock = ShouldBlock::Yes) override;
- virtual KResult listen(int) override;
+ virtual KResult listen(size_t) override;
virtual void get_local_address(sockaddr*, socklen_t*) override;
virtual void get_peer_address(sockaddr*, socklen_t*) override;
virtual void attach(FileDescription&) override;
diff --git a/Kernel/Net/LocalSocket.cpp b/Kernel/Net/LocalSocket.cpp
index cda15fb561..eb956a2f7f 100644
--- a/Kernel/Net/LocalSocket.cpp
+++ b/Kernel/Net/LocalSocket.cpp
@@ -192,7 +192,7 @@ KResult LocalSocket::connect(FileDescription& description, const sockaddr* addre
return KSuccess;
}
-KResult LocalSocket::listen(int backlog)
+KResult LocalSocket::listen(size_t backlog)
{
LOCKER(lock());
if (type() != SOCK_STREAM)
@@ -200,7 +200,7 @@ KResult LocalSocket::listen(int backlog)
set_backlog(backlog);
m_connect_side_role = m_role = Role::Listener;
#ifdef DEBUG_LOCAL_SOCKET
- kprintf("LocalSocket{%p} listening with backlog=%d\n", this, backlog);
+ kprintf("LocalSocket{%p} listening with backlog=%zu\n", this, backlog);
#endif
return KSuccess;
}
diff --git a/Kernel/Net/LocalSocket.h b/Kernel/Net/LocalSocket.h
index 20b8db6402..2409b3f8a5 100644
--- a/Kernel/Net/LocalSocket.h
+++ b/Kernel/Net/LocalSocket.h
@@ -50,7 +50,7 @@ public:
// ^Socket
virtual KResult bind(const sockaddr*, socklen_t) override;
virtual KResult connect(FileDescription&, const sockaddr*, socklen_t, ShouldBlock = ShouldBlock::Yes) override;
- virtual KResult listen(int) override;
+ virtual KResult listen(size_t) override;
virtual void get_local_address(sockaddr*, socklen_t*) override;
virtual void get_peer_address(sockaddr*, socklen_t*) override;
virtual void attach(FileDescription&) override;
diff --git a/Kernel/Net/Socket.h b/Kernel/Net/Socket.h
index 1639e79d13..ca2ad471cc 100644
--- a/Kernel/Net/Socket.h
+++ b/Kernel/Net/Socket.h
@@ -99,7 +99,7 @@ public:
virtual KResult bind(const sockaddr*, socklen_t) = 0;
virtual KResult connect(FileDescription&, const sockaddr*, socklen_t, ShouldBlock) = 0;
- virtual KResult listen(int) = 0;
+ virtual KResult listen(size_t) = 0;
virtual void get_local_address(sockaddr*, socklen_t*) = 0;
virtual void get_peer_address(sockaddr*, socklen_t*) = 0;
virtual bool is_local() const { return false; }
@@ -138,8 +138,8 @@ protected:
KResult queue_connection_from(NonnullRefPtr<Socket>);
- int backlog() const { return m_backlog; }
- void set_backlog(int backlog) { m_backlog = backlog; }
+ size_t backlog() const { return m_backlog; }
+ void set_backlog(size_t backlog) { m_backlog = backlog; }
virtual const char* class_name() const override { return "Socket"; }
@@ -160,7 +160,7 @@ private:
int m_domain { 0 };
int m_type { 0 };
int m_protocol { 0 };
- int m_backlog { 0 };
+ size_t m_backlog { 0 };
SetupState m_setup_state { SetupState::Unstarted };
bool m_connected { false };
bool m_shut_down_for_reading { false };
diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp
index cfe1b78814..0f917caa84 100644
--- a/Kernel/Process.cpp
+++ b/Kernel/Process.cpp
@@ -255,7 +255,7 @@ bool Process::deallocate_region(Region& region)
InterruptDisabler disabler;
if (m_region_lookup_cache.region == &region)
m_region_lookup_cache.region = nullptr;
- for (int i = 0; i < m_regions.size(); ++i) {
+ for (size_t i = 0; i < m_regions.size(); ++i) {
if (&m_regions[i] == &region) {
m_regions.unstable_remove(i);
return true;
@@ -956,7 +956,7 @@ int Process::do_exec(NonnullRefPtr<FileDescription> main_program_description, Ve
disown_all_shared_buffers();
- for (int i = 0; i < m_fds.size(); ++i) {
+ for (size_t i = 0; i < m_fds.size(); ++i) {
auto& daf = m_fds[i];
if (daf.description && daf.flags & FD_CLOEXEC) {
daf.description->close();
@@ -1522,7 +1522,7 @@ RefPtr<FileDescription> Process::file_description(int fd) const
{
if (fd < 0)
return nullptr;
- if (fd < m_fds.size())
+ if (static_cast<size_t>(fd) < m_fds.size())
return m_fds[fd].description.ptr();
return nullptr;
}
@@ -1531,7 +1531,7 @@ int Process::fd_flags(int fd) const
{
if (fd < 0)
return -1;
- if (fd < m_fds.size())
+ if (static_cast<size_t>(fd) < m_fds.size())
return m_fds[fd].flags;
return -1;
}
@@ -3189,6 +3189,8 @@ int Process::sys$bind(int sockfd, const sockaddr* address, socklen_t address_len
int Process::sys$listen(int sockfd, int backlog)
{
+ if (backlog < 0)
+ return -EINVAL;
auto description = file_description(sockfd);
if (!description)
return -EBADF;
@@ -4761,7 +4763,7 @@ int Process::sys$unveil(const Syscall::SC_unveil_params* user_params)
}
}
- for (int i = 0; i < m_unveiled_paths.size(); ++i) {
+ for (size_t i = 0; i < m_unveiled_paths.size(); ++i) {
auto& unveiled_path = m_unveiled_paths[i];
if (unveiled_path.path == path.value()) {
if (new_permissions & ~unveiled_path.permissions)
diff --git a/Kernel/SharedBuffer.cpp b/Kernel/SharedBuffer.cpp
index 01f8426041..128523a622 100644
--- a/Kernel/SharedBuffer.cpp
+++ b/Kernel/SharedBuffer.cpp
@@ -122,7 +122,7 @@ void SharedBuffer::share_with(pid_t peer_pid)
void SharedBuffer::deref_for_process(Process& process)
{
LOCKER(shared_buffers().lock());
- for (int i = 0; i < m_refs.size(); ++i) {
+ for (size_t i = 0; i < m_refs.size(); ++i) {
auto& ref = m_refs[i];
if (ref.pid == process.pid()) {
ref.count--;
@@ -150,7 +150,7 @@ void SharedBuffer::deref_for_process(Process& process)
void SharedBuffer::disown(pid_t pid)
{
LOCKER(shared_buffers().lock());
- for (int i = 0; i < m_refs.size(); ++i) {
+ for (size_t i = 0; i < m_refs.size(); ++i) {
auto& ref = m_refs[i];
if (ref.pid == pid) {
#ifdef SHARED_BUFFER_DEBUG
diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp
index de857a0662..8f38cb658a 100644
--- a/Kernel/Thread.cpp
+++ b/Kernel/Thread.cpp
@@ -644,7 +644,7 @@ u32 Thread::make_userspace_stack_for_main_thread(Vector<String> arguments, Vecto
SmapDisabler disabler;
- for (int i = 0; i < arguments.size(); ++i) {
+ for (size_t i = 0; i < arguments.size(); ++i) {
argv[i] = bufptr;
memcpy(bufptr, arguments[i].characters(), arguments[i].length());
bufptr += arguments[i].length();
@@ -652,7 +652,7 @@ u32 Thread::make_userspace_stack_for_main_thread(Vector<String> arguments, Vecto
}
argv[arguments.size()] = nullptr;
- for (int i = 0; i < environment.size(); ++i) {
+ for (size_t i = 0; i < environment.size(); ++i) {
env[i] = bufptr;
memcpy(bufptr, environment[i].characters(), environment[i].length());
bufptr += environment[i].length();
diff --git a/Kernel/VM/RangeAllocator.cpp b/Kernel/VM/RangeAllocator.cpp
index 509d7e4a71..29f5d045c4 100644
--- a/Kernel/VM/RangeAllocator.cpp
+++ b/Kernel/VM/RangeAllocator.cpp
@@ -108,7 +108,7 @@ Range RangeAllocator::allocate_anywhere(size_t size, size_t alignment)
size_t offset_from_effective_base = 0;
#endif
- for (int i = 0; i < m_available_ranges.size(); ++i) {
+ for (size_t i = 0; i < m_available_ranges.size(); ++i) {
auto& available_range = m_available_ranges[i];
// FIXME: This check is probably excluding some valid candidates when using a large alignment.
if (available_range.size() < (effective_size + alignment))
@@ -142,7 +142,7 @@ Range RangeAllocator::allocate_specific(VirtualAddress base, size_t size)
return {};
Range allocated_range(base, size);
- for (int i = 0; i < m_available_ranges.size(); ++i) {
+ for (size_t i = 0; i < m_available_ranges.size(); ++i) {
auto& available_range = m_available_ranges[i];
if (!available_range.contains(base, size))
continue;
@@ -181,7 +181,7 @@ void RangeAllocator::deallocate(Range range)
},
&nearby_index);
- int inserted_index = 0;
+ size_t inserted_index = 0;
if (existing_range) {
existing_range->m_size += range.size();
inserted_index = nearby_index;