All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Greg KH <greg@kroah.com>, Jing Zhang <jingzhangos@google.com>
Cc: KVM <kvm@vger.kernel.org>, David Hildenbrand <david@redhat.com>,
	Paul Mackerras <paulus@ozlabs.org>,
	Linuxkselftest <linux-kselftest@vger.kernel.org>,
	Claudio Imbrenda <imbrenda@linux.ibm.com>,
	Will Deacon <will@kernel.org>,
	KVMARM <kvmarm@lists.cs.columbia.edu>,
	Emanuele Giuseppe Esposito <eesposit@redhat.com>,
	LinuxS390 <linux-s390@vger.kernel.org>,
	Janosch Frank <frankja@linux.ibm.com>,
	Marc Zyngier <maz@kernel.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>,
	David Rientjes <rientjes@google.com>,
	KVMPPC <kvm-ppc@vger.kernel.org>,
	Krish Sadhukhan <krish.sadhukhan@oracle.com>,
	David Matlack <dmatlack@google.com>,
	Jim Mattson <jmattson@google.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Sean Christopherson <seanjc@google.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Peter Shier <pshier@google.com>,
	LinuxMIPS <linux-mips@vger.kernel.org>,
	Vitaly Kuznetsov <vkuznets@redhat.com>
Subject: Re: [PATCH v10 2/5] KVM: stats: Add fd-based API to read binary stats data
Date: Thu, 17 Jun 2021 13:23:35 +0200	[thread overview]
Message-ID: <d8ca6601-e3b7-e6b1-5992-12ae106de951@redhat.com> (raw)
In-Reply-To: <YMrzzYEkDQNCpnP7@kroah.com>

On 17/06/21 09:03, Greg KH wrote:
>> 3. Fd-based solution provides the possibility that a telemetry can
>>     read KVM stats in a less privileged situation.
> "possiblity"?  Does this work or not?  Have you tested it?
> 

I think this is essentially s/that/for/.  But more precisely:

3. Compared for example to a ioctl, a separate file descriptor makes it 
possible for an external program to read statistics, while maintaining 
privilege separation between VMM and telemetry code.

>>
>> +	snprintf(&kvm_vm_stats_header.id[0], sizeof(kvm_vm_stats_header.id),
>> +			"kvm-%d", task_pid_nr(current));
> 
> Why do you write to this static variable for EVERY read?  Shouldn't you
> just do it once at open?  How can it change?
> 
> Wait, it's a single shared variable, what happens when multiple tasks
> open this thing and read from it?  You race between writing to this
> variable here and then:
> 
>> +	return kvm_stats_read(&kvm_vm_stats_header, &kvm_vm_stats_desc[0],
>> +		&kvm->stat, sizeof(kvm->stat), user_buffer, size, offset);
> 
> Accessing it here.
> 
> So how is this really working?

It's not - Jing, kvm_vm_stats_header is small enough that you can store 
a copy in struct kvm.

Paolo

_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

WARNING: multiple messages have this Message-ID (diff)
From: Paolo Bonzini <pbonzini@redhat.com>
To: Greg KH <greg@kroah.com>, Jing Zhang <jingzhangos@google.com>
Cc: KVM <kvm@vger.kernel.org>, KVMARM <kvmarm@lists.cs.columbia.edu>,
	LinuxMIPS <linux-mips@vger.kernel.org>,
	KVMPPC <kvm-ppc@vger.kernel.org>,
	LinuxS390 <linux-s390@vger.kernel.org>,
	Linuxkselftest <linux-kselftest@vger.kernel.org>,
	Marc Zyngier <maz@kernel.org>, James Morse <james.morse@arm.com>,
	Julien Thierry <julien.thierry.kdev@gmail.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Will Deacon <will@kernel.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Paul Mackerras <paulus@ozlabs.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Claudio Imbrenda <imbrenda@linux.ibm.com>,
	Sean Christopherson <seanjc@google.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Jim Mattson <jmattson@google.com>,
	Peter Shier <pshier@google.com>, Oliver Upton <oupton@google.com>,
	David Rientjes <rientjes@google.com>,
	Emanuele Giuseppe Esposito <eesposit@redhat.com>,
	David Matlack <dmatlack@google.com>,
	Ricardo Koller <ricarkol@google.com>,
	Krish Sadhukhan <krish.sadhukhan@oracle.com>,
	Fuad Tabba <tabba@google.com>
Subject: Re: [PATCH v10 2/5] KVM: stats: Add fd-based API to read binary stats data
Date: Thu, 17 Jun 2021 13:23:35 +0200	[thread overview]
Message-ID: <d8ca6601-e3b7-e6b1-5992-12ae106de951@redhat.com> (raw)
In-Reply-To: <YMrzzYEkDQNCpnP7@kroah.com>

