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
This commit is contained in:
jhb 2017-05-09 18:28:42 +00:00
parent 1a3c4ffced
commit 90c619f281
2 changed files with 15 additions and 13 deletions

View File

@ -79,7 +79,7 @@ cuio_copydata(struct uio* uio, int off, int len, caddr_t cp)
}
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 len, int (*f)(void *, void *, u_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)

View File

@ -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 use hardware crypto */
*/
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 *mbuf, struct iovec **iovptr,
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,