Fix broken CFI patch...
This commit is contained in:
		| @@ -1,9 +1,11 @@ | |||||||
| --- a/crypto/authenc.c | --- a/crypto/authenc.c | ||||||
| +++ b/crypto/authenc.c | +++ b/crypto/authenc.c | ||||||
| @@ -415,6 +415,8 @@ static int crypto_authenc_create(struct | @@ -415,6 +415,10 @@ static int crypto_authenc_create(struct | ||||||
|  		     enc->base.cra_driver_name) >= CRYPTO_MAX_ALG_NAME) |  		     enc->base.cra_driver_name) >= CRYPTO_MAX_ALG_NAME) | ||||||
|  		goto err_free_inst; |  		goto err_free_inst; | ||||||
|   |   | ||||||
|  | +	// inst->alg.base.cra_flags = (auth_base->cra_flags | | ||||||
|  | + 	//			    enc->base.cra_flags) & CRYPTO_ALG_ASYNC; | ||||||
| +	inst->alg.base.cra_flags |= (auth_base->cra_flags | | +	inst->alg.base.cra_flags |= (auth_base->cra_flags | | ||||||
| +				    enc->base.cra_flags) & CRYPTO_ALG_NOSUPP_SG; | +				    enc->base.cra_flags) & CRYPTO_ALG_NOSUPP_SG; | ||||||
|  	inst->alg.base.cra_priority = enc->base.cra_priority * 10 + |  	inst->alg.base.cra_priority = enc->base.cra_priority * 10 + | ||||||
| @@ -23,6 +25,18 @@ | |||||||
|   * The algorithm may allocate memory during request processing, i.e. during |   * The algorithm may allocate memory during request processing, i.e. during | ||||||
|   * encryption, decryption, or hashing.  Users can request an algorithm with this |   * encryption, decryption, or hashing.  Users can request an algorithm with this | ||||||
|   * flag unset if they can't handle memory allocation failures. |   * flag unset if they can't handle memory allocation failures. | ||||||
|  | @@ -462,6 +467,11 @@ static inline const char *crypto_tfm_alg | ||||||
|  |  	return tfm->__crt_alg->cra_driver_name; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +static inline u32 crypto_tfm_alg_flags(struct crypto_tfm *tfm) | ||||||
|  | +{ | ||||||
|  | +	return tfm->__crt_alg->cra_flags & ~CRYPTO_ALG_TYPE_MASK; | ||||||
|  | +} | ||||||
|  | + | ||||||
|  |  static inline unsigned int crypto_tfm_alg_blocksize(struct crypto_tfm *tfm) | ||||||
|  |  { | ||||||
|  |  	return tfm->__crt_alg->cra_blocksize; | ||||||
| --- a/net/ipv4/esp4.c | --- a/net/ipv4/esp4.c | ||||||
| +++ b/net/ipv4/esp4.c | +++ b/net/ipv4/esp4.c | ||||||
| @@ -657,6 +657,7 @@ static int esp_output(struct xfrm_state | @@ -657,6 +657,7 @@ static int esp_output(struct xfrm_state | ||||||
| @@ -37,7 +51,7 @@ | |||||||
|  	aead = x->data; |  	aead = x->data; | ||||||
|  	alen = crypto_aead_authsize(aead); |  	alen = crypto_aead_authsize(aead); | ||||||
|   |   | ||||||
| +	nosupp_sg = crypto_tfm_alg_type(&aead->base) & CRYPTO_ALG_NOSUPP_SG; | +	nosupp_sg = crypto_tfm_alg_flags(&aead->base) & CRYPTO_ALG_NOSUPP_SG; | ||||||
| +	if (nosupp_sg && skb_linearize(skb)) { | +	if (nosupp_sg && skb_linearize(skb)) { | ||||||
| +		return -ENOMEM; | +		return -ENOMEM; | ||||||
| +	} | +	} | ||||||
| @@ -57,7 +71,7 @@ | |||||||
|  	if (elen <= 0) |  	if (elen <= 0) | ||||||
|  		goto out; |  		goto out; | ||||||
|   |   | ||||||
| +	nosupp_sg = crypto_tfm_alg_type(&aead->base) & CRYPTO_ALG_NOSUPP_SG; | +	nosupp_sg = crypto_tfm_alg_flags(&aead->base) & CRYPTO_ALG_NOSUPP_SG; | ||||||
| +	if (nosupp_sg && skb_linearize(skb)) { | +	if (nosupp_sg && skb_linearize(skb)) { | ||||||
| +		err = -ENOMEM; | +		err = -ENOMEM; | ||||||
| +		goto out; | +		goto out; | ||||||
| @@ -80,7 +94,7 @@ | |||||||
|  	aead = x->data; |  	aead = x->data; | ||||||
|  	alen = crypto_aead_authsize(aead); |  	alen = crypto_aead_authsize(aead); | ||||||
|   |   | ||||||
| +	nosupp_sg = crypto_tfm_alg_type(&aead->base) & CRYPTO_ALG_NOSUPP_SG; | +	nosupp_sg = crypto_tfm_alg_flags(&aead->base) & CRYPTO_ALG_NOSUPP_SG; | ||||||
| +	if (nosupp_sg && skb_linearize(skb)) { | +	if (nosupp_sg && skb_linearize(skb)) { | ||||||
| +		return -ENOMEM; | +		return -ENOMEM; | ||||||
| +	} | +	} | ||||||
| @@ -100,7 +114,7 @@ | |||||||
|  		goto out; |  		goto out; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| +	nosupp_sg = crypto_tfm_alg_type(&aead->base) & CRYPTO_ALG_NOSUPP_SG; | +	nosupp_sg = crypto_tfm_alg_flags(&aead->base) & CRYPTO_ALG_NOSUPP_SG; | ||||||
| +	if (nosupp_sg && skb_linearize(skb)) { | +	if (nosupp_sg && skb_linearize(skb)) { | ||||||
| +		ret = -ENOMEM; | +		ret = -ENOMEM; | ||||||
| +		goto out; | +		goto out; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 SqTER-PL
					SqTER-PL