On 17/06/21 09:03, Greg KH wrote:
>> 3. Fd-based solution provides the possibility that a telemetry can
>>     read KVM stats in a less privileged situation.
> "possiblity"?  Does this work or not?  Have you tested it?
> 

I think this is essentially s/that/for/.  But more precisely:

3. Compared for example to a ioctl, a separate file descriptor makes it 
possible for an external program to read statistics, while maintaining 
privilege separation between VMM and telemetry code.

>>
>> +	snprintf(&kvm_vm_stats_header.id[0], sizeof(kvm_vm_stats_header.id),
>> +			"kvm-%d", task_pid_nr(current));
> 
> Why do you write to this static variable for EVERY read?  Shouldn't you
> just do it once at open?  How can it change?
> 
> Wait, it's a single shared variable, what happens when multiple tasks
> open this thing and read from it?  You race between writing to this
> variable here and then:
> 
>> +	return kvm_stats_read(&kvm_vm_stats_header, &kvm_vm_stats_desc[0],
>> +		&kvm->stat, sizeof(kvm->stat), user_buffer, size, offset);
> 
> Accessing it here.
> 
> So how is this really working?

It's not - Jing, kvm_vm_stats_header is small enough that you can store 
a copy in struct kvm.

Paolo


WARNING: multiple messages have this Message-ID (diff)
From: Paolo Bonzini <pbonzini@redhat.com>
To: Greg KH <greg@kroah.com>, Jing Zhang <jingzhangos@google.com>
Cc: KVM <kvm@vger.kernel.org>, KVMARM <kvmarm@lists.cs.columbia.edu>,
	LinuxMIPS <linux-mips@vger.kernel.org>,
	KVMPPC <kvm-ppc@vger.kernel.org>,
	LinuxS390 <linux-s390@vger.kernel.org>,
	Linuxkselftest <linux-kselftest@vger.kernel.org>,
	Marc Zyngier <maz@kernel.org>, James Morse <james.morse@arm.com>,
	Julien Thierry <julien.thierry.kdev@gmail.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Will Deacon <will@kernel.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Paul Mackerras <paulus@ozlabs.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Claudio Imbrenda <imbrenda@linux.ibm.com>,
	Sean Christopherson <seanjc@google.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Jim Mattson <jmattson@google.com>,
	Peter Shier <pshier@google.com>, Oliver Upton <oupton@google.com>,
	David Rientjes <rientjes@google.com>,
	Emanuele Giuseppe Esposito <eesposit@redhat.com>,
	David Matlack <dmatlack@google.com>,
	Ricardo Koller <ricarkol@google.com>,
	Krish Sadhukhan <krish.sadhukhan@oracle.com>,
	Fuad Tabba <tabba@google.com>
Subject: Re: [PATCH v10 2/5] KVM: stats: Add fd-based API to read binary stats data
Date: Thu, 17 Jun 2021 11:23:35 +0000	[thread overview]
Message-ID: <d8ca6601-e3b7-e6b1-5992-12ae106de951@redhat.com> (raw)
In-Reply-To: <YMrzzYEkDQNCpnP7@kroah.com>

On 17/06/21 09:03, Greg KH wrote:
>> 3. Fd-based solution provides the possibility that a telemetry can
>>     read KVM stats in a less privileged situation.
> "possiblity"?  Does this work or not?  Have you tested it?
> 

I think this is essentially s/that/for/.  But more precisely:

3. Compared for example to a ioctl, a separate file descriptor makes it 
possible for an external program to read statistics, while maintaining 
privilege separation between VMM and telemetry code.

>>
>> +	snprintf(&kvm_vm_stats_header.id[0], sizeof(kvm_vm_stats_header.id),
>> +			"kvm-%d", task_pid_nr(current));
> 
> Why do you write to this static variable for EVERY read?  Shouldn't you
> just do it once at open?  How can it change?
> 
> Wait, it's a single shared variable, what happens when multiple tasks
> open this thing and read from it?  You race between writing to this
> variable here and then:
> 
>> +	return kvm_stats_read(&kvm_vm_stats_header, &kvm_vm_stats_desc[0],
>> +		&kvm->stat, sizeof(kvm->stat), user_buffer, size, offset);
> 
> Accessing it here.
> 
> So how is this really working?

It's not - Jing, kvm_vm_stats_header is small enough that you can store 
a copy in struct kvm.

