mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 21:37:34 +00:00
Kernel: Let MouseDevice and KeyboardDevice write method return EINVAL
Currently, writing anything to `/dev/mouse0` or `/dev/keyboard0` causes the Kernel to panic. The reason for this is that `[Mouse,Keyboard]Device::write` always returns 0, which is explicitly prohibited by `VERIFY` macro in `Process::sys$write`. The fix seems trivial; `write` should return EINVAL instead (as is the case with, for example, `KCOVDevice`).
This commit is contained in:
parent
6e1f6bd684
commit
c6e23e45c5
4 changed files with 2 additions and 12 deletions
|
@ -306,11 +306,6 @@ KResultOr<size_t> KeyboardDevice::read(OpenFileDescription&, u64, UserOrKernelBu
|
||||||
return nread;
|
return nread;
|
||||||
}
|
}
|
||||||
|
|
||||||
KResultOr<size_t> KeyboardDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
KResult KeyboardDevice::ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg)
|
KResult KeyboardDevice::ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg)
|
||||||
{
|
{
|
||||||
switch (request) {
|
switch (request) {
|
||||||
|
|
|
@ -27,7 +27,7 @@ public:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
|
||||||
virtual bool can_read(const OpenFileDescription&, size_t) const override;
|
virtual bool can_read(const OpenFileDescription&, size_t) const override;
|
||||||
virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; }
|
||||||
virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; }
|
virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; }
|
||||||
|
|
||||||
// ^HIDDevice
|
// ^HIDDevice
|
||||||
|
|
|
@ -48,9 +48,4 @@ KResultOr<size_t> MouseDevice::read(OpenFileDescription&, u64, UserOrKernelBuffe
|
||||||
return nread;
|
return nread;
|
||||||
}
|
}
|
||||||
|
|
||||||
KResultOr<size_t> MouseDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ public:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
|
||||||
virtual bool can_read(const OpenFileDescription&, size_t) const override;
|
virtual bool can_read(const OpenFileDescription&, size_t) const override;
|
||||||
virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; }
|
||||||
virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; }
|
virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; }
|
||||||
|
|
||||||
// ^HIDDevice
|
// ^HIDDevice
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue