Loading drivers/isdn/capi/kcapi.c +22 −27 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ static char capi_manufakturer[64] = "AVM Berlin"; #define NCCI2CTRL(ncci) (((ncci) >> 24) & 0x7f) LIST_HEAD(capi_drivers); DEFINE_RWLOCK(capi_drivers_list_lock); DEFINE_MUTEX(capi_drivers_lock); static DEFINE_RWLOCK(application_lock); static DEFINE_MUTEX(controller_mutex); Loading Loading @@ -540,11 +540,9 @@ EXPORT_SYMBOL(detach_capi_ctr); void register_capi_driver(struct capi_driver *driver) { unsigned long flags; write_lock_irqsave(&capi_drivers_list_lock, flags); mutex_lock(&capi_drivers_lock); list_add_tail(&driver->list, &capi_drivers); write_unlock_irqrestore(&capi_drivers_list_lock, flags); mutex_unlock(&capi_drivers_lock); } EXPORT_SYMBOL(register_capi_driver); Loading @@ -558,11 +556,9 @@ EXPORT_SYMBOL(register_capi_driver); void unregister_capi_driver(struct capi_driver *driver) { unsigned long flags; write_lock_irqsave(&capi_drivers_list_lock, flags); mutex_lock(&capi_drivers_lock); list_del(&driver->list); write_unlock_irqrestore(&capi_drivers_list_lock, flags); mutex_unlock(&capi_drivers_lock); } EXPORT_SYMBOL(unregister_capi_driver); Loading Loading @@ -899,7 +895,6 @@ static int old_capi_manufacturer(unsigned int cmd, void __user *data) struct capi_driver *driver = NULL; capiloaddata ldata; struct list_head *l; unsigned long flags; int retval; switch (cmd) { Loading @@ -919,7 +914,8 @@ static int old_capi_manufacturer(unsigned int cmd, void __user *data) cparams.irq = cdef.irq; cparams.cardnr = cdef.cardnr; read_lock_irqsave(&capi_drivers_list_lock, flags); mutex_lock(&capi_drivers_lock); switch (cdef.cardtype) { case AVM_CARDTYPE_B1: list_for_each(l, &capi_drivers) { Loading @@ -940,18 +936,15 @@ static int old_capi_manufacturer(unsigned int cmd, void __user *data) break; } if (!driver) { read_unlock_irqrestore(&capi_drivers_list_lock, flags); printk(KERN_ERR "kcapi: driver not loaded.\n"); return -EIO; } if (!driver->add_card) { read_unlock_irqrestore(&capi_drivers_list_lock, flags); retval = -EIO; } else if (!driver->add_card) { printk(KERN_ERR "kcapi: driver has no add card function.\n"); return -EIO; } retval = -EIO; } else retval = driver->add_card(driver, &cparams); read_unlock_irqrestore(&capi_drivers_list_lock, flags); mutex_unlock(&capi_drivers_lock); return retval; case AVMB1_LOAD: Loading Loading @@ -1107,6 +1100,8 @@ int capi20_manufacturer(unsigned int cmd, void __user *data) cparams.cardtype = 0; cdef.driver[sizeof(cdef.driver)-1] = 0; mutex_lock(&capi_drivers_lock); list_for_each(l, &capi_drivers) { driver = list_entry(l, struct capi_driver, list); if (strcmp(driver->name, cdef.driver) == 0) Loading @@ -1115,15 +1110,15 @@ int capi20_manufacturer(unsigned int cmd, void __user *data) if (driver == NULL) { printk(KERN_ERR "kcapi: driver \"%s\" not loaded.\n", cdef.driver); return -ESRCH; } if (!driver->add_card) { retval = -ESRCH; } else if (!driver->add_card) { printk(KERN_ERR "kcapi: driver \"%s\" has no add card function.\n", cdef.driver); return -EIO; } retval = -EIO; } else retval = driver->add_card(driver, &cparams); return driver->add_card(driver, &cparams); mutex_unlock(&capi_drivers_lock); return retval; } default: Loading drivers/isdn/capi/kcapi.h +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ enum { }; extern struct list_head capi_drivers; extern rwlock_t capi_drivers_list_lock; extern struct mutex capi_drivers_lock; extern struct capi20_appl *capi_applications[CAPI_MAXAPPL]; extern struct capi_ctr *capi_controller[CAPI_MAXCONTR]; Loading drivers/isdn/capi/kcapi_proc.c +4 −4 Original line number Diff line number Diff line Loading @@ -238,9 +238,9 @@ static const struct file_operations proc_applstats_ops = { // --------------------------------------------------------------------------- static void *capi_driver_start(struct seq_file *seq, loff_t *pos) __acquires(&capi_drivers_list_lock) __acquires(&capi_drivers_lock) { read_lock(&capi_drivers_list_lock); mutex_lock(&capi_drivers_lock); return seq_list_start(&capi_drivers, *pos); } Loading @@ -250,9 +250,9 @@ static void *capi_driver_next(struct seq_file *seq, void *v, loff_t *pos) } static void capi_driver_stop(struct seq_file *seq, void *v) __releases(&capi_drivers_list_lock) __releases(&capi_drivers_lock) { read_unlock(&capi_drivers_list_lock); mutex_unlock(&capi_drivers_lock); } static int capi_driver_show(struct seq_file *seq, void *v) Loading Loading
drivers/isdn/capi/kcapi.c +22 −27 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ static char capi_manufakturer[64] = "AVM Berlin"; #define NCCI2CTRL(ncci) (((ncci) >> 24) & 0x7f) LIST_HEAD(capi_drivers); DEFINE_RWLOCK(capi_drivers_list_lock); DEFINE_MUTEX(capi_drivers_lock); static DEFINE_RWLOCK(application_lock); static DEFINE_MUTEX(controller_mutex); Loading Loading @@ -540,11 +540,9 @@ EXPORT_SYMBOL(detach_capi_ctr); void register_capi_driver(struct capi_driver *driver) { unsigned long flags; write_lock_irqsave(&capi_drivers_list_lock, flags); mutex_lock(&capi_drivers_lock); list_add_tail(&driver->list, &capi_drivers); write_unlock_irqrestore(&capi_drivers_list_lock, flags); mutex_unlock(&capi_drivers_lock); } EXPORT_SYMBOL(register_capi_driver); Loading @@ -558,11 +556,9 @@ EXPORT_SYMBOL(register_capi_driver); void unregister_capi_driver(struct capi_driver *driver) { unsigned long flags; write_lock_irqsave(&capi_drivers_list_lock, flags); mutex_lock(&capi_drivers_lock); list_del(&driver->list); write_unlock_irqrestore(&capi_drivers_list_lock, flags); mutex_unlock(&capi_drivers_lock); } EXPORT_SYMBOL(unregister_capi_driver); Loading Loading @@ -899,7 +895,6 @@ static int old_capi_manufacturer(unsigned int cmd, void __user *data) struct capi_driver *driver = NULL; capiloaddata ldata; struct list_head *l; unsigned long flags; int retval; switch (cmd) { Loading @@ -919,7 +914,8 @@ static int old_capi_manufacturer(unsigned int cmd, void __user *data) cparams.irq = cdef.irq; cparams.cardnr = cdef.cardnr; read_lock_irqsave(&capi_drivers_list_lock, flags); mutex_lock(&capi_drivers_lock); switch (cdef.cardtype) { case AVM_CARDTYPE_B1: list_for_each(l, &capi_drivers) { Loading @@ -940,18 +936,15 @@ static int old_capi_manufacturer(unsigned int cmd, void __user *data) break; } if (!driver) { read_unlock_irqrestore(&capi_drivers_list_lock, flags); printk(KERN_ERR "kcapi: driver not loaded.\n"); return -EIO; } if (!driver->add_card) { read_unlock_irqrestore(&capi_drivers_list_lock, flags); retval = -EIO; } else if (!driver->add_card) { printk(KERN_ERR "kcapi: driver has no add card function.\n"); return -EIO; } retval = -EIO; } else retval = driver->add_card(driver, &cparams); read_unlock_irqrestore(&capi_drivers_list_lock, flags); mutex_unlock(&capi_drivers_lock); return retval; case AVMB1_LOAD: Loading Loading @@ -1107,6 +1100,8 @@ int capi20_manufacturer(unsigned int cmd, void __user *data) cparams.cardtype = 0; cdef.driver[sizeof(cdef.driver)-1] = 0; mutex_lock(&capi_drivers_lock); list_for_each(l, &capi_drivers) { driver = list_entry(l, struct capi_driver, list); if (strcmp(driver->name, cdef.driver) == 0) Loading @@ -1115,15 +1110,15 @@ int capi20_manufacturer(unsigned int cmd, void __user *data) if (driver == NULL) { printk(KERN_ERR "kcapi: driver \"%s\" not loaded.\n", cdef.driver); return -ESRCH; } if (!driver->add_card) { retval = -ESRCH; } else if (!driver->add_card) { printk(KERN_ERR "kcapi: driver \"%s\" has no add card function.\n", cdef.driver); return -EIO; } retval = -EIO; } else retval = driver->add_card(driver, &cparams); return driver->add_card(driver, &cparams); mutex_unlock(&capi_drivers_lock); return retval; } default: Loading
drivers/isdn/capi/kcapi.h +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ enum { }; extern struct list_head capi_drivers; extern rwlock_t capi_drivers_list_lock; extern struct mutex capi_drivers_lock; extern struct capi20_appl *capi_applications[CAPI_MAXAPPL]; extern struct capi_ctr *capi_controller[CAPI_MAXCONTR]; Loading
drivers/isdn/capi/kcapi_proc.c +4 −4 Original line number Diff line number Diff line Loading @@ -238,9 +238,9 @@ static const struct file_operations proc_applstats_ops = { // --------------------------------------------------------------------------- static void *capi_driver_start(struct seq_file *seq, loff_t *pos) __acquires(&capi_drivers_list_lock) __acquires(&capi_drivers_lock) { read_lock(&capi_drivers_list_lock); mutex_lock(&capi_drivers_lock); return seq_list_start(&capi_drivers, *pos); } Loading @@ -250,9 +250,9 @@ static void *capi_driver_next(struct seq_file *seq, void *v, loff_t *pos) } static void capi_driver_stop(struct seq_file *seq, void *v) __releases(&capi_drivers_list_lock) __releases(&capi_drivers_lock) { read_unlock(&capi_drivers_list_lock); mutex_unlock(&capi_drivers_lock); } static int capi_driver_show(struct seq_file *seq, void *v) Loading