diff options
Diffstat (limited to 'crypto/af_alg.c')
| -rw-r--r-- | crypto/af_alg.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/crypto/af_alg.c b/crypto/af_alg.c index 6a3ad8011585..1fa7bc31be63 100644 --- a/crypto/af_alg.c +++ b/crypto/af_alg.c @@ -399,7 +399,7 @@ int af_alg_cmsg_send(struct msghdr *msg, struct af_alg_control *con)  {  	struct cmsghdr *cmsg; -	for (cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) { +	for_each_cmsghdr(cmsg, msg) {  		if (!CMSG_OK(msg, cmsg))  			return -EINVAL;  		if (cmsg->cmsg_level != SOL_ALG) @@ -421,6 +421,12 @@ int af_alg_cmsg_send(struct msghdr *msg, struct af_alg_control *con)  			con->op = *(u32 *)CMSG_DATA(cmsg);  			break; +		case ALG_SET_AEAD_ASSOCLEN: +			if (cmsg->cmsg_len < CMSG_LEN(sizeof(u32))) +				return -EINVAL; +			con->aead_assoclen = *(u32 *)CMSG_DATA(cmsg); +			break; +  		default:  			return -EINVAL;  		}  |