diff options
Diffstat (limited to 'kernel/sys.c')
| -rw-r--r-- | kernel/sys.c | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index 19d058be49d4..38bc73ede2ba 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
| @@ -224,18 +224,6 @@ int unregister_reboot_notifier(struct notifier_block * nb) | |||
| 224 | 224 | ||
| 225 | EXPORT_SYMBOL(unregister_reboot_notifier); | 225 | EXPORT_SYMBOL(unregister_reboot_notifier); |
| 226 | 226 | ||
| 227 | #ifndef CONFIG_SECURITY | ||
| 228 | int capable(int cap) | ||
| 229 | { | ||
| 230 | if (cap_raised(current->cap_effective, cap)) { | ||
| 231 | current->flags |= PF_SUPERPRIV; | ||
| 232 | return 1; | ||
| 233 | } | ||
| 234 | return 0; | ||
| 235 | } | ||
| 236 | EXPORT_SYMBOL(capable); | ||
| 237 | #endif | ||
| 238 | |||
| 239 | static int set_one_prio(struct task_struct *p, int niceval, int error) | 227 | static int set_one_prio(struct task_struct *p, int niceval, int error) |
| 240 | { | 228 | { |
| 241 | int no_nice; | 229 | int no_nice; |
| @@ -1375,7 +1363,7 @@ static void groups_sort(struct group_info *group_info) | |||
| 1375 | /* a simple bsearch */ | 1363 | /* a simple bsearch */ |
| 1376 | int groups_search(struct group_info *group_info, gid_t grp) | 1364 | int groups_search(struct group_info *group_info, gid_t grp) |
| 1377 | { | 1365 | { |
| 1378 | int left, right; | 1366 | unsigned int left, right; |
| 1379 | 1367 | ||
| 1380 | if (!group_info) | 1368 | if (!group_info) |
| 1381 | return 0; | 1369 | return 0; |
| @@ -1383,7 +1371,7 @@ int groups_search(struct group_info *group_info, gid_t grp) | |||
| 1383 | left = 0; | 1371 | left = 0; |
| 1384 | right = group_info->ngroups; | 1372 | right = group_info->ngroups; |
| 1385 | while (left < right) { | 1373 | while (left < right) { |
| 1386 | int mid = (left+right)/2; | 1374 | unsigned int mid = (left+right)/2; |
| 1387 | int cmp = grp - GROUP_AT(group_info, mid); | 1375 | int cmp = grp - GROUP_AT(group_info, mid); |
| 1388 | if (cmp > 0) | 1376 | if (cmp > 0) |
| 1389 | left = mid + 1; | 1377 | left = mid + 1; |
| @@ -1433,7 +1421,6 @@ asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist) | |||
| 1433 | return -EINVAL; | 1421 | return -EINVAL; |
| 1434 | 1422 | ||
| 1435 | /* no need to grab task_lock here; it cannot change */ | 1423 | /* no need to grab task_lock here; it cannot change */ |
| 1436 | get_group_info(current->group_info); | ||
| 1437 | i = current->group_info->ngroups; | 1424 | i = current->group_info->ngroups; |
| 1438 | if (gidsetsize) { | 1425 | if (gidsetsize) { |
| 1439 | if (i > gidsetsize) { | 1426 | if (i > gidsetsize) { |
| @@ -1446,7 +1433,6 @@ asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist) | |||
| 1446 | } | 1433 | } |
| 1447 | } | 1434 | } |
| 1448 | out: | 1435 | out: |
| 1449 | put_group_info(current->group_info); | ||
| 1450 | return i; | 1436 | return i; |
| 1451 | } | 1437 | } |
| 1452 | 1438 | ||
| @@ -1487,9 +1473,7 @@ int in_group_p(gid_t grp) | |||
| 1487 | { | 1473 | { |
| 1488 | int retval = 1; | 1474 | int retval = 1; |
| 1489 | if (grp != current->fsgid) { | 1475 | if (grp != current->fsgid) { |
| 1490 | get_group_info(current->group_info); | ||
| 1491 | retval = groups_search(current->group_info, grp); | 1476 | retval = groups_search(current->group_info, grp); |
| 1492 | put_group_info(current->group_info); | ||
| 1493 | } | 1477 | } |
| 1494 | return retval; | 1478 | return retval; |
| 1495 | } | 1479 | } |
| @@ -1500,9 +1484,7 @@ int in_egroup_p(gid_t grp) | |||
| 1500 | { | 1484 | { |
| 1501 | int retval = 1; | 1485 | int retval = 1; |
| 1502 | if (grp != current->egid) { | 1486 | if (grp != current->egid) { |
| 1503 | get_group_info(current->group_info); | ||
| 1504 | retval = groups_search(current->group_info, grp); | 1487 | retval = groups_search(current->group_info, grp); |
| 1505 | put_group_info(current->group_info); | ||
| 1506 | } | 1488 | } |
| 1507 | return retval; | 1489 | return retval; |
| 1508 | } | 1490 | } |
