1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 06:48:12 +00:00

Kernel: Make File::truncate() take a u64

No point in taking a signed type here. We validate at the syscall layer
and then pass around a u64 from then on.
This commit is contained in:
Andreas Kling 2020-02-08 12:07:04 +01:00
parent 42d41fdf94
commit 7291370478
11 changed files with 12 additions and 12 deletions

View file

@ -1598,10 +1598,10 @@ KResult Ext2FSInode::chown(uid_t uid, gid_t gid)
return KSuccess; return KSuccess;
} }
KResult Ext2FSInode::truncate(off_t size) KResult Ext2FSInode::truncate(u64 size)
{ {
LOCKER(m_lock); LOCKER(m_lock);
if ((off_t)m_raw_inode.i_size == size) if (static_cast<u64>(m_raw_inode.i_size) == size)
return KSuccess; return KSuccess;
auto result = resize(size); auto result = resize(size);
if (result.is_error()) if (result.is_error())

View file

@ -70,7 +70,7 @@ private:
virtual size_t directory_entry_count() const override; virtual size_t directory_entry_count() const override;
virtual KResult chmod(mode_t) override; virtual KResult chmod(mode_t) override;
virtual KResult chown(uid_t, gid_t) override; virtual KResult chown(uid_t, gid_t) override;
virtual KResult truncate(off_t) override; virtual KResult truncate(u64) override;
bool write_directory(const Vector<FS::DirectoryEntry>&); bool write_directory(const Vector<FS::DirectoryEntry>&);
void populate_lookup_cache() const; void populate_lookup_cache() const;

View file

@ -82,7 +82,7 @@ public:
virtual String absolute_path(const FileDescription&) const = 0; virtual String absolute_path(const FileDescription&) const = 0;
virtual KResult truncate(off_t) { return KResult(-EINVAL); } virtual KResult truncate(u64) { return KResult(-EINVAL); }
virtual KResult chown(uid_t, gid_t) { return KResult(-EBADF); } virtual KResult chown(uid_t, gid_t) { return KResult(-EBADF); }
virtual KResult chmod(mode_t) { return KResult(-EBADF); } virtual KResult chmod(mode_t) { return KResult(-EBADF); }

View file

@ -283,7 +283,7 @@ KResultOr<Region*> FileDescription::mmap(Process& process, VirtualAddress vaddr,
return m_file->mmap(process, *this, vaddr, offset, size, prot); return m_file->mmap(process, *this, vaddr, offset, size, prot);
} }
KResult FileDescription::truncate(off_t length) KResult FileDescription::truncate(u64 length)
{ {
LOCKER(m_lock); LOCKER(m_lock);
return m_file->truncate(length); return m_file->truncate(length);

View file

@ -130,7 +130,7 @@ public:
void set_original_inode(Badge<VFS>, NonnullRefPtr<Inode>&& inode) { m_inode = move(inode); } void set_original_inode(Badge<VFS>, NonnullRefPtr<Inode>&& inode) { m_inode = move(inode); }
KResult truncate(off_t); KResult truncate(u64);
off_t offset() const { return m_current_offset; } off_t offset() const { return m_current_offset; }

View file

@ -79,7 +79,7 @@ public:
virtual size_t directory_entry_count() const = 0; virtual size_t directory_entry_count() const = 0;
virtual KResult chmod(mode_t) = 0; virtual KResult chmod(mode_t) = 0;
virtual KResult chown(uid_t, gid_t) = 0; virtual KResult chown(uid_t, gid_t) = 0;
virtual KResult truncate(off_t) { return KSuccess; } virtual KResult truncate(u64) { return KSuccess; }
virtual KResultOr<NonnullRefPtr<Custody>> resolve_as_link(Custody& base, RefPtr<Custody>* out_parent = nullptr, int options = 0, int symlink_recursion_level = 0) const; virtual KResultOr<NonnullRefPtr<Custody>> resolve_as_link(Custody& base, RefPtr<Custody>* out_parent = nullptr, int options = 0, int symlink_recursion_level = 0) const;
LocalSocket* socket() { return m_socket.ptr(); } LocalSocket* socket() { return m_socket.ptr(); }

View file

@ -74,7 +74,7 @@ String InodeFile::absolute_path(const FileDescription& description) const
return description.absolute_path(); return description.absolute_path();
} }
KResult InodeFile::truncate(off_t size) KResult InodeFile::truncate(u64 size)
{ {
auto truncate_result = m_inode->truncate(size); auto truncate_result = m_inode->truncate(size);
if (truncate_result.is_error()) if (truncate_result.is_error())

View file

@ -51,7 +51,7 @@ public:
virtual String absolute_path(const FileDescription&) const override; virtual String absolute_path(const FileDescription&) const override;
virtual KResult truncate(off_t) override; virtual KResult truncate(u64) override;
virtual KResult chown(uid_t, gid_t) override; virtual KResult chown(uid_t, gid_t) override;
virtual KResult chmod(mode_t) override; virtual KResult chmod(mode_t) override;

View file

@ -327,7 +327,7 @@ KResult TmpFSInode::remove_child(const StringView& name)
return KSuccess; return KSuccess;
} }
KResult TmpFSInode::truncate(off_t size) KResult TmpFSInode::truncate(u64 size)
{ {
LOCKER(m_lock); LOCKER(m_lock);
ASSERT(!is_directory()); ASSERT(!is_directory());

View file

@ -85,7 +85,7 @@ public:
virtual size_t directory_entry_count() const override; virtual size_t directory_entry_count() const override;
virtual KResult chmod(mode_t) override; virtual KResult chmod(mode_t) override;
virtual KResult chown(uid_t, gid_t) override; virtual KResult chown(uid_t, gid_t) override;
virtual KResult truncate(off_t) override; virtual KResult truncate(u64) override;
virtual int set_atime(time_t) override; virtual int set_atime(time_t) override;
virtual int set_ctime(time_t) override; virtual int set_ctime(time_t) override;
virtual int set_mtime(time_t) override; virtual int set_mtime(time_t) override;

View file

@ -3868,7 +3868,7 @@ int Process::sys$ftruncate(int fd, off_t length)
return -EBADF; return -EBADF;
if (!description->is_writable()) if (!description->is_writable())
return -EBADF; return -EBADF;
return description->truncate(length); return description->truncate(static_cast<u64>(length));
} }
int Process::sys$watch_file(const char* user_path, size_t path_length) int Process::sys$watch_file(const char* user_path, size_t path_length)