arch/arm64/kvm/vgic/vgic.c:476 kvm_vgic_inject_irq() warn: inconsistent returns '&irq->irq_lock'.

From: kernel test robot
Date: Fri Mar 12 2021 - 17:48:06 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f78d76e72a4671ea52d12752d92077788b4f5d50
commit: 9ed24f4b712b855dcf7be3025b75b051cb73a2b7 KVM: arm64: Move virt/kvm/arm to arch/arm64
date: 10 months ago
config: arm64-randconfig-m031-20210312 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0

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

smatch warnings:
arch/arm64/kvm/vgic/vgic.c:476 kvm_vgic_inject_irq() warn: inconsistent returns '&irq->irq_lock'.
arch/arm64/kvm/vgic/vgic.c:476 kvm_vgic_inject_irq() warn: inconsistent returns 'flags'.
arch/arm64/kvm/vgic/vgic-v3.c:394 vgic_v3_save_pending_tables() error: uninitialized symbol 'val'.
arch/arm64/kvm/vgic/vgic-its.c:311 update_lpi_config() warn: inconsistent returns '&irq->irq_lock'.
arch/arm64/kvm/vgic/vgic-its.c:311 update_lpi_config() warn: inconsistent returns 'flags'.
arch/arm64/kvm/vgic/vgic-its.c:466 its_sync_lpi_pending_table() error: uninitialized symbol 'pendmask'.

vim +476 arch/arm64/kvm/vgic/vgic.c

81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 419
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 420 /**
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 421 * kvm_vgic_inject_irq - Inject an IRQ from a device to the vgic
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 422 * @kvm: The VM structure pointer
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 423 * @cpuid: The CPU for PPIs
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 424 * @intid: The INTID to inject a new state to.
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 425 * @level: Edge-triggered: true: to trigger the interrupt
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 426 * false: to ignore the call
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 427 * Level-sensitive true: raise the input signal
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 428 * false: lower the input signal
cb3f0ad881a6ce virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-05-16 429 * @owner: The opaque pointer to the owner of the IRQ being raised to verify
cb3f0ad881a6ce virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-05-16 430 * that the caller is allowed to inject this IRQ. Userspace
cb3f0ad881a6ce virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-05-16 431 * injections will have owner == NULL.
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 432 *
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 433 * The VGIC is not concerned with devices being active-LOW or active-HIGH for
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 434 * level-sensitive interrupts. You can think of the level parameter as 1
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 435 * being HIGH and 0 being LOW and all devices being active-HIGH.
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 436 */
11710dec8a4508 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-02-01 437 int kvm_vgic_inject_irq(struct kvm *kvm, int cpuid, unsigned int intid,
cb3f0ad881a6ce virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-05-16 438 bool level, void *owner)
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 439 {
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 440 struct kvm_vcpu *vcpu;
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 441 struct vgic_irq *irq;
006df0f34930e1 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2016-10-16 442 unsigned long flags;
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 443 int ret;
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 444
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 445 trace_vgic_update_irq_pending(cpuid, intid, level);
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 446
ad275b8bb1e659 virt/kvm/arm/vgic/vgic.c Eric Auger 2015-12-21 447 ret = vgic_lazy_init(kvm);
ad275b8bb1e659 virt/kvm/arm/vgic/vgic.c Eric Auger 2015-12-21 448 if (ret)
ad275b8bb1e659 virt/kvm/arm/vgic/vgic.c Eric Auger 2015-12-21 449 return ret;
ad275b8bb1e659 virt/kvm/arm/vgic/vgic.c Eric Auger 2015-12-21 450
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 451 vcpu = kvm_get_vcpu(kvm, cpuid);
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 452 if (!vcpu && intid < VGIC_NR_PRIVATE_IRQS)
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 453 return -EINVAL;
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 454
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 455 irq = vgic_get_irq(kvm, vcpu, intid);
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 456 if (!irq)
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 457 return -EINVAL;
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 458
8fa3adb8c6beee virt/kvm/arm/vgic/vgic.c Julien Thierry 2019-01-07 459 raw_spin_lock_irqsave(&irq->irq_lock, flags);
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 460
cb3f0ad881a6ce virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-05-16 461 if (!vgic_validate_injection(irq, level, owner)) {
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 462 /* Nothing to see here, move along... */
8fa3adb8c6beee virt/kvm/arm/vgic/vgic.c Julien Thierry 2019-01-07 463 raw_spin_unlock_irqrestore(&irq->irq_lock, flags);
5dd4b924e390af virt/kvm/arm/vgic/vgic.c Andre Przywara 2016-07-15 464 vgic_put_irq(kvm, irq);
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 465 return 0;
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 466 }
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 467
8694e4da66a636 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-01-23 468 if (irq->config == VGIC_CONFIG_LEVEL)
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 469 irq->line_level = level;
8694e4da66a636 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-01-23 470 else
8694e4da66a636 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2017-01-23 471 irq->pending_latch = true;
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 472
006df0f34930e1 virt/kvm/arm/vgic/vgic.c Christoffer Dall 2016-10-16 473 vgic_queue_irq_unlock(kvm, irq, flags);
5dd4b924e390af virt/kvm/arm/vgic/vgic.c Andre Przywara 2016-07-15 474 vgic_put_irq(kvm, irq);
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 475
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 @476 return 0;
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 477 }
81eeb95ddbabbb virt/kvm/arm/vgic/vgic.c Christoffer Dall 2015-11-25 478

:::::: The code at line 476 was first introduced by commit
:::::: 81eeb95ddbabbb998a6b39f762bc7edaa2a979b4 KVM: arm/arm64: vgic-new: Implement virtual IRQ injection

:::::: TO: Christoffer Dall <christoffer.dall@xxxxxxxxxx>
:::::: CC: Christoffer Dall <christoffer.dall@xxxxxxxxxx>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip