rem: if (protection & B_KERNEL_PROTECTION)
add: if ((protection & ~B_USER_PROTECTION) != 0)
context: _user_clone_area(const char *userName, void **userAddress, uint32 addressSpec,	uint32 protection, area_id sourceArea){	char name[B_OS_NAME_LENGTH];	void *address;	area_id clonedArea;	// filter out some unavailable values (for userland)	switch (addressSpec) {		case B_ANY_KERNEL_ADDRESS:		case B_ANY_KERNEL_BLOCK_ADDRESS:			return B_BAD_VALUE;	}	if (protection & B_KERNEL_PROTECTION)		return B_BAD_VALUE;	if (!IS_USER_ADDRESS(userName)		|| !IS_USER_ADDRESS(userAddress)		|| user_strlcpy(name, userName, sizeof(name)) < B_OK		|| user_memcpy(&address, userAddress, sizeof(address)) < B_OK)		return B_BAD_ADDRESS;	clonedArea = vm_clone_area(vm_get_current_user_aspace_id(), name, &address,		addressSpec, protection | B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA,		REGION_NO_PRIVATE_MAP, sourceArea);	if (clonedArea < B_OK)		return clonedArea;	if (user_memcpy(userAddress, &address, sizeof(address)) < B_OK) {		delete_area(clonedArea);		return B_BAD_ADDRESS;	}	return clonedArea;}