diff options
-rw-r--r-- | drivers/dahdi/dahdi-base.c | 29 | ||||
-rw-r--r-- | include/dahdi/kernel.h | 3 |
2 files changed, 32 insertions, 0 deletions
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index e6f2136..a03cbc8 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -9058,5 +9058,34 @@ static void __exit dahdi_cleanup(void) #endif } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) +char *dahdi_kasprintf(gfp_t gfp, const char *fmt, ...) +{ + va_list ap; + char *p; + char *temp; + unsigned int len; + + temp = kmalloc(PAGE_SIZE, GFP_KERNEL); + if (!temp) + return NULL; + + va_start(ap, fmt); + len = vsnprintf(temp, PAGE_SIZE, fmt, ap); + va_end(ap); + + p = kzalloc(len + 1, gfp); + if (!p) { + kfree(temp); + return NULL; + } + + memcpy(p, temp, len + 1); + kfree(temp); + return p; +} +EXPORT_SYMBOL(dahdi_kasprintf); +#endif + module_init(dahdi_init); module_exit(dahdi_cleanup); diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h index b6864ee..5bcf10d 100644 --- a/include/dahdi/kernel.h +++ b/include/dahdi/kernel.h @@ -1285,6 +1285,8 @@ static inline void list_replace(struct list_head *old, struct list_head *new) #define kzalloc(a, b) kcalloc(1, a, b) #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) #define synchronize_rcu() synchronize_kernel() +#define kasprintf dahdi_kasprintf +char *dahdi_kasprintf(gfp_t gfp, const char *fmt, ...); #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11) #if !defined(HAVE_WAIT_FOR_COMPLETION_TIMEOUT) static inline unsigned long @@ -1301,6 +1303,7 @@ wait_for_completion_interruptible_timeout(struct completion *x, return timeout; } #endif + #endif /* 2.6.11 */ #endif /* 2.6.12 */ #endif /* 2.6.14 */ |