diff --git a/kernel/sys.c b/kernel/sys.c
index 119fb0d9e24ef231e4dda0a9c7c8b20a023c5314..38bc73ede2baddef2e3c1068d26cd6e8b4e4ad24 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1363,7 +1363,7 @@ static void groups_sort(struct group_info *group_info)
 /* a simple bsearch */
 int groups_search(struct group_info *group_info, gid_t grp)
 {
-	int left, right;
+	unsigned int left, right;
 
 	if (!group_info)
 		return 0;
@@ -1371,7 +1371,7 @@ int groups_search(struct group_info *group_info, gid_t grp)
 	left = 0;
 	right = group_info->ngroups;
 	while (left < right) {
-		int mid = (left+right)/2;
+		unsigned int mid = (left+right)/2;
 		int cmp = grp - GROUP_AT(group_info, mid);
 		if (cmp > 0)
 			left = mid + 1;