Re: arch/arm64/kvm/at.c:71 at_s1e1p_fast() error: uninitialized symbol 'fail'.
From: Dan Carpenter
Date: Wed Oct 23 2024 - 09:09:01 EST
On Wed, Oct 23, 2024 at 01:43:03PM +0100, Marc Zyngier wrote:
> On Mon, 21 Oct 2024 08:29:41 +0100,
> Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
> >
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: 3d5ad2d4eca337e80f38df77de89614aa5aaceb9
> > commit: be0135bde1df5e80cffacd2ed6f952e6d38d6f71 KVM: arm64: nv: Add basic emulation of AT S1E1{R,W}P
> > date: 7 weeks ago
> > config: arm64-randconfig-r071-20241015 (https://download.01.org/0day-ci/archive/20241020/202410200209.bAXXL58Q-lkp@xxxxxxxxx/config)
> > compiler: aarch64-linux-gcc (GCC) 14.1.0
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> > | Closes: https://lore.kernel.org/r/202410200209.bAXXL58Q-lkp@xxxxxxxxx/
> >
> > smatch warnings:
> > arch/arm64/kvm/at.c:71 at_s1e1p_fast() error: uninitialized symbol 'fail'.
> >
> > vim +/fail +71 arch/arm64/kvm/at.c
> >
> > be0135bde1df5e Marc Zyngier 2024-07-14 52 static bool at_s1e1p_fast(struct kvm_vcpu *vcpu, u32 op, u64 vaddr)
> > be0135bde1df5e Marc Zyngier 2024-07-14 53 {
> > be0135bde1df5e Marc Zyngier 2024-07-14 54 u64 host_pan;
> > be0135bde1df5e Marc Zyngier 2024-07-14 55 bool fail;
> > be0135bde1df5e Marc Zyngier 2024-07-14 56
> > be0135bde1df5e Marc Zyngier 2024-07-14 57 host_pan = read_sysreg_s(SYS_PSTATE_PAN);
> > be0135bde1df5e Marc Zyngier 2024-07-14 58 write_sysreg_s(*vcpu_cpsr(vcpu) & PSTATE_PAN, SYS_PSTATE_PAN);
> > be0135bde1df5e Marc Zyngier 2024-07-14 59
> > be0135bde1df5e Marc Zyngier 2024-07-14 60 switch (op) {
> > be0135bde1df5e Marc Zyngier 2024-07-14 61 case OP_AT_S1E1RP:
> > be0135bde1df5e Marc Zyngier 2024-07-14 62 fail = __kvm_at(OP_AT_S1E1RP, vaddr);
> > be0135bde1df5e Marc Zyngier 2024-07-14 63 break;
> > be0135bde1df5e Marc Zyngier 2024-07-14 64 case OP_AT_S1E1WP:
> > be0135bde1df5e Marc Zyngier 2024-07-14 65 fail = __kvm_at(OP_AT_S1E1WP, vaddr);
> > be0135bde1df5e Marc Zyngier 2024-07-14 66 break;
> >
> > default case?
>
> There is no bug here, as evidenced by the *only* caller of this
> function (__kvm_at_s1e01_fast()):
>
> switch (op) {
> case OP_AT_S1E1RP:
> case OP_AT_S1E1WP:
> fail = at_s1e1p_fast(vcpu, op, vaddr);
> break;
>
> So 'op' can only be one of these two values, and at_s1e1p_fast()
> always initialises 'fail'.
>
> I guess this is a case of smatch not seeing beyond function scope.
>
Yeah. I don't know why I sent this report. :/ The kbuild-bot doesn't have cross
function information, but I have a system with that right infront of me.
Sorry.
regards,
dan carpenter