Lines Matching refs:pde
49 de = ei->pde; in proc_evict_inode()
52 ei->pde = NULL; in proc_evict_inode()
75 ei->pde = NULL; in proc_alloc_inode()
206 static inline int use_pde(struct proc_dir_entry *pde) in use_pde() argument
208 return likely(atomic_inc_unless_negative(&pde->in_use)); in use_pde()
211 static void unuse_pde(struct proc_dir_entry *pde) in unuse_pde() argument
213 if (unlikely(atomic_dec_return(&pde->in_use) == BIAS)) in unuse_pde()
214 complete(pde->pde_unload_completion); in unuse_pde()
218 static void close_pdeo(struct proc_dir_entry *pde, struct pde_opener *pdeo) in close_pdeo() argument
219 __releases(&pde->pde_unload_lock) in close_pdeo()
235 spin_unlock(&pde->pde_unload_lock); in close_pdeo()
242 spin_unlock(&pde->pde_unload_lock); in close_pdeo()
244 pde->proc_ops->proc_release(file_inode(file), file); in close_pdeo()
245 spin_lock(&pde->pde_unload_lock); in close_pdeo()
249 spin_unlock(&pde->pde_unload_lock); in close_pdeo()
278 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_llseek() local
281 if (pde_is_permanent(pde)) { in proc_reg_llseek()
282 return pde->proc_ops->proc_lseek(file, offset, whence); in proc_reg_llseek()
283 } else if (use_pde(pde)) { in proc_reg_llseek()
284 rv = pde->proc_ops->proc_lseek(file, offset, whence); in proc_reg_llseek()
285 unuse_pde(pde); in proc_reg_llseek()
292 struct proc_dir_entry *pde = PDE(file_inode(iocb->ki_filp)); in proc_reg_read_iter() local
295 if (pde_is_permanent(pde)) in proc_reg_read_iter()
296 return pde->proc_ops->proc_read_iter(iocb, iter); in proc_reg_read_iter()
298 if (!use_pde(pde)) in proc_reg_read_iter()
300 ret = pde->proc_ops->proc_read_iter(iocb, iter); in proc_reg_read_iter()
301 unuse_pde(pde); in proc_reg_read_iter()
305 static ssize_t pde_read(struct proc_dir_entry *pde, struct file *file, char __user *buf, size_t cou… in pde_read() argument
309 read = pde->proc_ops->proc_read; in pde_read()
317 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_read() local
320 if (pde_is_permanent(pde)) { in proc_reg_read()
321 return pde_read(pde, file, buf, count, ppos); in proc_reg_read()
322 } else if (use_pde(pde)) { in proc_reg_read()
323 rv = pde_read(pde, file, buf, count, ppos); in proc_reg_read()
324 unuse_pde(pde); in proc_reg_read()
329 static ssize_t pde_write(struct proc_dir_entry *pde, struct file *file, const char __user *buf, siz… in pde_write() argument
333 write = pde->proc_ops->proc_write; in pde_write()
341 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_write() local
344 if (pde_is_permanent(pde)) { in proc_reg_write()
345 return pde_write(pde, file, buf, count, ppos); in proc_reg_write()
346 } else if (use_pde(pde)) { in proc_reg_write()
347 rv = pde_write(pde, file, buf, count, ppos); in proc_reg_write()
348 unuse_pde(pde); in proc_reg_write()
353 static __poll_t pde_poll(struct proc_dir_entry *pde, struct file *file, struct poll_table_struct *p… in pde_poll() argument
357 poll = pde->proc_ops->proc_poll; in pde_poll()
365 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_poll() local
368 if (pde_is_permanent(pde)) { in proc_reg_poll()
369 return pde_poll(pde, file, pts); in proc_reg_poll()
370 } else if (use_pde(pde)) { in proc_reg_poll()
371 rv = pde_poll(pde, file, pts); in proc_reg_poll()
372 unuse_pde(pde); in proc_reg_poll()
377 static long pde_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned lon… in pde_ioctl() argument
381 ioctl = pde->proc_ops->proc_ioctl; in pde_ioctl()
389 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_unlocked_ioctl() local
392 if (pde_is_permanent(pde)) { in proc_reg_unlocked_ioctl()
393 return pde_ioctl(pde, file, cmd, arg); in proc_reg_unlocked_ioctl()
394 } else if (use_pde(pde)) { in proc_reg_unlocked_ioctl()
395 rv = pde_ioctl(pde, file, cmd, arg); in proc_reg_unlocked_ioctl()
396 unuse_pde(pde); in proc_reg_unlocked_ioctl()
402 static long pde_compat_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsig… in pde_compat_ioctl() argument
406 compat_ioctl = pde->proc_ops->proc_compat_ioctl; in pde_compat_ioctl()
414 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_compat_ioctl() local
416 if (pde_is_permanent(pde)) { in proc_reg_compat_ioctl()
417 return pde_compat_ioctl(pde, file, cmd, arg); in proc_reg_compat_ioctl()
418 } else if (use_pde(pde)) { in proc_reg_compat_ioctl()
419 rv = pde_compat_ioctl(pde, file, cmd, arg); in proc_reg_compat_ioctl()
420 unuse_pde(pde); in proc_reg_compat_ioctl()
426 static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct vm_area_struct *vma) in pde_mmap() argument
430 mmap = pde->proc_ops->proc_mmap; in pde_mmap()
438 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_mmap() local
441 if (pde_is_permanent(pde)) { in proc_reg_mmap()
442 return pde_mmap(pde, file, vma); in proc_reg_mmap()
443 } else if (use_pde(pde)) { in proc_reg_mmap()
444 rv = pde_mmap(pde, file, vma); in proc_reg_mmap()
445 unuse_pde(pde); in proc_reg_mmap()
451 pde_get_unmapped_area(struct proc_dir_entry *pde, struct file *file, unsigned long orig_addr, in pde_get_unmapped_area() argument
457 get_area = pde->proc_ops->proc_get_unmapped_area; in pde_get_unmapped_area()
472 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_get_unmapped_area() local
475 if (pde_is_permanent(pde)) { in proc_reg_get_unmapped_area()
476 return pde_get_unmapped_area(pde, file, orig_addr, len, pgoff, flags); in proc_reg_get_unmapped_area()
477 } else if (use_pde(pde)) { in proc_reg_get_unmapped_area()
478 rv = pde_get_unmapped_area(pde, file, orig_addr, len, pgoff, flags); in proc_reg_get_unmapped_area()
479 unuse_pde(pde); in proc_reg_get_unmapped_area()
486 struct proc_dir_entry *pde = PDE(inode); in proc_reg_open() local
492 if (pde_is_permanent(pde)) { in proc_reg_open()
493 open = pde->proc_ops->proc_open; in proc_reg_open()
510 if (!use_pde(pde)) in proc_reg_open()
513 release = pde->proc_ops->proc_release; in proc_reg_open()
522 open = pde->proc_ops->proc_open; in proc_reg_open()
532 spin_lock(&pde->pde_unload_lock); in proc_reg_open()
533 list_add(&pdeo->lh, &pde->pde_openers); in proc_reg_open()
534 spin_unlock(&pde->pde_unload_lock); in proc_reg_open()
540 unuse_pde(pde); in proc_reg_open()
546 struct proc_dir_entry *pde = PDE(inode); in proc_reg_release() local
549 if (pde_is_permanent(pde)) { in proc_reg_release()
552 release = pde->proc_ops->proc_release; in proc_reg_release()
559 spin_lock(&pde->pde_unload_lock); in proc_reg_release()
560 list_for_each_entry(pdeo, &pde->pde_openers, lh) { in proc_reg_release()
562 close_pdeo(pde, pdeo); in proc_reg_release()
566 spin_unlock(&pde->pde_unload_lock); in proc_reg_release()
633 struct proc_dir_entry *pde = PDE(inode); in proc_get_link() local
634 if (!use_pde(pde)) in proc_get_link()
636 set_delayed_call(done, proc_put_link, pde); in proc_get_link()
637 return pde->data; in proc_get_link()
655 PROC_I(inode)->pde = de; in proc_get_inode()