func: static int CVE_2015_3331_VULN___driver_rfc4106_decrypt(struct aead_request *req) u8 * src , * dst , * assoc ; struct crypto_aead * tfm = crypto_aead_reqtfm ( req ) ; unsigned long auth_tag_len = crypto_aead_authsize ( tfm ) ; u8 iv_and_authTag [ 32 + AESNI_ALIGN ] ; u8 * iv = ( u8 * ) PTR_ALIGN ( ( u8 * ) iv_and_authTag , AESNI_ALIGN ) ; u8 * authTag = iv + 16 ; if ( unlikely ( ( req -> cryptlen < auth_tag_len ) || ( req -> assoclen != 8 && req -> assoclen != 12 ) ) )  tempCipherLen = ( unsigned long ) ( req -> cryptlen - auth_tag_len ); if ( ( sg_is_last ( req -> src ) ) && ( sg_is_last ( req -> assoc ) ) )  src = scatterwalk_map ( & src_sg_walk ); src = kmalloc ( req -> cryptlen + req -> assoclen , GFP_ATOMIC ); if ( ! src )  retval = memcmp ( src + tempCipherLen , authTag , auth_tag_len ) ? - EBADMSG : 0; return retval ; 