Print this page
13026 SMB and NFS use the global zone's IDMAP when they shouldn't
Change-Id: I3b5f7bc68bb77764aa7cb59a48dd1740a8387ccf

*** 22,31 **** --- 22,35 ---- /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ + /* + * Copyright 2020 Nexenta by DDN, Inc. All rights reserved. + */ + #include <sys/file.h> #include <sys/sunndi.h> #include <sys/sunddi.h> #include <sys/sunldi.h> #include <io/px/px_regs.h>
*** 99,109 **** * module, and as long as it remains untouched by other modules we're OK. */ static ldi_ident_t ldi_identifier; static boolean_t ldi_identifier_valid = B_FALSE; - static cred_t *credentials = NULL; /* Called by _init to determine if it is OK to install driver. */ int fpc_platform_check() { --- 103,112 ----
*** 114,124 **** int fpc_platform_module_init(dev_info_t *dip) { int status; - credentials = crget(); status = ldi_ident_from_dip(dip, &ldi_identifier); if (status == 0) ldi_identifier_valid = B_TRUE; return ((status == 0) ? DDI_SUCCESS : DDI_FAILURE); } --- 117,126 ----
*** 209,220 **** void fpc_platform_module_fini(dev_info_t *dip) { if (ldi_identifier_valid) ldi_ident_release(ldi_identifier); - if (credentials) - crfree(credentials); } fire_perfreg_handle_t fpc_get_perfreg_handle(int devnum) { --- 211,220 ----
*** 224,234 **** kmem_zalloc(sizeof (fire_counter_handle_impl_t), KM_SLEEP); if ((handle_impl->devspec = fpc_get_platform_data_by_number(devnum)) != NULL) { rval = ldi_open_by_name(handle_impl->devspec->nodename, ! OPEN_FLAGS, credentials, &handle_impl->devhandle, ldi_identifier); } if (rval != SUCCESS) { kmem_free(handle_impl, sizeof (fire_counter_handle_impl_t)); --- 224,234 ---- kmem_zalloc(sizeof (fire_counter_handle_impl_t), KM_SLEEP); if ((handle_impl->devspec = fpc_get_platform_data_by_number(devnum)) != NULL) { rval = ldi_open_by_name(handle_impl->devspec->nodename, ! OPEN_FLAGS, kcred, &handle_impl->devhandle, ldi_identifier); } if (rval != SUCCESS) { kmem_free(handle_impl, sizeof (fire_counter_handle_impl_t));
*** 241,251 **** int fpc_free_counter_handle(fire_perfreg_handle_t handle) { fire_counter_handle_impl_t *handle_impl = (fire_counter_handle_impl_t *)handle; ! (void) ldi_close(handle_impl->devhandle, OPEN_FLAGS, credentials); kmem_free(handle_impl, sizeof (fire_counter_handle_impl_t)); return (SUCCESS); } int --- 241,251 ---- int fpc_free_counter_handle(fire_perfreg_handle_t handle) { fire_counter_handle_impl_t *handle_impl = (fire_counter_handle_impl_t *)handle; ! (void) ldi_close(handle_impl->devhandle, OPEN_FLAGS, kcred); kmem_free(handle_impl, sizeof (fire_counter_handle_impl_t)); return (SUCCESS); } int
*** 279,289 **** prg.acc_attr = PCITOOL_ACC_ATTR_SIZE_8 | PCITOOL_ACC_ATTR_ENDN_BIG; prg.data = *reg_data; /* Read original value. */ if (((rval = ldi_ioctl(handle_impl->devhandle, cmd, (intptr_t)&prg, ! FKIOCTL, credentials, &ioctl_rval)) == SUCCESS) && (!is_write)) { *reg_data = prg.data; } return (rval); } --- 279,289 ---- prg.acc_attr = PCITOOL_ACC_ATTR_SIZE_8 | PCITOOL_ACC_ATTR_ENDN_BIG; prg.data = *reg_data; /* Read original value. */ if (((rval = ldi_ioctl(handle_impl->devhandle, cmd, (intptr_t)&prg, ! FKIOCTL, kcred, &ioctl_rval)) == SUCCESS) && (!is_write)) { *reg_data = prg.data; } return (rval); }
*** 320,330 **** prg.acc_attr = PCITOOL_ACC_ATTR_SIZE_8 | PCITOOL_ACC_ATTR_ENDN_BIG; prg.data = *value; if (((rval = ldi_ioctl(handle_impl->devhandle, command, (intptr_t)&prg, ! FKIOCTL, credentials, &ioctl_rval)) == SUCCESS) && (!is_write)) { *value = prg.data; } return (rval); } --- 320,330 ---- prg.acc_attr = PCITOOL_ACC_ATTR_SIZE_8 | PCITOOL_ACC_ATTR_ENDN_BIG; prg.data = *value; if (((rval = ldi_ioctl(handle_impl->devhandle, command, (intptr_t)&prg, ! FKIOCTL, kcred, &ioctl_rval)) == SUCCESS) && (!is_write)) { *value = prg.data; } return (rval); }