Paolo

  reply	other threads:[~2021-06-17 11:40 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-17  4:41 [PATCH v10 0/5] KVM statistics data fd-based binary interface Jing Zhang
2021-06-17  4:41 ` Jing Zhang
2021-06-17  4:41 ` [PATCH v10 1/5] KVM: stats: Separate generic stats from architecture specific ones Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  4:41 ` [PATCH v10 2/5] KVM: stats: Add fd-based API to read binary stats data Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  7:03   ` Greg KH
2021-06-17  7:03     ` Greg KH
2021-06-17  7:03     ` Greg KH
2021-06-17 11:23     ` Paolo Bonzini [this message]
2021-06-17 11:23       ` Paolo Bonzini
2021-06-17 11:23       ` Paolo Bonzini
2021-06-17 14:48     ` Jing Zhang
2021-06-17 14:48       ` Jing Zhang
2021-06-17 14:48       ` Jing Zhang
2021-06-17  7:24   ` Greg KH
2021-06-17  7:24     ` Greg KH
2021-06-17  7:24     ` Greg KH
2021-06-17 11:27     ` Paolo Bonzini
2021-06-17 11:27       ` Paolo Bonzini
2021-06-17 11:27       ` Paolo Bonzini
2021-06-17 14:56     ` Jing Zhang
2021-06-17 14:56       ` Jing Zhang
2021-06-17 14:56       ` Jing Zhang
2021-06-17 15:29       ` Paolo Bonzini
2021-06-17 15:29         ` Paolo Bonzini
2021-06-17 15:29         ` Paolo Bonzini
2021-06-17 15:42         ` Jing Zhang
2021-06-17 15:42           ` Jing Zhang
2021-06-17 15:42           ` Jing Zhang
2021-06-17  4:41 ` [PATCH v10 3/5] KVM: stats: Add documentation for binary statistics interface Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  5:52   ` Greg KH
2021-06-17  5:52     ` Greg KH
2021-06-17  5:52     ` Greg KH
2021-06-17 15:09     ` Jing Zhang
2021-06-17 15:09       ` Jing Zhang
2021-06-17 15:09       ` Jing Zhang
2021-06-17  5:56   ` Greg KH
2021-06-17  5:56     ` Greg KH
2021-06-17  5:56     ` Greg KH
2021-06-17 11:29     ` Paolo Bonzini
2021-06-17 11:29       ` Paolo Bonzini
2021-06-17 11:29       ` Paolo Bonzini
2021-06-17 11:42       ` Greg KH
2021-06-17 11:42         ` Greg KH
2021-06-17 11:42         ` Greg KH
2021-06-17 11:46         ` Paolo Bonzini
2021-06-17 11:46           ` Paolo Bonzini
2021-06-17 11:46           ` Paolo Bonzini
2021-06-17 15:45       ` Jing Zhang
2021-06-17 15:45         ` Jing Zhang
2021-06-17 15:45         ` Jing Zhang
2021-06-17 15:20     ` Jing Zhang
2021-06-17 15:20       ` Jing Zhang
2021-06-17 15:20       ` Jing Zhang
2021-06-17 22:15       ` Jing Zhang
2021-06-17 22:15         ` Jing Zhang
2021-06-17 22:15         ` Jing Zhang
2021-06-17  6:05   ` Greg KH
2021-06-17  6:05     ` Greg KH
2021-06-17  6:05     ` Greg KH
2021-06-17 15:41     ` Jing Zhang
2021-06-17 15:41       ` Jing Zhang
2021-06-17 15:41       ` Jing Zhang
2021-06-17  6:07   ` Greg KH
2021-06-17  6:07     ` Greg KH
2021-06-17  6:07     ` Greg KH
2021-06-17 11:19     ` Paolo Bonzini
2021-06-17 11:19       ` Paolo Bonzini
2021-06-17 11:19       ` Paolo Bonzini
2021-06-17 11:34       ` Greg KH
2021-06-17 11:34         ` Greg KH
2021-06-17 11:34         ` Greg KH
2021-06-17 15:51         ` Jing Zhang
2021-06-17 15:51           ` Jing Zhang
2021-06-17 15:51           ` Jing Zhang
2021-06-17  4:41 ` [PATCH v10 4/5] KVM: selftests: Add selftest for KVM statistics data binary interface Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  4:41 ` [PATCH v10 5/5] KVM: stats: Remove code duplication for binary and debugfs stats Jing Zhang
2021-06-17  4:41   ` Jing Zhang
2021-06-17  4:41   ` Jing Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d8ca6601-e3b7-e6b1-5992-12ae106de951@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=aleksandar.qemu.devel@gmail.com \
    --cc=borntraeger@de.ibm.com \
    --cc=chenhuacai@kernel.org \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=dmatlack@google.com \
    --cc=eesposit@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=greg@kroah.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=jingzhangos@google.com \
    --cc=jmattson@google.com \
    --cc=krish.sadhukhan@oracle.com \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=paulus@ozlabs.org \
    --cc=pshier@google.com \
    --cc=rientjes@google.com \
    --cc=seanjc@google.com \
    --cc=tsbogend@alpha.franken.de \
    --cc=vkuznets@redhat.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.