diff options
Diffstat (limited to 'net/tipc/crypto.c')
| -rw-r--r-- | net/tipc/crypto.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/net/tipc/crypto.c b/net/tipc/crypto.c index 8584893b4785..ea5bb131ebd0 100644 --- a/net/tipc/crypto.c +++ b/net/tipc/crypto.c @@ -425,7 +425,7 @@ static void tipc_aead_free(struct rcu_head *rp)  	}  	free_percpu(aead->tfm_entry);  	kfree_sensitive(aead->key); -	kfree(aead); +	kfree_sensitive(aead);  }  static int tipc_aead_users(struct tipc_aead __rcu *aead) @@ -818,7 +818,11 @@ static int tipc_aead_encrypt(struct tipc_aead *aead, struct sk_buff *skb,  	}  	/* Get net to avoid freed tipc_crypto when delete namespace */ -	get_net(aead->crypto->net); +	if (!maybe_get_net(aead->crypto->net)) { +		tipc_bearer_put(b); +		rc = -ENODEV; +		goto exit; +	}  	/* Now, do encrypt */  	rc = crypto_aead_encrypt(req); | 
