diff options
Diffstat (limited to 'package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c')
-rw-r--r-- | package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c new file mode 100644 index 000000000..ab96e3189 --- /dev/null +++ b/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_core_c @@ -0,0 +1,75 @@ + - old lock initialisers got renamed + - init_MUTEX_LOCKED got dropped, use the real sema_init instead + - force sysfs-object creation +--- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/core.c 2009-06-09 10:08:45.000000000 +0200 ++++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/core.c 2011-07-20 16:42:18.342001559 +0200 +@@ -23,10 +23,10 @@ static char *mISDN_core_version = MISDN + static void (*dt_new_frame) (mISDNstack_t *stack, enum mISDN_dt_type type, struct sk_buff *skb, int duplicate_skb) = NULL; + + LIST_HEAD(mISDN_objectlist); +-static rwlock_t mISDN_objects_lock = RW_LOCK_UNLOCKED; ++static rwlock_t mISDN_objects_lock = __RW_LOCK_UNLOCKED(old_style_rw_init); + + LIST_HEAD(mISDN_modulelist); +-static rwlock_t mISDN_modules_lock = RW_LOCK_UNLOCKED; ++static rwlock_t mISDN_modules_lock = __RW_LOCK_UNLOCKED(old_style_rw_init); + struct modulelist { + struct list_head list; + struct module *module; +@@ -35,7 +35,7 @@ struct modulelist { + int core_debug; + + static u_char entityarray[MISDN_MAX_ENTITY/8]; +-static spinlock_t entity_lock = SPIN_LOCK_UNLOCKED; ++static spinlock_t entity_lock = __SPIN_LOCK_UNLOCKED(old_style_spin_init); + + static uint debug; + static int obj_id; +@@ -724,7 +724,7 @@ int mISDN_register(mISDNobject_t *obj) { + obj->id); + if (core_debug & DEBUG_CORE_FUNC) + printk(KERN_DEBUG "mISDN_register: obj(%p)\n", obj); +-#ifndef SYSFS_SUPPORT_2_6_24 ++//#ifndef SYSFS_SUPPORT_2_6_24 + retval = mISDN_register_sysfs_obj(obj); + if (retval) { + printk(KERN_ERR "mISDN_register class_device_register return(%d)\n", retval); +@@ -732,7 +732,7 @@ int mISDN_register(mISDNobject_t *obj) { + list_del(&obj->list); + write_unlock_irqrestore(&mISDN_objects_lock, flags); + } +-#endif ++//#endif + return(retval); + } + +@@ -758,9 +758,10 @@ int mISDN_unregister(mISDNobject_t *obj) + if (core_debug & DEBUG_CORE_FUNC) + printk(KERN_DEBUG "mISDN_unregister: mISDN_objectlist(%p<-%p->%p)\n", + mISDN_objectlist.prev, &mISDN_objectlist, mISDN_objectlist.next); ++ mISDN_unregister_sysfs_obj(obj); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) + #ifdef SYSFS_SUPPORT +- device_unregister(&obj->class_dev); ++ //device_unregister(&obj->class_dev); + #endif + #else + class_device_unregister(&obj->class_dev); +@@ -774,7 +775,7 @@ mISDNInit(void) + struct semaphore sem; + int err; + +- init_MUTEX_LOCKED(&sem); ++ sema_init(&sem, 0); + + printk(KERN_INFO "Modular ISDN Stack core version (%s) revision (%s)\n", mISDN_core_version, mISDN_core_revision); + core_debug = debug; +@@ -817,7 +818,7 @@ sysfs_fail: + void mISDN_cleanup(void) { + struct semaphore sem; + +- init_MUTEX_LOCKED(&sem); ++ sema_init(&sem, 0); + + free_mISDNdev(); + if (!list_empty(&mISDN_objectlist)) { |