Messages in this thread | | | Subject | Re: [PATCH v3 2/9] drm: hold master_lookup_lock when releasing a drm_file's master | From | Desmond Cheong Zhi Xi <> | Date | Wed, 18 Aug 2021 22:50:00 +0800 |
| |
On 18/8/21 6:05 pm, Daniel Vetter wrote: > On Wed, Aug 18, 2021 at 03:38:17PM +0800, Desmond Cheong Zhi Xi wrote: >> When drm_file.master changes value, the corresponding >> drm_device.master_lookup_lock should be held. >> >> In drm_master_release, a call to drm_master_put sets the >> file_priv->master to NULL, so we protect this section with >> drm_device.master_lookup_lock. >> >> Signed-off-by: Desmond Cheong Zhi Xi <desmondcheongzx@gmail.com> > > At this points all refcounts to drm_file have disappeared, so yeah this is > a lockless access, but also no one can observe it anymore. See also next > patch. > > Hence I think the current code is fine. > -Daniel >
Ah ok got it, I didn't realize that. I'll drop patch 2 and 3 from the series then.
>> --- >> drivers/gpu/drm/drm_auth.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c >> index 8efb58aa7d95..8c0e0dba1611 100644 >> --- a/drivers/gpu/drm/drm_auth.c >> +++ b/drivers/gpu/drm/drm_auth.c >> @@ -373,8 +373,11 @@ void drm_master_release(struct drm_file *file_priv) >> } >> >> /* drop the master reference held by the file priv */ >> - if (file_priv->master) >> + if (file_priv->master) { >> + spin_lock(&dev->master_lookup_lock); >> drm_master_put(&file_priv->master); >> + spin_unlock(&dev->master_lookup_lock); >> + } >> mutex_unlock(&dev->master_mutex); >> } >> >> -- >> 2.25.1 >> >
| |