Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Mar 2018 16:47:02 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r330285 - head/sys/sys
Message-ID:  <201803021647.w22Gl2t7092316@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Fri Mar  2 16:47:02 2018
New Revision: 330285
URL: https://svnweb.freebsd.org/changeset/base/330285

Log:
  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

Modified:
  head/sys/sys/systm.h

Modified: head/sys/sys/systm.h
==============================================================================
--- head/sys/sys/systm.h	Fri Mar  2 16:31:23 2018	(r330284)
+++ head/sys/sys/systm.h	Fri Mar  2 16:47:02 2018	(r330285)
@@ -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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803021647.w22Gl2t7092316>