diff options
Diffstat (limited to 'fs/ecryptfs/keystore.c')
| -rw-r--r-- | fs/ecryptfs/keystore.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/fs/ecryptfs/keystore.c b/fs/ecryptfs/keystore.c index 3cf1546dca82..fa218cd64f74 100644 --- a/fs/ecryptfs/keystore.c +++ b/fs/ecryptfs/keystore.c @@ -459,7 +459,8 @@ out:   * @auth_tok_key: key containing the authentication token   * @auth_tok: authentication token   * - * Returns zero on valid auth tok; -EINVAL otherwise + * Returns zero on valid auth tok; -EINVAL if the payload is invalid; or + * -EKEYREVOKED if the key was revoked before we acquired its semaphore.   */  static int  ecryptfs_verify_auth_tok_from_key(struct key *auth_tok_key, @@ -468,6 +469,12 @@ ecryptfs_verify_auth_tok_from_key(struct key *auth_tok_key,  	int rc = 0;  	(*auth_tok) = ecryptfs_get_key_payload_data(auth_tok_key); +	if (IS_ERR(*auth_tok)) { +		rc = PTR_ERR(*auth_tok); +		*auth_tok = NULL; +		goto out; +	} +  	if (ecryptfs_verify_version((*auth_tok)->version)) {  		printk(KERN_ERR "Data structure version mismatch. Userspace "  		       "tools must match eCryptfs kernel module with major " |