int key_update(key_ref_t key_ref, const void *payload, size_t plen){	struct key *key = key_ref_to_ptr(key_ref);	int ret;	key_check(key);	/* the key must be writable */	ret = -EACCES;	if (!key_permission(key_ref, KEY_WRITE))		goto error;	/* attempt to update it if supported */	ret = -EOPNOTSUPP;	if (key->type->update) {		down_write(&key->sem);		ret = key->type->update(key, payload, plen);		if (ret == 0)			/* updating a negative key instantiates it */			clear_bit(KEY_FLAG_NEGATIVE, &key->flags);		up_write(&key->sem);	} error:	return ret;} /* end key_update() */
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/29db9190634067c5a328ee5fcc2890251b836b4b/key.c/buggy/security/keys/key.c