rem: if (protection & B_KERNEL_PROTECTION)
add: if ((protection & ~B_USER_PROTECTION) != 0)
context: _user_create_area(const char *userName, void **userAddress, uint32 addressSpec,	size_t size, uint32 lock, uint32 protection){	char name[B_OS_NAME_LENGTH];	area_id area;	void *address;	// 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;	if (addressSpec == B_EXACT_ADDRESS		&& IS_KERNEL_ADDRESS(address))		return B_BAD_VALUE;	if ((protection & B_KERNEL_PROTECTION) == 0)		protection |= B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA;	area = vm_create_anonymous_area(vm_get_current_user_aspace_id(), (char *)name, &address, 				addressSpec, size, lock, protection | B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA);	if (area >= B_OK && user_memcpy(userAddress, &address, sizeof(address)) < B_OK) {		delete_area(area);		return B_BAD_ADDRESS;	}	return area;}