while (size) { char tmp;
if (fault_addr >= start && fault_addr < end) return end - fault_addr;
unsigned long copy_in_user_fixup(void __user *to, void __user *from, unsigned long size){	char __user *dst = to;	char __user *src = from;	while (size) {		char tmp;		if (__get_user(tmp, src))			break;		if (__put_user(tmp, dst))			break;		dst++;		src++;		size--;	}	return size;}