diff options
-rw-r--r-- | drivers/dahdi/wctdm24xxp/base.c | 6 | ||||
-rw-r--r-- | drivers/dahdi/wcte12xp/base.c | 3 | ||||
-rw-r--r-- | include/dahdi/kernel.h | 6 |
3 files changed, 14 insertions, 1 deletions
diff --git a/drivers/dahdi/wctdm24xxp/base.c b/drivers/dahdi/wctdm24xxp/base.c index 976d744..73f0db6 100644 --- a/drivers/dahdi/wctdm24xxp/base.c +++ b/drivers/dahdi/wctdm24xxp/base.c @@ -3584,6 +3584,9 @@ static int wctdm_locate_modules(struct wctdm *wc) /* Reset modules */ for (x=0;x<wc->cards;x++) { int sane=0,ret=0,readi=0; + + if (fatal_signal_pending(current)) + break; retry: /* Init with Auto Calibration */ if (!(ret = wctdm_init_proslic(wc, x, 0, 0, sane))) { @@ -3645,6 +3648,9 @@ retry: } } + if (fatal_signal_pending(current)) + return -EINTR; + if (!vpmsupport) { printk(KERN_NOTICE "VPM: Support Disabled\n"); } else if (!wctdm_vpm_init(wc)) { diff --git a/drivers/dahdi/wcte12xp/base.c b/drivers/dahdi/wcte12xp/base.c index e365845..d153234 100644 --- a/drivers/dahdi/wcte12xp/base.c +++ b/drivers/dahdi/wcte12xp/base.c @@ -38,6 +38,7 @@ #include <linux/interrupt.h> #include <linux/workqueue.h> #include <linux/delay.h> +#include <linux/sched.h> #include <dahdi/kernel.h> @@ -1395,7 +1396,7 @@ static int t1_hardware_post_init(struct t1 *wc) t1_setleds(wc, wc->ledstate); #ifdef VPM_SUPPORT - if (vpmsupport) { + if (!fatal_signal_pending(current) && vpmsupport) { memset(&options, 0, sizeof(options)); options.debug = debug; options.vpmnlptype = vpmnlptype; diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h index 96c4076..9d87728 100644 --- a/include/dahdi/kernel.h +++ b/include/dahdi/kernel.h @@ -1176,6 +1176,11 @@ static inline short dahdi_txtone_nextsample(struct dahdi_chan *ss) #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31) #define KERN_CONT "" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25) +static inline int fatal_signal_pending(struct task_struct *p) +{ + return signal_pending(p) && sigismember(&p->pending.signal, SIGKILL); +} #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18) static inline void list_replace(struct list_head *old, struct list_head *new) { @@ -1202,6 +1207,7 @@ wait_for_completion_timeout(struct completion *x, unsigned long timeout) #endif /* 2.6.11 */ #endif /* 2.6.14 */ #endif /* 2.6.18 */ +#endif /* 2.6.25 */ #endif /* 2.6.31 */ #ifndef DMA_BIT_MASK |