diff mbox

KVM: s390/vsie: avoid sparse warning

Message ID 20180716083715.240960-1-borntraeger@de.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Christian Borntraeger July 16, 2018, 8:37 a.m. UTC
This is a non-functional change that avoids
arch/s390/kvm/vsie.c:839:25: warning: context imbalance in 'do_vsie_run' - unexpected unlock

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 arch/s390/kvm/vsie.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

David Hildenbrand July 16, 2018, 11:43 a.m. UTC | #1
On 16.07.2018 10:37, Christian Borntraeger wrote:
> This is a non-functional change that avoids
> arch/s390/kvm/vsie.c:839:25: warning: context imbalance in 'do_vsie_run' - unexpected unlock
> 
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
>  arch/s390/kvm/vsie.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c
> index 5dd9f7dc5b28..63844b95c22c 100644
> --- a/arch/s390/kvm/vsie.c
> +++ b/arch/s390/kvm/vsie.c
> @@ -823,6 +823,8 @@ static int handle_stfle(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
>   *          - < 0 if an error occurred
>   */
>  static int do_vsie_run(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
> +	__releases(vcpu->kvm->srcu)
> +	__acquires(vcpu->kvm->srcu)
>  {
>  	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
>  	struct kvm_s390_sie_block *scb_o = vsie_page->scb_o;
> 

Why isn't the same needed in __vcpu_run() ?
Christian Borntraeger July 16, 2018, 1:10 p.m. UTC | #2
On 07/16/2018 01:43 PM, David Hildenbrand wrote:
> On 16.07.2018 10:37, Christian Borntraeger wrote:
>> This is a non-functional change that avoids
>> arch/s390/kvm/vsie.c:839:25: warning: context imbalance in 'do_vsie_run' - unexpected unlock
>>
>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> ---
>>  arch/s390/kvm/vsie.c | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c
>> index 5dd9f7dc5b28..63844b95c22c 100644
>> --- a/arch/s390/kvm/vsie.c
>> +++ b/arch/s390/kvm/vsie.c
>> @@ -823,6 +823,8 @@ static int handle_stfle(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
>>   *          - < 0 if an error occurred
>>   */
>>  static int do_vsie_run(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
>> +	__releases(vcpu->kvm->srcu)
>> +	__acquires(vcpu->kvm->srcu)
>>  {
>>  	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
>>  	struct kvm_s390_sie_block *scb_o = vsie_page->scb_o;
>>
> 
> Why isn't the same needed in __vcpu_run() ?

Because it first takes the lock. sparse complains if the first action is to release the lock.
David Hildenbrand July 16, 2018, 1:41 p.m. UTC | #3
On 16.07.2018 15:10, Christian Borntraeger wrote:
> 
> 
> On 07/16/2018 01:43 PM, David Hildenbrand wrote:
>> On 16.07.2018 10:37, Christian Borntraeger wrote:
>>> This is a non-functional change that avoids
>>> arch/s390/kvm/vsie.c:839:25: warning: context imbalance in 'do_vsie_run' - unexpected unlock
>>>
>>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
>>> ---
>>>  arch/s390/kvm/vsie.c | 2 ++
>>>  1 file changed, 2 insertions(+)
>>>
>>> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c
>>> index 5dd9f7dc5b28..63844b95c22c 100644
>>> --- a/arch/s390/kvm/vsie.c
>>> +++ b/arch/s390/kvm/vsie.c
>>> @@ -823,6 +823,8 @@ static int handle_stfle(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
>>>   *          - < 0 if an error occurred
>>>   */
>>>  static int do_vsie_run(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
>>> +	__releases(vcpu->kvm->srcu)
>>> +	__acquires(vcpu->kvm->srcu)
>>>  {
>>>  	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
>>>  	struct kvm_s390_sie_block *scb_o = vsie_page->scb_o;
>>>
>>
>> Why isn't the same needed in __vcpu_run() ?
> 
> Because it first takes the lock. sparse complains if the first action is to release the lock.
> 

Indeed, I ignored the first lock outside of the loop.

Reviewed-by: David Hildenbrand <david@redhat.com>
diff mbox

Patch

diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c
index 5dd9f7dc5b28..63844b95c22c 100644
--- a/arch/s390/kvm/vsie.c
+++ b/arch/s390/kvm/vsie.c
@@ -823,6 +823,8 @@  static int handle_stfle(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
  *          - < 0 if an error occurred
  */
 static int do_vsie_run(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
+	__releases(vcpu->kvm->srcu)
+	__acquires(vcpu->kvm->srcu)
 {
 	struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
 	struct kvm_s390_sie_block *scb_o = vsie_page->scb_o;