mm/madvise.c:1438:6: warning: Redundant assignment of 'ret' to itself. [selfAssignment]

From: kernel test robot
Date: Fri Jun 17 2022 - 19:05:10 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4b35035bcf80ddb47c0112c4fbd84a63a2836a18
commit: 5bd009c7c9a9e888077c07535dc0c70aeab242c3 mm: madvise: return correct bytes advised with process_madvise
date: 3 months ago
compiler: mips-linux-gcc (GCC) 11.3.0
reproduce (cppcheck warning):
# apt-get install cppcheck
git checkout 5bd009c7c9a9e888077c07535dc0c70aeab242c3
cppcheck --quiet --enable=style,performance,portability --template=gcc FILE

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>


cppcheck warnings: (new ones prefixed by >>)
>> mm/madvise.c:1438:6: warning: Redundant assignment of 'ret' to itself. [selfAssignment]
ret = (total_len - iov_iter_count(&iter)) ? : ret;
^

cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

mm/madvise.c:123:28: warning: Parameter 'anon_name' can be declared with const [constParameter]
struct anon_vma_name *anon_name)
^

vim +/ret +1438 mm/madvise.c

1378
1379 SYSCALL_DEFINE5(process_madvise, int, pidfd, const struct iovec __user *, vec,
1380 size_t, vlen, int, behavior, unsigned int, flags)
1381 {
1382 ssize_t ret;
1383 struct iovec iovstack[UIO_FASTIOV], iovec;
1384 struct iovec *iov = iovstack;
1385 struct iov_iter iter;
1386 struct task_struct *task;
1387 struct mm_struct *mm;
1388 size_t total_len;
1389 unsigned int f_flags;
1390
1391 if (flags != 0) {
1392 ret = -EINVAL;
1393 goto out;
1394 }
1395
1396 ret = import_iovec(READ, vec, vlen, ARRAY_SIZE(iovstack), &iov, &iter);
1397 if (ret < 0)
1398 goto out;
1399
1400 task = pidfd_get_task(pidfd, &f_flags);
1401 if (IS_ERR(task)) {
1402 ret = PTR_ERR(task);
1403 goto free_iov;
1404 }
1405
1406 if (!process_madvise_behavior_valid(behavior)) {
1407 ret = -EINVAL;
1408 goto release_task;
1409 }
1410
1411 /* Require PTRACE_MODE_READ to avoid leaking ASLR metadata. */
1412 mm = mm_access(task, PTRACE_MODE_READ_FSCREDS);
1413 if (IS_ERR_OR_NULL(mm)) {
1414 ret = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH;
1415 goto release_task;
1416 }
1417
1418 /*
1419 * Require CAP_SYS_NICE for influencing process performance. Note that
1420 * only non-destructive hints are currently supported.
1421 */
1422 if (!capable(CAP_SYS_NICE)) {
1423 ret = -EPERM;
1424 goto release_mm;
1425 }
1426
1427 total_len = iov_iter_count(&iter);
1428
1429 while (iov_iter_count(&iter)) {
1430 iovec = iov_iter_iovec(&iter);
1431 ret = do_madvise(mm, (unsigned long)iovec.iov_base,
1432 iovec.iov_len, behavior);
1433 if (ret < 0)
1434 break;
1435 iov_iter_advance(&iter, iovec.iov_len);
1436 }
1437
> 1438 ret = (total_len - iov_iter_count(&iter)) ? : ret;

--
0-DAY CI Kernel Test Service
https://01.org/lkp