2004-03-26 03:30:05

by Marcelo Tosatti

[permalink] [raw]
Subject: Re: [PATCH/2.4]: do_write_mem() return value check

On Wed, Mar 24, 2004 at 07:59:01PM +0100, BlaisorBlade wrote:
> From: Andrew Morton, and me (I did a first fix for 2.6 and sent to him, he
> checked everything and committed it and I changed the trivial bits for 2.4).
>
> - remove unused `file *' arg from do_write_mem()
>
> - Add checking for copy_from_user() failures in do_write_mem()
>
> (Note: /dev/kmem can be written to only by root, so this *cannot* have
> security implications)
>
> - Return correct value from kmem writes() when a fault is encountered. A
> write()-style syscall's return values are:
>
> 0 when nothing was written and there was no error (someone tried to
> write zero bytes)
>
> >0: the number of bytes copied, whether or not there was an error.
> Userspace detects errors by noting that the write() return value is less
> than was requested.
>
> <0: there was an error and no bytes were copied
>
> TODO: Do the same changes for read_mem() and read_kmem(). The code is more
> messy so I must create do_read_mem() to avoid clumsy counting; I will post the
> patch first for 2.6.

Hi Paolo,

This is nice -- although I see it as a 2.6 cleanup only.

Do you actually have any practical problem caused by the current broken
"always return -EFAULT" ?

Otherwise leave it for 2.6.