Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bcde0fdb authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "lib: align source before using optimized implementation"

parents fc765361 a00d0eee
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@
	(((long) dst | (long) src) & (sizeof(long) - 1))
#endif

#define CHECK_ALIGN(v, a) ((((unsigned long)(v)) & ((a) - 1)) == 0)

/*
 * Do a strncpy, return length of string without final '\0'.
 * 'count' is the user-supplied count (return 'count' if we
@@ -34,6 +36,21 @@ static inline long do_strncpy_from_user(char *dst, const char __user *src, long
	if (IS_UNALIGNED(src, dst))
		goto byte_at_a_time;

	/* Copy a byte at a time until we align to 8 bytes */
	while (max && (!CHECK_ALIGN(src + res, 8))) {
		char c;
		int ret;

		ret = __get_user(c, src + res);
		if (ret)
			return -ret;
		dst[res] = c;
		if (!c)
			return res;
		res++;
		max--;
	}

	while (max >= sizeof(unsigned long)) {
		unsigned long c, data;