key->payload.data = new; 
rcu_assign_pointer(key->payload.data, upayload); 
static int user_update(struct key *key, const void *data, size_t datalen){	void *new, *zap;	int ret;	ret = -EINVAL;	if (datalen <= 0 || datalen > 32767 || !data)		goto error;	/* copy the data */	ret = -ENOMEM;	new = kmalloc(datalen, GFP_KERNEL);	if (!new)		goto error;	memcpy(new, data, datalen);	/* check the quota and attach the new data */	zap = new;	write_lock(&key->lock);	ret = key_payload_reserve(key, datalen);	if (ret == 0) {		/* attach the new data, displacing the old */		zap = key->payload.data;		key->payload.data = new;		key->expiry = 0;	}	write_unlock(&key->lock);	kfree(zap); error:	return ret;} /* end user_update() */
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/76d8aeabfeb1c42641a81c44280177b9a08670d8/user_defined.c/clean/security/keys/user_defined.c