Lines Matching refs:reflck
24 static void vfio_fsl_mc_reflck_get(struct vfio_fsl_mc_reflck *reflck) in vfio_fsl_mc_reflck_get() argument
26 kref_get(&reflck->kref); in vfio_fsl_mc_reflck_get()
31 struct vfio_fsl_mc_reflck *reflck = container_of(kref, in vfio_fsl_mc_reflck_release() local
35 mutex_destroy(&reflck->lock); in vfio_fsl_mc_reflck_release()
36 kfree(reflck); in vfio_fsl_mc_reflck_release()
40 static void vfio_fsl_mc_reflck_put(struct vfio_fsl_mc_reflck *reflck) in vfio_fsl_mc_reflck_put() argument
42 kref_put_mutex(&reflck->kref, vfio_fsl_mc_reflck_release, &reflck_lock); in vfio_fsl_mc_reflck_put()
47 struct vfio_fsl_mc_reflck *reflck; in vfio_fsl_mc_reflck_alloc() local
49 reflck = kzalloc(sizeof(*reflck), GFP_KERNEL); in vfio_fsl_mc_reflck_alloc()
50 if (!reflck) in vfio_fsl_mc_reflck_alloc()
53 kref_init(&reflck->kref); in vfio_fsl_mc_reflck_alloc()
54 mutex_init(&reflck->lock); in vfio_fsl_mc_reflck_alloc()
56 return reflck; in vfio_fsl_mc_reflck_alloc()
65 vdev->reflck = vfio_fsl_mc_reflck_alloc(); in vfio_fsl_mc_reflck_attach()
66 ret = PTR_ERR_OR_ZERO(vdev->reflck); in vfio_fsl_mc_reflck_attach()
79 if (!cont_vdev || !cont_vdev->reflck) { in vfio_fsl_mc_reflck_attach()
84 vfio_fsl_mc_reflck_get(cont_vdev->reflck); in vfio_fsl_mc_reflck_attach()
85 vdev->reflck = cont_vdev->reflck; in vfio_fsl_mc_reflck_attach()
146 mutex_lock(&vdev->reflck->lock); in vfio_fsl_mc_open()
154 mutex_unlock(&vdev->reflck->lock); in vfio_fsl_mc_open()
159 mutex_unlock(&vdev->reflck->lock); in vfio_fsl_mc_open()
169 mutex_lock(&vdev->reflck->lock); in vfio_fsl_mc_release()
195 mutex_unlock(&vdev->reflck->lock); in vfio_fsl_mc_release()
658 vfio_fsl_mc_reflck_put(vdev->reflck); in vfio_fsl_mc_probe()
677 vfio_fsl_mc_reflck_put(vdev->reflck); in vfio_fsl_mc_remove()