/* See the Unified Extensible Firmware Interface (UEFI) specification for details.  */
static efi_status_t EFIAPI efi_cin_unregister_key_notify(struct efi_simple_text_input_ex_protocol *this, void *notification_handle)
/* See the Unified Extensible Firmware Interface (UEFI) specification for details.  */
static efi_status_t EFIAPI efi_cin_unregister_key_notify(struct efi_simple_text_input_ex_protocol *this, void *notification_handle)
{
	efi_status_t ret = EFI_INVALID_PARAMETER;
	struct efi_cin_notify_function *item, *notify_function =
			notification_handle;
	EFI_ENTRY("%p, %p", this, notification_handle);
	if (!this || !notification_handle)
		goto out;
	list_for_each_entry(item, &cin_notify_functions, link) {
		if (item == notify_function) {
			ret = EFI_SUCCESS;
			break;
		}
	}
	if (ret != EFI_SUCCESS)
		goto out;
	list_del(&notify_function->link);
	free(notify_function);
out:
	return EFI_EXIT(ret);
}