mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 18:40:43 +03:00
Fix strdup conflict on other platforms
In the FreeBSD kernel the strdup signature is: ``` char *strdup(const char *__restrict, struct malloc_type *); ``` It's unfortunate that the developers have chosen to change the signature of libc functions - but it's what I have to deal with. Reviewed-by: Jorgen Lundman <lundman@lundman.net> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Matt Macy <mmacy@FreeBSD.org> Closes #9433
This commit is contained in:
committed by
Brian Behlendorf
parent
c5858ff946
commit
e4f5fa1229
@@ -120,18 +120,18 @@ __strdup(const char *str, int flags)
|
||||
}
|
||||
|
||||
char *
|
||||
strdup(const char *str)
|
||||
kmem_strdup(const char *str)
|
||||
{
|
||||
return (__strdup(str, KM_SLEEP));
|
||||
}
|
||||
EXPORT_SYMBOL(strdup);
|
||||
EXPORT_SYMBOL(kmem_strdup);
|
||||
|
||||
void
|
||||
strfree(char *str)
|
||||
kmem_strfree(char *str)
|
||||
{
|
||||
kfree(str);
|
||||
}
|
||||
EXPORT_SYMBOL(strfree);
|
||||
EXPORT_SYMBOL(kmem_strfree);
|
||||
|
||||
/*
|
||||
* General purpose unified implementation of kmem_alloc(). It is an
|
||||
|
||||
@@ -631,7 +631,7 @@ kstat_detect_collision(kstat_proc_entry_t *kpep)
|
||||
parent = kmem_asprintf("%s", kpep->kpe_module);
|
||||
|
||||
if ((cp = strrchr(parent, '/')) == NULL) {
|
||||
strfree(parent);
|
||||
kmem_strfree(parent);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -639,13 +639,13 @@ kstat_detect_collision(kstat_proc_entry_t *kpep)
|
||||
if ((module = kstat_find_module(parent)) != NULL) {
|
||||
list_for_each_entry(tmp, &module->ksm_kstat_list, kpe_list) {
|
||||
if (strncmp(tmp->kpe_name, cp+1, KSTAT_STRLEN) == 0) {
|
||||
strfree(parent);
|
||||
kmem_strfree(parent);
|
||||
return (EEXIST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
strfree(parent);
|
||||
kmem_strfree(parent);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1038,7 +1038,7 @@ taskq_create(const char *name, int nthreads, pri_t pri,
|
||||
spin_lock_init(&tq->tq_lock);
|
||||
INIT_LIST_HEAD(&tq->tq_thread_list);
|
||||
INIT_LIST_HEAD(&tq->tq_active_list);
|
||||
tq->tq_name = strdup(name);
|
||||
tq->tq_name = kmem_strdup(name);
|
||||
tq->tq_nactive = 0;
|
||||
tq->tq_nthreads = 0;
|
||||
tq->tq_nspawn = 0;
|
||||
@@ -1178,7 +1178,7 @@ taskq_destroy(taskq_t *tq)
|
||||
|
||||
spin_unlock_irqrestore(&tq->tq_lock, flags);
|
||||
|
||||
strfree(tq->tq_name);
|
||||
kmem_strfree(tq->tq_name);
|
||||
kmem_free(tq, sizeof (taskq_t));
|
||||
}
|
||||
EXPORT_SYMBOL(taskq_destroy);
|
||||
|
||||
Reference in New Issue
Block a user