[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <BN9PR11MB5276F50E3421C846D19645638C39A@BN9PR11MB5276.namprd11.prod.outlook.com>
Date: Wed, 19 Jul 2023 05:33:15 +0000
From: "Tian, Kevin" <kevin.tian@...el.com>
To: Dmitry Torokhov <dmitry.torokhov@...il.com>,
Paolo Bonzini <pbonzini@...hat.com>
CC: Alex Williamson <alex.williamson@...hat.com>,
Greg KH <gregkh@...uxfoundation.org>,
"Christopherson,, Sean" <seanjc@...gle.com>,
"Bradescu, Roxana" <roxabee@...gle.com>,
"kvm@...r.kernel.org" <kvm@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v3 1/2] kvm/vfio: ensure kvg instance stays around in
kvm_vfio_group_add()
> From: Dmitry Torokhov <dmitry.torokhov@...il.com>
> Sent: Saturday, July 15, 2023 6:46 AM
>
> kvm_vfio_group_add() creates kvg instance, links it to kv->group_list,
> and calls kvm_vfio_file_set_kvm() with kvg->file as an argument after
> dropping kv->lock. If we race group addition and deletion calls, kvg
> instance may get freed by the time we get around to calling
> kvm_vfio_file_set_kvm().
>
> Previous iterations of the code did not reference kvg->file outside of
> the critical section, but used a temporary variable. Still, they had
> similar problem of the file reference being owned by kvg structure and
> potential for kvm_vfio_group_del() dropping it before
> kvm_vfio_group_add() had a chance to complete.
>
> Fix this by moving call to kvm_vfio_file_set_kvm() under the protection
> of kv->lock. We already call it while holding the same lock when vfio
> group is being deleted, so it should be safe here as well.
>
> Fixes: 2fc1bec15883 ("kvm: set/clear kvm to/from vfio_group when group
> add/delete")
> Reviewed-by: Alex Williamson <alex.williamson@...hat.com>
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@...il.com>
Reviewed-by: Kevin Tian <kevin.tian@...el.com>
Powered by blists - more mailing lists