struct key *keyring)
struct key *keyring, struct key *instkey)
int key_negate_and_link(struct key *key,			unsigned timeout,			struct key *keyring){	struct timespec now;	int ret, awaken;	key_check(key);	key_check(keyring);	awaken = 0;	ret = -EBUSY;	if (keyring)		down_write(&keyring->sem);	down_write(&key_construction_sem);	/* can't instantiate twice */	if (!test_bit(KEY_FLAG_INSTANTIATED, &key->flags)) {		/* mark the key as being negatively instantiated */		atomic_inc(&key->user->nikeys);		set_bit(KEY_FLAG_NEGATIVE, &key->flags);		set_bit(KEY_FLAG_INSTANTIATED, &key->flags);		now = current_kernel_time();		key->expiry = now.tv_sec + timeout;		if (test_and_clear_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags))			awaken = 1;		ret = 0;		/* and link it into the destination keyring */		if (keyring)			ret = __key_link(keyring, key);	}	up_write(&key_construction_sem);	if (keyring)		up_write(&keyring->sem);	/* wake up anyone waiting for a key to be constructed */	if (awaken)		wake_up_all(&request_key_conswq);	return ret;} /* end key_negate_and_link() */