summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/lofi.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/lofi.c')
-rw-r--r--usr/src/uts/common/io/lofi.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/usr/src/uts/common/io/lofi.c b/usr/src/uts/common/io/lofi.c
index abafd483aa..049a0235fd 100644
--- a/usr/src/uts/common/io/lofi.c
+++ b/usr/src/uts/common/io/lofi.c
@@ -373,8 +373,8 @@ lofi_destroy(struct lofi_state *lsp, cred_t *credp)
lsp->ls_uncomp_seg_sz = 0;
}
- rctl_decr_lofi(lsp->ls_zone, 1);
- zone_rele(lsp->ls_zone);
+ rctl_decr_lofi(lsp->ls_zone.zref_zone, 1);
+ zone_rele_ref(&lsp->ls_zone, ZONE_REF_LOFI);
mutex_destroy(&lsp->ls_comp_cache_lock);
mutex_destroy(&lsp->ls_comp_bufs_lock);
@@ -418,7 +418,7 @@ lofi_zone_shutdown(zoneid_t zoneid, void *arg)
/* lofi_destroy() frees lsp */
next = list_next(&lofi_list, lsp);
- if (lsp->ls_zone->zone_id != zoneid)
+ if (lsp->ls_zone.zref_zone->zone_id != zoneid)
continue;
/*
@@ -510,7 +510,7 @@ lofi_close(dev_t dev, int flag, int otyp, struct cred *credp)
* out of the door.
*/
if (!is_opened(lsp) && (lsp->ls_cleanup || lsp->ls_vp == NULL)) {
- lofi_free_dev(dev);
+ lofi_free_dev(lsp->ls_dev);
lofi_destroy(lsp, credp);
}
@@ -1610,7 +1610,7 @@ static int
lofi_access(struct lofi_state *lsp)
{
ASSERT(MUTEX_HELD(&lofi_lock));
- if (INGLOBALZONE(curproc) || lsp->ls_zone == curproc->p_zone)
+ if (INGLOBALZONE(curproc) || lsp->ls_zone.zref_zone == curzone)
return (0);
return (EPERM);
}
@@ -2184,8 +2184,8 @@ lofi_map_file(dev_t dev, struct lofi_ioctl *ulip, int pickminor,
newdev = makedevice(getmajor(dev), minor);
lsp->ls_dev = newdev;
- lsp->ls_zone = zone_find_by_id(getzoneid());
- ASSERT(lsp->ls_zone != NULL);
+ zone_init_ref(&lsp->ls_zone);
+ zone_hold_ref(curzone, &lsp->ls_zone, ZONE_REF_LOFI);
lsp->ls_uncomp_seg_sz = 0;
lsp->ls_comp_algorithm[0] = '\0';
lsp->ls_crypto_offset = 0;
@@ -2330,7 +2330,7 @@ err:
* unmap a file.
*/
static int
-lofi_unmap_file(dev_t dev, struct lofi_ioctl *ulip, int byfilename,
+lofi_unmap_file(struct lofi_ioctl *ulip, int byfilename,
struct cred *credp, int ioctl_flag)
{
struct lofi_state *lsp;
@@ -2409,7 +2409,7 @@ lofi_unmap_file(dev_t dev, struct lofi_ioctl *ulip, int byfilename,
}
out:
- lofi_free_dev(dev);
+ lofi_free_dev(lsp->ls_dev);
lofi_destroy(lsp, credp);
mutex_exit(&lofi_lock);
@@ -2533,11 +2533,11 @@ lofi_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *credp,
case LOFI_UNMAP_FILE:
if ((flag & FWRITE) == 0)
return (EPERM);
- return (lofi_unmap_file(dev, lip, 1, credp, flag));
+ return (lofi_unmap_file(lip, 1, credp, flag));
case LOFI_UNMAP_FILE_MINOR:
if ((flag & FWRITE) == 0)
return (EPERM);
- return (lofi_unmap_file(dev, lip, 0, credp, flag));
+ return (lofi_unmap_file(lip, 0, credp, flag));
case LOFI_GET_FILENAME:
return (lofi_get_info(dev, lip, LOFI_GET_FILENAME,
credp, flag));