Lines Matching full:uv

54 uefi_variable *uefi_vars_find_variable(uefi_vars_state *uv, QemuUUID guid,  in uefi_vars_find_variable()  argument
59 QTAILQ_FOREACH(var, &uv->variables, next) { in uefi_vars_find_variable()
76 static uefi_variable *add_variable(uefi_vars_state *uv, QemuUUID guid, in add_variable() argument
91 QTAILQ_INSERT_TAIL(&uv->variables, var, next); in add_variable()
95 static void del_variable(uefi_vars_state *uv, uefi_variable *var) in del_variable() argument
101 QTAILQ_REMOVE(&uv->variables, var, next); in del_variable()
119 void uefi_vars_set_variable(uefi_vars_state *uv, QemuUUID guid, in uefi_vars_set_variable() argument
128 old_var = uefi_vars_find_variable(uv, guid, name, name_size); in uefi_vars_set_variable()
130 uv->used_storage -= variable_size(old_var); in uefi_vars_set_variable()
131 del_variable(uv, old_var); in uefi_vars_set_variable()
134 new_var = add_variable(uv, guid, name, name_size, attributes); in uefi_vars_set_variable()
138 uv->used_storage += variable_size(new_var); in uefi_vars_set_variable()
141 void uefi_vars_clear_volatile(uefi_vars_state *uv) in uefi_vars_clear_volatile() argument
145 QTAILQ_FOREACH_SAFE(var, &uv->variables, next, n) { in uefi_vars_clear_volatile()
149 uv->used_storage -= variable_size(var); in uefi_vars_clear_volatile()
150 del_variable(uv, var); in uefi_vars_clear_volatile()
154 void uefi_vars_clear_all(uefi_vars_state *uv) in uefi_vars_clear_all() argument
158 QTAILQ_FOREACH_SAFE(var, &uv->variables, next, n) { in uefi_vars_clear_all()
159 del_variable(uv, var); in uefi_vars_clear_all()
161 uv->used_storage = 0; in uefi_vars_clear_all()
164 void uefi_vars_update_storage(uefi_vars_state *uv) in uefi_vars_update_storage() argument
168 uv->used_storage = 0; in uefi_vars_update_storage()
169 QTAILQ_FOREACH(var, &uv->variables, next) { in uefi_vars_update_storage()
170 uv->used_storage += variable_size(var); in uefi_vars_update_storage()
174 static gboolean check_access(uefi_vars_state *uv, uefi_variable *var) in check_access() argument
176 if (!uv->exit_boot_service) { in check_access()
188 static efi_status check_update(uefi_vars_state *uv, uefi_variable *old_var, in check_update() argument
194 if (!check_access(uv, old_var)) { in check_update()
203 if (!check_access(uv, new_var)) { in check_update()
216 status = uefi_vars_policy_check(uv, new_var, old_var == NULL); in check_update()
220 status = uefi_vars_policy_check(uv, old_var, false); in check_update()
226 status = uefi_vars_check_secure_boot(uv, new_var ?: old_var); in check_update()
263 static size_t uefi_vars_mm_get_variable(uefi_vars_state *uv, mm_header *mhdr, in uefi_vars_mm_get_variable() argument
277 if (va->name_size > uv->max_storage || in uefi_vars_mm_get_variable()
278 va->data_size > uv->max_storage) { in uefi_vars_mm_get_variable()
296 var = uefi_vars_find_variable(uv, va->guid, name, va->name_size); in uefi_vars_mm_get_variable()
302 if (!check_access(uv, var)) { in uefi_vars_mm_get_variable()
310 if (uv->buf_size < length) { in uefi_vars_mm_get_variable()
328 uefi_vars_mm_get_next_variable(uefi_vars_state *uv, mm_header *mhdr, in uefi_vars_mm_get_next_variable() argument
341 if (nv->name_size > uv->max_storage) { in uefi_vars_mm_get_next_variable()
359 var = QTAILQ_FIRST(&uv->variables); in uefi_vars_mm_get_next_variable()
364 var = uefi_vars_find_variable(uv, nv->guid, name, nv->name_size); in uefi_vars_mm_get_next_variable()
370 } while (var && !check_access(uv, var)); in uefi_vars_mm_get_next_variable()
377 if (uv->buf_size < length) { in uefi_vars_mm_get_next_variable()
411 static size_t uefi_vars_mm_set_variable(uefi_vars_state *uv, mm_header *mhdr, in uefi_vars_mm_set_variable() argument
428 if (va->name_size > uv->max_storage || in uefi_vars_mm_set_variable()
429 va->data_size > uv->max_storage) { in uefi_vars_mm_set_variable()
458 old_var = uefi_vars_find_variable(uv, va->guid, name, va->name_size); in uefi_vars_mm_set_variable()
460 new_var = add_variable(uv, va->guid, name, va->name_size, in uefi_vars_mm_set_variable()
469 status = uefi_vars_check_auth_2(uv, new_var, va, data); in uefi_vars_mm_set_variable()
494 del_variable(uv, new_var); in uefi_vars_mm_set_variable()
508 status = check_update(uv, old_var, new_var); in uefi_vars_mm_set_variable()
524 new_storage = uv->used_storage; in uefi_vars_mm_set_variable()
531 if (new_storage > uv->max_storage) { in uefi_vars_mm_set_variable()
541 del_variable(uv, old_var); in uefi_vars_mm_set_variable()
542 uv->used_storage = new_storage; in uefi_vars_mm_set_variable()
545 uefi_vars_json_save(uv); in uefi_vars_mm_set_variable()
549 uefi_vars_auth_init(uv); in uefi_vars_mm_set_variable()
556 del_variable(uv, new_var); in uefi_vars_mm_set_variable()
560 static size_t uefi_vars_mm_variable_info(uefi_vars_state *uv, mm_header *mhdr, in uefi_vars_mm_variable_info() argument
567 if (uv->buf_size < length) { in uefi_vars_mm_variable_info()
571 vi->max_storage_size = uv->max_storage; in uefi_vars_mm_variable_info()
572 vi->free_storage_size = uv->max_storage - uv->used_storage; in uefi_vars_mm_variable_info()
573 vi->max_variable_size = uv->max_storage >> 2; in uefi_vars_mm_variable_info()
581 uefi_vars_mm_get_payload_size(uefi_vars_state *uv, mm_header *mhdr, in uefi_vars_mm_get_payload_size() argument
588 if (uv->buf_size < length) { in uefi_vars_mm_get_payload_size()
592 ps->payload_size = uv->buf_size; in uefi_vars_mm_get_payload_size()
598 uefi_vars_mm_lock_variable(uefi_vars_state *uv, mm_header *mhdr, in uefi_vars_mm_lock_variable() argument
635 uefi_vars_add_policy(uv, pe); in uefi_vars_mm_lock_variable()
642 uint32_t uefi_vars_mm_vars_proto(uefi_vars_state *uv) in uefi_vars_mm_vars_proto() argument
664 mm_header *mhdr = (mm_header *) uv->buffer; in uefi_vars_mm_vars_proto()
665 mm_variable *mvar = (mm_variable *) (uv->buffer + sizeof(*mhdr)); in uefi_vars_mm_vars_proto()
666 void *func = (uv->buffer + sizeof(*mhdr) + sizeof(*mvar)); in uefi_vars_mm_vars_proto()
679 length = uefi_vars_mm_get_variable(uv, mhdr, mvar, func); in uefi_vars_mm_vars_proto()
683 length = uefi_vars_mm_get_next_variable(uv, mhdr, mvar, func); in uefi_vars_mm_vars_proto()
687 length = uefi_vars_mm_set_variable(uv, mhdr, mvar, func); in uefi_vars_mm_vars_proto()
691 length = uefi_vars_mm_variable_info(uv, mhdr, mvar, func); in uefi_vars_mm_vars_proto()
695 length = uefi_vars_mm_lock_variable(uv, mhdr, mvar, func); in uefi_vars_mm_vars_proto()
699 length = uefi_vars_mm_get_payload_size(uv, mhdr, mvar, func); in uefi_vars_mm_vars_proto()
704 uv->ready_to_boot = true; in uefi_vars_mm_vars_proto()
710 uv->exit_boot_service = true; in uefi_vars_mm_vars_proto()