lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <be6b436c-66d0-f966-10cf-205cb4aedfef@loongson.cn>
Date: Tue, 12 Aug 2025 09:48:24 +0800
From: Bibo Mao <maobibo@...ngson.cn>
To: Huacai Chen <chenhuacai@...nel.org>
Cc: Song Gao <gaosong@...ngson.cn>, zhaotianrui@...ngson.cn,
 lixianglai@...ngson.cn, loongarch@...ts.linux.dev,
 linux-kernel@...r.kernel.org
Subject: Re: [PATCH] LoongArch: KVM: Use kvm_get_vcpu_by_id() instead of
 kvm_get_vcpu()



On 2025/8/11 下午9:23, Huacai Chen wrote:
> On Mon, Aug 11, 2025 at 6:53 PM Bibo Mao <maobibo@...ngson.cn> wrote:
>>
>>
>>
>> On 2025/8/11 上午10:55, Song Gao wrote:
>>> Use kvm_get_vcpu() may can't get vcpu context, use kvm_get_vcpu_by_id()
>>> instead of kvm_get_vcpu().
>>>
>>> Signed-off-by: Song Gao <gaosong@...ngson.cn>
>>> ---
>>>    arch/loongarch/kvm/intc/eiointc.c | 5 ++++-
>>>    arch/loongarch/kvm/intc/ipi.c     | 2 +-
>>>    2 files changed, 5 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/arch/loongarch/kvm/intc/eiointc.c b/arch/loongarch/kvm/intc/eiointc.c
>>> index a3a12af9ecbf..5180da91d2e6 100644
>>> --- a/arch/loongarch/kvm/intc/eiointc.c
>>> +++ b/arch/loongarch/kvm/intc/eiointc.c
>>> @@ -45,7 +45,10 @@ static void eiointc_update_irq(struct loongarch_eiointc *s, int irq, int level)
>>>        }
>>>
>>>        cpu = s->sw_coremap[irq];
>>> -     vcpu = kvm_get_vcpu(s->kvm, cpu);
>>> +     vcpu = kvm_get_vcpu_by_id(s->kvm, cpu);
>>> +     if (unlikely(vcpu == NULL)) {
>>> +             return;
>>> +     }
>> Brace {} is unnecessary with kernel coding style :), just something like
>> this:
>>          if (unlikely(vcpu == NULL))
>>                  return;
>>
>> The other looks good to me.
> Maybe add a print statement the same as kvm_ipi_regs_access()?
Both are ok for me now.

In future there may be change with return value and printk message with 
in-kernel MMIO/IOCSR read/write emulation.

About return value there should be -EOPNOTSUPP if addr is not in range 
of device, it will transfer the emulation to user space VMM. Other value 
such as -EINVAL should be supported, and should not transfer to VMM 
since the address is in range of device.

About printk message I have no idea now, it may cause lots of noise 
message in host because of bad guest kernel, however abnormal behavior 
should be recorded anyway.

Regards
Bibo Mao
> 
> Huacai
> 
>>
>> Regards
>> Bibo Mao
>>>        if (level) {
>>>                /* if not enable return false */
>>>                if (!test_bit(irq, (unsigned long *)s->enable.reg_u32))
>>> diff --git a/arch/loongarch/kvm/intc/ipi.c b/arch/loongarch/kvm/intc/ipi.c
>>> index e658d5b37c04..0348a83a7ed7 100644
>>> --- a/arch/loongarch/kvm/intc/ipi.c
>>> +++ b/arch/loongarch/kvm/intc/ipi.c
>>> @@ -298,7 +298,7 @@ static int kvm_ipi_regs_access(struct kvm_device *dev,
>>>        cpu = (attr->attr >> 16) & 0x3ff;
>>>        addr = attr->attr & 0xff;
>>>
>>> -     vcpu = kvm_get_vcpu(dev->kvm, cpu);
>>> +     vcpu = kvm_get_vcpu_by_id(dev->kvm, cpu);
>>>        if (unlikely(vcpu == NULL)) {
>>>                kvm_err("%s: invalid target cpu: %d\n", __func__, cpu);
>>>                return -EINVAL;
>>>
>>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