Lines Matching defs:vma_priv
53 static void privcmd_buf_vmapriv_free(struct privcmd_buf_vma_private *vma_priv)
57 list_del(&vma_priv->list);
59 for (i = 0; i < vma_priv->n_pages; i++)
60 __free_page(vma_priv->pages[i]);
62 kfree(vma_priv);
68 struct privcmd_buf_vma_private *vma_priv;
73 vma_priv = list_first_entry(&file_priv->list,
76 privcmd_buf_vmapriv_free(vma_priv);
88 struct privcmd_buf_vma_private *vma_priv = vma->vm_private_data;
90 if (!vma_priv)
93 mutex_lock(&vma_priv->file_priv->lock);
94 vma_priv->users++;
95 mutex_unlock(&vma_priv->file_priv->lock);
100 struct privcmd_buf_vma_private *vma_priv = vma->vm_private_data;
103 if (!vma_priv)
106 file_priv = vma_priv->file_priv;
110 vma_priv->users--;
111 if (!vma_priv->users)
112 privcmd_buf_vmapriv_free(vma_priv);
135 struct privcmd_buf_vma_private *vma_priv;
143 vma_priv = kzalloc(struct_size(vma_priv, pages, count), GFP_KERNEL);
144 if (!vma_priv)
148 vma_priv->pages[i] = alloc_page(GFP_KERNEL | __GFP_ZERO);
149 if (!vma_priv->pages[i])
151 vma_priv->n_pages++;
156 vma_priv->file_priv = file_priv;
157 vma_priv->users = 1;
161 vma->vm_private_data = vma_priv;
163 list_add(&vma_priv->list, &file_priv->list);
165 if (vma_priv->n_pages != count)
168 ret = vm_map_pages_zero(vma, vma_priv->pages,
169 vma_priv->n_pages);
172 privcmd_buf_vmapriv_free(vma_priv);