if (!key_permission(make_key_ref(keyring, 0), KEY_SEARCH) < 0) 
if (key_permission(make_key_ref(keyring, 0), KEY_SEARCH) < 0) 
struct key *find_keyring_by_name(const char *name, key_serial_t bound){	struct key *keyring;	int bucket;	keyring = ERR_PTR(-EINVAL);	if (!name)		goto error;	bucket = keyring_hash(name);	read_lock(&keyring_name_lock);	if (keyring_name_hash[bucket].next) {		/* search this hash bucket for a keyring with a matching name		 * that's readable and that hasn't been revoked */		list_for_each_entry(keyring,				    &keyring_name_hash[bucket],				    type_data.link				    ) {			if (test_bit(KEY_FLAG_REVOKED, &keyring->flags))				continue;			if (strcmp(keyring->description, name) != 0)				continue;			if (!key_permission(make_key_ref(keyring, 0),					    KEY_SEARCH) < 0)				continue;			/* found a potential candidate, but we still need to			 * check the serial number */			if (keyring->serial <= bound)				continue;			/* we've got a match */			atomic_inc(&keyring->usage);			read_unlock(&keyring_name_lock);			goto error;		}	}	read_unlock(&keyring_name_lock);	keyring = ERR_PTR(-ENOKEY); error:	return keyring;} /* end find_keyring_by_name() */
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0f6ed7c2641fe4cea83cd09c21928ca30c0983ec/keyring.c/clean/security/keys/keyring.c