Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 May 2017 18:28:42 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r318090 - head/sys/opencrypto
Message-ID:  <201705091828.v49ISgOv084474@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Tue May  9 18:28:42 2017
New Revision: 318090
URL: https://svnweb.freebsd.org/changeset/base/318090

Log:
  Use const with some read-only buffers in opencrypto APIs.
  
  - Mark the source buffer for a copyback operation as const in the kernel
    API.
  - Use const with input-only buffers in crypto ioctl structures used with
    /dev/crypto.
  
  MFC after:	1 month
  Sponsored by:	Chelsio Communications
  Differential Revision:	https://reviews.freebsd.org/D10517

Modified:
  head/sys/opencrypto/criov.c
  head/sys/opencrypto/cryptodev.h

Modified: head/sys/opencrypto/criov.c
==============================================================================
--- head/sys/opencrypto/criov.c	Tue May  9 18:19:55 2017	(r318089)
+++ head/sys/opencrypto/criov.c	Tue May  9 18:28:42 2017	(r318090)
@@ -79,7 +79,7 @@ cuio_copydata(struct uio* uio, int off, 
 }
 
 void
-cuio_copyback(struct uio* uio, int off, int len, caddr_t cp)
+cuio_copyback(struct uio* uio, int off, int len, c_caddr_t cp)
 {
 	struct iovec *iov = uio->uio_iov;
 	int iol = uio->uio_iovcnt;
@@ -155,7 +155,7 @@ cuio_apply(struct uio *uio, int off, int
 }
 
 void
-crypto_copyback(int flags, caddr_t buf, int off, int size, caddr_t in)
+crypto_copyback(int flags, caddr_t buf, int off, int size, c_caddr_t in)
 {
 
 	if ((flags & CRYPTO_F_IMBUF) != 0)

Modified: head/sys/opencrypto/cryptodev.h
==============================================================================
--- head/sys/opencrypto/cryptodev.h	Tue May  9 18:19:55 2017	(r318089)
+++ head/sys/opencrypto/cryptodev.h	Tue May  9 18:28:42 2017	(r318090)
@@ -211,9 +211,9 @@ struct session_op {
 	u_int32_t	mac;		/* ie. CRYPTO_MD5_HMAC */
 
 	u_int32_t	keylen;		/* cipher key */
-	caddr_t		key;
+	c_caddr_t	key;
 	int		mackeylen;	/* mac key */
-	caddr_t		mackey;
+	c_caddr_t	mackey;
 
   	u_int32_t	ses;		/* returns: session # */ 
 };
@@ -223,9 +223,9 @@ struct session2_op {
 	u_int32_t	mac;		/* ie. CRYPTO_MD5_HMAC */
 
 	u_int32_t	keylen;		/* cipher key */
-	caddr_t		key;
+	c_caddr_t	key;
 	int		mackeylen;	/* mac key */
-	caddr_t		mackey;
+	c_caddr_t	mackey;
 
   	u_int32_t	ses;		/* returns: session # */ 
 	int		crid;		/* driver id + flags (rw) */
@@ -240,9 +240,10 @@ struct crypt_op {
 	u_int16_t	flags;
 #define	COP_F_BATCH	0x0008		/* Batch op if possible */
 	u_int		len;
-	caddr_t		src, dst;	/* become iov[] inside kernel */
+	c_caddr_t	src;		/* become iov[] inside kernel */
+	caddr_t		dst;
 	caddr_t		mac;		/* must be big enough for chosen MAC */
-	caddr_t		iv;
+	c_caddr_t	iv;
 };
 
 /* op and flags the same as crypt_op */
@@ -253,10 +254,11 @@ struct crypt_aead {
 	u_int		len;
 	u_int		aadlen;
 	u_int		ivlen;
-	caddr_t		src, dst;	/* become iov[] inside kernel */
-	caddr_t		aad;		/* additional authenticated data */
+	c_caddr_t	src;		/* become iov[] inside kernel */
+	caddr_t		dst;
+	c_caddr_t	aad;		/* additional authenticated data */
 	caddr_t		tag;		/* must fit for chosen TAG length */
-	caddr_t		iv;
+	c_caddr_t	iv;
 };
 
 /*
@@ -503,7 +505,7 @@ extern	int crypto_devallowsoft;	/* only 
  */
 struct uio;
 extern	void cuio_copydata(struct uio* uio, int off, int len, caddr_t cp);
-extern	void cuio_copyback(struct uio* uio, int off, int len, caddr_t cp);
+extern	void cuio_copyback(struct uio* uio, int off, int len, c_caddr_t cp);
 extern	int cuio_getptr(struct uio *uio, int loc, int *off);
 extern	int cuio_apply(struct uio *uio, int off, int len,
 	    int (*f)(void *, void *, u_int), void *arg);
@@ -514,7 +516,7 @@ extern	int crypto_mbuftoiov(struct mbuf 
 	    int *cnt, int *allocated);
 
 extern	void crypto_copyback(int flags, caddr_t buf, int off, int size,
-	    caddr_t in);
+	    c_caddr_t in);
 extern	void crypto_copydata(int flags, caddr_t buf, int off, int size,
 	    caddr_t out);
 extern	int crypto_apply(int flags, caddr_t buf, int off, int len,



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