mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 16:02:45 +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; | ||||
| } | ||||
| 
 | ||||
| KResultOr<size_t> KeyboardDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| KResult KeyboardDevice::ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg) | ||||
| { | ||||
|     switch (request) { | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ public: | |||
|     // ^CharacterDevice
 | ||||
|     virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) 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; } | ||||
| 
 | ||||
|     // ^HIDDevice
 | ||||
|  |  | |||
|  | @ -48,9 +48,4 @@ KResultOr<size_t> MouseDevice::read(OpenFileDescription&, u64, UserOrKernelBuffe | |||
|     return nread; | ||||
| } | ||||
| 
 | ||||
| KResultOr<size_t> MouseDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -25,7 +25,7 @@ public: | |||
|     // ^CharacterDevice
 | ||||
|     virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) 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; } | ||||
| 
 | ||||
|     // ^HIDDevice
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Przemysław R. Kusiak
						Przemysław R. Kusiak