mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
![Stanislaw Gruszka](/assets/img/avatar_default.png)
Use semaphore to protect atm_devs list, as no one need access to it from interrupt context. Avoid race conditions between atm_dev_register(), atm_dev_lookup() and atm_dev_deregister(). Fix double spin_unlock() bug. Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl> Signed-off-by: Chas Williams <chas@cmf.nrl.navy.mil> Signed-off-by: David S. Miller <davem@davemloft.net>
45 lines
894 B
C
45 lines
894 B
C
/* net/atm/resources.h - ATM-related resources */
|
|
|
|
/* Written 1995-1998 by Werner Almesberger, EPFL LRC/ICA */
|
|
|
|
|
|
#ifndef NET_ATM_RESOURCES_H
|
|
#define NET_ATM_RESOURCES_H
|
|
|
|
#include <linux/config.h>
|
|
#include <linux/atmdev.h>
|
|
|
|
|
|
extern struct list_head atm_devs;
|
|
extern struct semaphore atm_dev_mutex;
|
|
|
|
int atm_dev_ioctl(unsigned int cmd, void __user *arg);
|
|
|
|
|
|
#ifdef CONFIG_PROC_FS
|
|
|
|
#include <linux/proc_fs.h>
|
|
|
|
void *atm_dev_seq_start(struct seq_file *seq, loff_t *pos);
|
|
void atm_dev_seq_stop(struct seq_file *seq, void *v);
|
|
void *atm_dev_seq_next(struct seq_file *seq, void *v, loff_t *pos);
|
|
|
|
|
|
int atm_proc_dev_register(struct atm_dev *dev);
|
|
void atm_proc_dev_deregister(struct atm_dev *dev);
|
|
|
|
#else
|
|
|
|
static inline int atm_proc_dev_register(struct atm_dev *dev)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void atm_proc_dev_deregister(struct atm_dev *dev)
|
|
{
|
|
/* nothing */
|
|
}
|
|
|
|
#endif /* CONFIG_PROC_FS */
|
|
|
|
#endif
|