zpool_prop_to_name(ZPOOL_PROP_VERSION)));
spa_close(spa, FTAG);
- strfree(name);
+ kmem_strfree(name);
mutex_exit(&ztest_vdev_lock);
}
extern int kmem_debugging(void);
extern char *kmem_vasprintf(const char *fmt, va_list ap);
extern char *kmem_asprintf(const char *fmt, ...);
-extern char *strdup(const char *str);
-extern void strfree(char *str);
+extern char *kmem_strdup(const char *str);
+extern void kmem_strfree(char *str);
/*
* Memory allocation interfaces
extern char *kmem_vasprintf(const char *fmt, va_list adx);
extern char *kmem_asprintf(const char *fmt, ...);
-#define strfree(str) kmem_free((str), strlen(str) + 1)
+#define kmem_strfree(str) kmem_free((str), strlen(str) + 1)
+#define kmem_strdup(s) strdup(s)
/*
* Hostname information
prov_desc->pd_kstat->ks_update = kcf_prov_kstat_update;
kstat_install(prov_desc->pd_kstat);
}
- strfree(ks_name);
+ kmem_strfree(ks_name);
}
if (prov_desc->pd_prov_type == CRYPTO_HW_PROVIDER)
}
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
parent = kmem_asprintf("%s", kpep->kpe_module);
if ((cp = strrchr(parent, '/')) == NULL) {
- strfree(parent);
+ kmem_strfree(parent);
return (0);
}
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);
}
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;
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);
spa_read_history_clear,
offsetof(spa_read_history_t, srh_node));
- strfree(module);
+ kmem_strfree(module);
}
static void
spa_txg_history_clear,
offsetof(spa_txg_history_t, sth_node));
- strfree(module);
+ kmem_strfree(module);
}
static void
ksp->ks_update = spa_tx_assign_update;
kstat_install(ksp);
}
- strfree(name);
+ kmem_strfree(name);
}
static void
ksp->ks_update = spa_io_history_update;
kstat_install(ksp);
}
- strfree(name);
+ kmem_strfree(name);
}
static void
while (shl->size > size) {
smh = list_remove_head(&shl->procfs_list.pl_list);
if (smh->vdev_path)
- strfree(smh->vdev_path);
+ kmem_strfree(smh->vdev_path);
kmem_free(smh, sizeof (spa_mmp_history_t));
shl->size--;
}
spa_mmp_history_clear,
offsetof(spa_mmp_history_t, smh_node));
- strfree(module);
+ kmem_strfree(module);
}
static void
if (vd) {
smh->vdev_guid = vd->vdev_guid;
if (vd->vdev_path)
- smh->vdev_path = strdup(vd->vdev_path);
+ smh->vdev_path = kmem_strdup(vd->vdev_path);
}
smh->vdev_label = label;
smh->mmp_node_id = mmp_node_id;
kstat_install(ksp);
}
- strfree(name);
+ kmem_strfree(name);
}
static void
kstat_install(ksp);
}
- strfree(name);
+ kmem_strfree(name);
}
static void
argv[2] = kmem_asprintf(SET_SCHEDULER_CMD, device, elevator);
error = call_usermodehelper(argv[0], argv, envp, UMH_NO_WAIT);
- strfree(argv[2]);
+ kmem_strfree(argv[2]);
#endif /* HAVE_ELEVATOR_CHANGE */
if (error) {
zfs_dbgmsg("Unable to set \"%s\" scheduler for %s (%s): %d",
se = kmem_zalloc(sizeof (zfs_snapentry_t), KM_SLEEP);
- se->se_name = strdup(full_name);
- se->se_path = strdup(full_path);
+ se->se_name = kmem_strdup(full_name);
+ se->se_path = kmem_strdup(full_path);
se->se_spa = spa;
se->se_objsetid = objsetid;
se->se_root_dentry = root_dentry;
zfsctl_snapshot_free(zfs_snapentry_t *se)
{
zfs_refcount_destroy(&se->se_refcount);
- strfree(se->se_name);
- strfree(se->se_path);
+ kmem_strfree(se->se_name);
+ kmem_strfree(se->se_path);
kmem_free(se, sizeof (zfs_snapentry_t));
}
return (SET_ERROR(ENOENT));
zfsctl_snapshot_remove(se);
- strfree(se->se_name);
- se->se_name = strdup(new_snapname);
+ kmem_strfree(se->se_name);
+ se->se_name = kmem_strdup(new_snapname);
zfsctl_snapshot_add(se);
zfsctl_snapshot_rele(se);
{
if (vfsp != NULL) {
if (vfsp->vfs_mntpoint != NULL)
- strfree(vfsp->vfs_mntpoint);
+ kmem_strfree(vfsp->vfs_mntpoint);
kmem_free(vfsp, sizeof (vfs_t));
}
char *tmp_mntopts, *p, *t;
int token;
- tmp_mntopts = t = strdup(mntopts);
+ tmp_mntopts = t = kmem_strdup(mntopts);
if (tmp_mntopts == NULL)
return (SET_ERROR(ENOMEM));
token = match_token(p, zpl_tokens, args);
error = zfsvfs_parse_option(p, token, args, tmp_vfsp);
if (error) {
- strfree(tmp_mntopts);
+ kmem_strfree(tmp_mntopts);
zfsvfs_vfs_free(tmp_vfsp);
return (error);
}
}
- strfree(tmp_mntopts);
+ kmem_strfree(tmp_mntopts);
}
*vfsp = tmp_vfsp;
xattr_name = kmem_asprintf("%s%s", XATTR_USER_PREFIX, name);
error = zpl_xattr_get(ip, xattr_name, value, size);
- strfree(xattr_name);
+ kmem_strfree(xattr_name);
return (error);
}
xattr_name = kmem_asprintf("%s%s", XATTR_USER_PREFIX, name);
error = zpl_xattr_set(ip, xattr_name, value, size, flags);
- strfree(xattr_name);
+ kmem_strfree(xattr_name);
return (error);
}
#endif
xattr_name = kmem_asprintf("%s%s", XATTR_TRUSTED_PREFIX, name);
error = zpl_xattr_get(ip, xattr_name, value, size);
- strfree(xattr_name);
+ kmem_strfree(xattr_name);
return (error);
}
#endif
xattr_name = kmem_asprintf("%s%s", XATTR_TRUSTED_PREFIX, name);
error = zpl_xattr_set(ip, xattr_name, value, size, flags);
- strfree(xattr_name);
+ kmem_strfree(xattr_name);
return (error);
}
#endif
xattr_name = kmem_asprintf("%s%s", XATTR_SECURITY_PREFIX, name);
error = zpl_xattr_get(ip, xattr_name, value, size);
- strfree(xattr_name);
+ kmem_strfree(xattr_name);
return (error);
}
#endif
xattr_name = kmem_asprintf("%s%s", XATTR_SECURITY_PREFIX, name);
error = zpl_xattr_set(ip, xattr_name, value, size, flags);
- strfree(xattr_name);
+ kmem_strfree(xattr_name);
return (error);
}
nvlist_t *snaps = fnvlist_alloc();
fnvlist_add_boolean(snaps, longsnap);
- strfree(longsnap);
+ kmem_strfree(longsnap);
err = dsl_dataset_snapshot(snaps, NULL, NULL);
fnvlist_free(snaps);
return (err);
err = dmu_objset_find_impl(spa, child,
func, arg, flags);
dsl_pool_config_enter(dp, FTAG);
- strfree(child);
+ kmem_strfree(child);
if (err != 0)
break;
}
dsl_pool_config_exit(dp, FTAG);
err = func(child, arg);
dsl_pool_config_enter(dp, FTAG);
- strfree(child);
+ kmem_strfree(child);
if (err != 0)
break;
}
kmem_free(compressed, packed_size);
return (propval);
}
- return (strdup(""));
+ return (kmem_strdup(""));
}
/*
dsl_dataset_rele(recv_ds, FTAG);
return (propval);
}
- return (strdup(""));
+ return (kmem_strdup(""));
}
static void
dsl_prop_nvlist_add_string(nv,
ZFS_PROP_RECEIVE_RESUME_TOKEN, childval);
}
- strfree(childval);
+ kmem_strfree(childval);
}
- strfree(propval);
+ kmem_strfree(propval);
}
uint64_t
error = zap_add(mos, zapobj, name, 8, 1, &now, tx);
else
error = zap_remove(mos, zapobj, name, tx);
- strfree(name);
+ kmem_strfree(name);
return (error);
}
if (err == ENOENT)
err = dodefault(prop, intsz, numints, buf);
- strfree(inheritstr);
- strfree(recvdstr);
+ kmem_strfree(inheritstr);
+ kmem_strfree(recvdstr);
return (err);
}
char *inheritstr = kmem_asprintf("%s%s", propname,
ZPROP_INHERIT_SUFFIX);
err = zap_contains(mos, zapobj, inheritstr);
- strfree(inheritstr);
+ kmem_strfree(inheritstr);
if (err != 0 && err != ENOENT)
return (err);
}
ZPROP_RECVD_SUFFIX);
err = zap_lookup(mos, zapobj, recvdstr,
intsz, numints, buf);
- strfree(recvdstr);
+ kmem_strfree(recvdstr);
if (err != ENOENT) {
if (setpoint != NULL && err == 0)
(void) strcpy(setpoint,
panic("unexpected property source: %d", source);
}
- strfree(recvdstr);
+ kmem_strfree(recvdstr);
if (err == ENOENT)
return (0);
cmn_err(CE_PANIC, "unexpected property source: %d", source);
}
- strfree(inheritstr);
- strfree(recvdstr);
+ kmem_strfree(inheritstr);
+ kmem_strfree(recvdstr);
if (isint) {
VERIFY0(dsl_prop_get_int_ds(ds, propname, &intval));
valstr = kmem_asprintf("%s%s", propname,
ZPROP_INHERIT_SUFFIX);
err = zap_contains(mos, propobj, valstr);
- strfree(valstr);
+ kmem_strfree(valstr);
if (err == 0)
continue;
if (err != ENOENT)
snapname, holdname);
fnvlist_add_int32(ddura->ddura_errlist, errtag,
ENOENT);
- strfree(errtag);
+ kmem_strfree(errtag);
}
continue;
}
msg = kmem_vasprintf(fmt, adx);
fnvlist_add_string(nvl, ZPOOL_HIST_INT_STR, msg);
- strfree(msg);
+ kmem_strfree(msg);
fnvlist_add_string(nvl, ZPOOL_HIST_INT_NAME, operation);
fnvlist_add_uint64(nvl, ZPOOL_HIST_TXG, tx->tx_txg);
if (strcmp(strval, "") == 0)
error = ENOENT;
- strfree(childval);
+ kmem_strfree(childval);
}
- strfree(token);
+ kmem_strfree(token);
break;
}
case ZFS_PROP_VOLSIZE:
* prop type as well as the numeric group/user ids based on the string
* following the '@' in the property name. On success, returns 0. On failure,
* returns a non-zero error.
- * 'domain' must be free'd by caller using strfree()
+ * 'domain' must be free'd by caller using kmem_strfree()
*/
static int
parse_userquota_prop(const char *prop_name, zfs_userquota_prop_t *type,
(void) ddi_strtoll(cp, &end, 10, (longlong_t *)rid);
if (*end != '\0') {
- strfree(domain_val);
+ kmem_strfree(domain_val);
return (EINVAL);
}
} else {
}
}
if (domain != NULL)
- strfree(domain);
+ kmem_strfree(domain);
}
dsl_dataset_rele(ds, FTAG);
return (SET_ERROR(EINVAL));
(void) tsd_set(zfs_allow_log_key, NULL);
error = spa_open(poolname, &spa, FTAG);
- strfree(poolname);
+ kmem_strfree(poolname);
if (error != 0)
return (error);
fullname = kmem_asprintf("%s@%s", fsname, snapname);
zfs_unmount_snap(fullname);
- strfree(fullname);
+ kmem_strfree(fullname);
return (0);
}
char *poolname = arg;
if (poolname != NULL)
- strfree(poolname);
+ kmem_strfree(poolname);
}
#ifdef DEBUG
if (error == 0)
(void) strlcpy(zc->zc_value, snap_name,
sizeof (zc->zc_value));
- strfree(snap_name);
- strfree(hold_name);
+ kmem_strfree(snap_name);
+ kmem_strfree(hold_name);
zfs_onexit_fd_rele(zc->zc_cleanup_fd);
return (error);
}
goto out;
/* legacy ioctls can modify zc_name */
- saved_poolname = strdup(zc->zc_name);
+ saved_poolname = kmem_strdup(zc->zc_name);
if (saved_poolname == NULL) {
error = SET_ERROR(ENOMEM);
goto out;
if (error == 0 && vec->zvec_allow_log) {
char *s = tsd_get(zfs_allow_log_key);
if (s != NULL)
- strfree(s);
+ kmem_strfree(s);
(void) tsd_set(zfs_allow_log_key, saved_poolname);
} else {
if (saved_poolname != NULL)
- strfree(saved_poolname);
+ kmem_strfree(saved_poolname);
}
kmem_free(zc, sizeof (zfs_cmd_t));
"%s is not a snapshot name\n", dsname);
} else {
minors_job_t *job;
- char *n = strdup(dsname);
+ char *n = kmem_strdup(dsname);
if (n == NULL)
return (0);
*/
if (strchr(dsname, '@') == 0) {
minors_job_t *job;
- char *n = strdup(dsname);
+ char *n = kmem_strdup(dsname);
if (n == NULL)
return (0);
list_remove(&minors_list, job);
if (!job->error)
ops->zv_create_minor(job->name);
- strfree(job->name);
+ kmem_strfree(job->name);
kmem_free(job, sizeof (minors_job_t));
}
zv->zv_name[oldnamelen],
zv->zv_name + oldnamelen + 1);
ops->zv_rename_minor(zv, name);
- strfree(name);
+ kmem_strfree(name);
}
mutex_exit(&zv->zv_state_lock);