Re: [sj:damon/next 26/29] mm/damon/core.c:807:3: warning: variable 'err' is used uninitialized whenever 'if' condition is false

From: SeongJae Park
Date: Wed Sep 21 2022 - 13:20:50 EST


Hi robot,


Thank you for the report, just fixed[1] and pushed!

[1] https://git.kernel.org/sj/c/5c2a0770beeab07243ac6632a2afcf637f343806


Thanks,
SJ

On Thu, 22 Sep 2022 00:06:55 +0800 kernel test robot <lkp@xxxxxxxxx> wrote:

> tree: https://git.kernel.org/pub/scm/linux/kernel/git/sj/linux.git damon/next
> head: a5f85a5de8b74931ccd564bdb63194aedc99f2a9
> commit: 71af589c839d9564a9daa6bb0af2f7f4931ea19c [26/29] mm/damon/core: separate damos application logic
> config: hexagon-randconfig-r033-20220921 (https://download.01.org/0day-ci/archive/20220922/202209220049.dcCdIisb-lkp@xxxxxxxxx/config)
> compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920)
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://git.kernel.org/pub/scm/linux/kernel/git/sj/linux.git/commit/?id=71af589c839d9564a9daa6bb0af2f7f4931ea19c
> git remote add sj https://git.kernel.org/pub/scm/linux/kernel/git/sj/linux.git
> git fetch --no-tags sj damon/next
> git checkout 71af589c839d9564a9daa6bb0af2f7f4931ea19c
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash mm/damon/
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@xxxxxxxxx>
>
> All warnings (new ones prefixed by >>):
>
> >> mm/damon/core.c:807:3: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
> if (c->callback.before_scheme_apply)
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/compiler.h:56:28: note: expanded from macro 'if'
> #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/compiler.h:58:30: note: expanded from macro '__trace_if_var'
> #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> mm/damon/core.c:809:8: note: uninitialized use occurs here
> if (!err)
> ^~~
> include/linux/compiler.h:56:47: note: expanded from macro 'if'
> #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
> ^~~~
> include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var'
> #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
> ^~~~
> mm/damon/core.c:807:3: note: remove the 'if' if its condition is always true
> if (c->callback.before_scheme_apply)
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/compiler.h:56:23: note: expanded from macro 'if'
> #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
> ^
> mm/damon/core.c:787:9: note: initialize the variable 'err' to silence this warning
> int err;
> ^
> = 0
> 1 warning generated.
>
>
> vim +807 mm/damon/core.c
>
> b47f2bf827d3e3 SeongJae Park 2022-09-20 779
> 71af589c839d95 SeongJae Park 2022-09-20 780 static void damos_apply_scheme(struct damon_ctx *c, struct damon_target *t,
> 71af589c839d95 SeongJae Park 2022-09-20 781 struct damon_region *r, struct damos *s)
> b47f2bf827d3e3 SeongJae Park 2022-09-20 782 {
> b47f2bf827d3e3 SeongJae Park 2022-09-20 783 struct damos_quota *quota = &s->quota;
> 71af589c839d95 SeongJae Park 2022-09-20 784 unsigned long sz = r->ar.end - r->ar.start;
> b47f2bf827d3e3 SeongJae Park 2022-09-20 785 struct timespec64 begin, end;
> b47f2bf827d3e3 SeongJae Park 2022-09-20 786 unsigned long sz_applied = 0;
> 71af589c839d95 SeongJae Park 2022-09-20 787 int err;
> b47f2bf827d3e3 SeongJae Park 2022-09-20 788
> f7d911c39cbbb8 SeongJae Park 2022-03-22 789 if (c->ops.apply_scheme) {
> 71af589c839d95 SeongJae Park 2022-09-20 790 if (quota->esz && quota->charged_sz + sz > quota->esz) {
> 1cd2430300594a SeongJae Park 2021-11-05 791 sz = ALIGN_DOWN(quota->esz - quota->charged_sz,
> 2b8a248d587334 SeongJae Park 2021-11-05 792 DAMON_MIN_REGION);
> 2b8a248d587334 SeongJae Park 2021-11-05 793 if (!sz)
> 2b8a248d587334 SeongJae Park 2021-11-05 794 goto update_stat;
> 2886230666fa8b SeongJae Park 2022-08-14 795 if (sz >= r->ar.end - r->ar.start) {
> 2886230666fa8b SeongJae Park 2022-08-14 796 pr_err("sz: %lu, region: %lu-%lu (%lu), quota: %lu, charged: %lu\n",
> 2886230666fa8b SeongJae Park 2022-08-14 797 sz, r->ar.start,
> 2886230666fa8b SeongJae Park 2022-08-14 798 r->ar.end, r->ar.end -
> 2886230666fa8b SeongJae Park 2022-08-14 799 r->ar.start,
> 2886230666fa8b SeongJae Park 2022-08-14 800 quota->esz,
> 2886230666fa8b SeongJae Park 2022-08-14 801 quota->charged_sz);
> 2886230666fa8b SeongJae Park 2022-08-14 802 BUG();
> 2886230666fa8b SeongJae Park 2022-08-14 803 }
> 4ed9824346c071 Kaixu Xia 2022-08-13 804 damon_split_region_at(t, r, sz);
> 2b8a248d587334 SeongJae Park 2021-11-05 805 }
> 1cd2430300594a SeongJae Park 2021-11-05 806 ktime_get_coarse_ts64(&begin);
> 5cb21aeba065d6 SeongJae Park 2022-09-20 @807 if (c->callback.before_scheme_apply)
> 71af589c839d95 SeongJae Park 2022-09-20 808 err = c->callback.before_scheme_apply(c, t, r, s);
> 5cb21aeba065d6 SeongJae Park 2022-09-20 809 if (!err)
> f7d911c39cbbb8 SeongJae Park 2022-03-22 810 sz_applied = c->ops.apply_scheme(c, t, r, s);
> 1cd2430300594a SeongJae Park 2021-11-05 811 ktime_get_coarse_ts64(&end);
> 1cd2430300594a SeongJae Park 2021-11-05 812 quota->total_charged_ns += timespec64_to_ns(&end) -
> 1cd2430300594a SeongJae Park 2021-11-05 813 timespec64_to_ns(&begin);
> 2b8a248d587334 SeongJae Park 2021-11-05 814 quota->charged_sz += sz;
> 1cd2430300594a SeongJae Park 2021-11-05 815 if (quota->esz && quota->charged_sz >= quota->esz) {
> 50585192bc2ef9 SeongJae Park 2021-11-05 816 quota->charge_target_from = t;
> 50585192bc2ef9 SeongJae Park 2021-11-05 817 quota->charge_addr_from = r->ar.end + 1;
> 50585192bc2ef9 SeongJae Park 2021-11-05 818 }
> 2b8a248d587334 SeongJae Park 2021-11-05 819 }
> 2f0b548c9f03a7 SeongJae Park 2021-11-05 820 if (s->action != DAMOS_STAT)
> 1f366e421c8f69 SeongJae Park 2021-11-05 821 r->age = 0;
> 2b8a248d587334 SeongJae Park 2021-11-05 822
> 2b8a248d587334 SeongJae Park 2021-11-05 823 update_stat:
> 0e92c2ee9f4595 SeongJae Park 2022-01-14 824 s->stat.nr_tried++;
> 0e92c2ee9f4595 SeongJae Park 2022-01-14 825 s->stat.sz_tried += sz;
> 0e92c2ee9f4595 SeongJae Park 2022-01-14 826 if (sz_applied)
> 0e92c2ee9f4595 SeongJae Park 2022-01-14 827 s->stat.nr_applied++;
> 0e92c2ee9f4595 SeongJae Park 2022-01-14 828 s->stat.sz_applied += sz_applied;
> 1f366e421c8f69 SeongJae Park 2021-11-05 829 }
> 71af589c839d95 SeongJae Park 2022-09-20 830
>
> :::::: The code at line 807 was first introduced by commit
> :::::: 5cb21aeba065d632fa56295d75151d6b70a2bd1b mm/damon/core: add a DAMON callback for scheme target regions check
>
> :::::: TO: SeongJae Park <sj@xxxxxxxxxx>
> :::::: CC: SeongJae Park <sj@xxxxxxxxxx>
>
> --
> 0-DAY CI Kernel Test Service
> https://01.org/lkp