kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tony Krowiak <akrowiak@linux.ibm.com>
To: Halil Pasic <pasic@linux.ibm.com>
Cc: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, stable@vger.kernel.org,
	borntraeger@de.ibm.com, cohuck@redhat.com, kwankhede@nvidia.com,
	pbonzini@redhat.com, alex.williamson@redhat.com,
	pasic@linux.vnet.ibm.com
Subject: Re: [PATCH v5 1/1] s390/vfio-ap: fix circular lockdep when setting/clearing crypto masks
Date: Fri, 26 Mar 2021 09:25:14 -0400	[thread overview]
Message-ID: <4973feca-4eee-7139-26e6-1b926c017263@linux.ibm.com> (raw)
In-Reply-To: <20210325213210.62cb11b9.pasic@linux.ibm.com>



On 3/25/21 4:32 PM, Halil Pasic wrote:
> On Thu, 25 Mar 2021 08:46:40 -0400
> Tony Krowiak <akrowiak@linux.ibm.com> wrote:
>
>> This patch fixes a lockdep splat introduced by commit f21916ec4826
>> ("s390/vfio-ap: clean up vfio_ap resources when KVM pointer invalidated").
>> The lockdep splat only occurs when starting a Secure Execution guest.
>> Crypto virtualization (vfio_ap) is not yet supported for SE guests;
>> however, in order to avoid this problem when support becomes available,
>> this fix is being provided.
>>
>> The circular locking dependency was introduced when the setting of the
>> masks in the guest's APCB was executed while holding the matrix_dev->lock.
>> While the lock is definitely needed to protect the setting/unsetting of the
>> matrix_mdev->kvm pointer, it is not necessarily critical for setting the
>> masks; so, the matrix_dev->lock will be released while the masks are being
>> set or cleared.
>>
>> Keep in mind, however, that another process that takes the matrix_dev->lock
>> can get control while the masks in the guest's APCB are being set or
>> cleared as a result of the driver being notified that the KVM pointer
>> has been set or unset. This could result in invalid access to the
>> matrix_mdev->kvm pointer by the intervening process. To avoid this
>> scenario, two new fields are being added to the ap_matrix_mdev struct:
>>
>> struct ap_matrix_mdev {
>> 	...
>> 	bool kvm_busy;
>> 	wait_queue_head_t wait_for_kvm;
>>     ...
>> };
>>
>> The functions that handle notification that the KVM pointer value has
>> been set or cleared will set the kvm_busy flag to true until they are done
>> processing at which time they will set it to false and wake up the tasks on
>> the matrix_mdev->wait_for_kvm wait queue. Functions that require
>> access to matrix_mdev->kvm will sleep on the wait queue until they are
>> awakened at which time they can safely access the matrix_mdev->kvm
>> field.
>>
>> Fixes: f21916ec4826 ("s390/vfio-ap: clean up vfio_ap resources when KVM pointer invalidated")
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
> Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
>
> I intend to give a couple of work-days to others, and if nobody objects
> merge this. (I will wait till Tuesday.)

Thanks Halil.

>
> I've tested it and it does silence the lockdep splat.
>
> Regards,
> Halil


      reply	other threads:[~2021-03-26 13:26 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-25 12:46 [PATCH v5 0/1] s390/vfio-ap: fix circular lockdep when starting Tony Krowiak
2021-03-25 12:46 ` [PATCH v5 1/1] s390/vfio-ap: fix circular lockdep when setting/clearing crypto masks Tony Krowiak
2021-03-25 20:32   ` Halil Pasic
2021-03-26 13:25     ` Tony Krowiak [this message]

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=4973feca-4eee-7139-26e6-1b926c017263@linux.ibm.com \
    --to=akrowiak@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=pasic@linux.ibm.com \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=stable@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).