Remove _Nonnull attributes from user addresses arguments for

copyout(9) family.

The addresses are user-controllable, and if the process ABI allows
mapping at zero, then the zero address is meaningful, contradicting
the definition of _Nonnull.  In any case, it does not require any
special code to handle NULL udaddr.

It is not clear if __restrict makes sense as well, since kaddr and
udaddr point to different address spaces, so equal numeric values of
the pointers do not imply aliasing and a legitimate.  But leave it for
later.

copyinstr(9) does not have its user address argument annotated.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2018-03-02 16:47:02 +00:00
parent a16664ce8c
commit 7e79c3c15f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=330285

View File

@ -277,14 +277,14 @@ int copystr(const void * _Nonnull __restrict kfaddr,
int copyinstr(const void * __restrict udaddr,
void * _Nonnull __restrict kaddr, size_t len,
size_t * __restrict lencopied);
int copyin(const void * _Nonnull __restrict udaddr,
int copyin(const void * __restrict udaddr,
void * _Nonnull __restrict kaddr, size_t len);
int copyin_nofault(const void * _Nonnull __restrict udaddr,
int copyin_nofault(const void * __restrict udaddr,
void * _Nonnull __restrict kaddr, size_t len);
int copyout(const void * _Nonnull __restrict kaddr,
void * _Nonnull __restrict udaddr, size_t len);
void * __restrict udaddr, size_t len);
int copyout_nofault(const void * _Nonnull __restrict kaddr,
void * _Nonnull __restrict udaddr, size_t len);
void * __restrict udaddr, size_t len);
int fubyte(volatile const void *base);
long fuword(volatile const void *base);