Print this page
5253 kmem_alloc/kmem_zalloc won't fail with KM_SLEEP
5254 getrbuf won't fail with KM_SLEEP


9121         uint_t i;
9122         int error;
9123         uint_t attr;
9124         uint_t oattr;
9125         crypto_attr_type_t type;
9126         size_t old_len, new_len;
9127         offset_t offset;
9128 
9129         if (nattr > DPROV_MAX_ATTR)
9130                 return (CRYPTO_HOST_MEMORY);
9131 
9132         if (!force) {
9133                 /* verify that object can be created */
9134                 if ((error = dprov_template_can_create(session, template,
9135                     nattr, check_for_secret)) != CRYPTO_SUCCESS)
9136                         return (error);
9137         }
9138 
9139         /* allocate new object */
9140         object = kmem_zalloc(sizeof (dprov_object_t), KM_SLEEP);
9141         if (object == NULL)
9142                 return (CRYPTO_HOST_MEMORY);
9143 
9144         /* is it a token object? */
9145         /* check CKA_TOKEN attribute value */
9146         error = dprov_get_template_attr_boolean(template, nattr,
9147             DPROV_CKA_TOKEN, &is_token);
9148         if (error == CRYPTO_SUCCESS && is_token) {
9149                 /* token object, add it to the per-instance object table */
9150                 for (i = 0; i < DPROV_MAX_OBJECTS; i++)
9151                         if (softc->ds_objects[i] == NULL)
9152                                 break;
9153                 if (i == DPROV_MAX_OBJECTS)
9154                         /* no free slot */
9155                         return (CRYPTO_HOST_MEMORY);
9156                 softc->ds_objects[i] = object;
9157                 object->do_token_idx = i;
9158                 DPROV_OBJECT_REFHOLD(object);
9159         }
9160 
9161         /* add object to session object table */
9162         for (i = 0; i < DPROV_MAX_OBJECTS; i++)




9121         uint_t i;
9122         int error;
9123         uint_t attr;
9124         uint_t oattr;
9125         crypto_attr_type_t type;
9126         size_t old_len, new_len;
9127         offset_t offset;
9128 
9129         if (nattr > DPROV_MAX_ATTR)
9130                 return (CRYPTO_HOST_MEMORY);
9131 
9132         if (!force) {
9133                 /* verify that object can be created */
9134                 if ((error = dprov_template_can_create(session, template,
9135                     nattr, check_for_secret)) != CRYPTO_SUCCESS)
9136                         return (error);
9137         }
9138 
9139         /* allocate new object */
9140         object = kmem_zalloc(sizeof (dprov_object_t), KM_SLEEP);


9141 
9142         /* is it a token object? */
9143         /* check CKA_TOKEN attribute value */
9144         error = dprov_get_template_attr_boolean(template, nattr,
9145             DPROV_CKA_TOKEN, &is_token);
9146         if (error == CRYPTO_SUCCESS && is_token) {
9147                 /* token object, add it to the per-instance object table */
9148                 for (i = 0; i < DPROV_MAX_OBJECTS; i++)
9149                         if (softc->ds_objects[i] == NULL)
9150                                 break;
9151                 if (i == DPROV_MAX_OBJECTS)
9152                         /* no free slot */
9153                         return (CRYPTO_HOST_MEMORY);
9154                 softc->ds_objects[i] = object;
9155                 object->do_token_idx = i;
9156                 DPROV_OBJECT_REFHOLD(object);
9157         }
9158 
9159         /* add object to session object table */
9160         for (i = 0; i < DPROV_MAX_OBJECTS; i++)