diff --git a/libfwupdplugin/fu-bios-settings.c b/libfwupdplugin/fu-bios-settings.c index 2015fb117..d0a692565 100644 --- a/libfwupdplugin/fu-bios-settings.c +++ b/libfwupdplugin/fu-bios-settings.c @@ -508,7 +508,7 @@ gboolean fu_bios_settings_get_pending_reboot(FuBiosSettings *self, gboolean *result, GError **error) { FwupdBiosSetting *attr; - const gchar *data; + g_autofree gchar *data = NULL; guint64 val = 0; g_return_val_if_fail(result != NULL, FALSE); @@ -532,7 +532,10 @@ fu_bios_settings_get_pending_reboot(FuBiosSettings *self, gboolean *result, GErr return FALSE; } - data = fwupd_bios_setting_get_current_value(attr); + /* refresh/re-read */ + if (!fu_bios_setting_get_key(attr, NULL, &data, error)) + return FALSE; + fwupd_bios_setting_set_current_value(attr, data); if (!fu_strtoull(data, &val, 0, G_MAXUINT32, error)) return FALSE; diff --git a/src/fu-engine.c b/src/fu-engine.c index 114aded2e..8e3df24e4 100644 --- a/src/fu-engine.c +++ b/src/fu-engine.c @@ -892,7 +892,7 @@ fu_engine_modify_single_bios_setting(FuEngine *self, gboolean fu_engine_modify_bios_settings(FuEngine *self, GHashTable *settings, GError **error) { - FwupdBiosSetting *pending; + g_autoptr(FuBiosSettings) bios_settings = fu_context_get_bios_settings(self->ctx); gboolean changed = FALSE; GHashTableIter iter; gpointer key, value; @@ -931,16 +931,9 @@ fu_engine_modify_bios_settings(FuEngine *self, GHashTable *settings, GError **er return FALSE; } - pending = fu_context_get_bios_setting(self->ctx, FWUPD_BIOS_SETTING_PENDING_REBOOT); - if (pending == NULL) { - g_set_error(error, - FWUPD_ERROR, - FWUPD_ERROR_NOT_FOUND, - "attribute %s not found", - FWUPD_BIOS_SETTING_PENDING_REBOOT); + if (!fu_bios_settings_get_pending_reboot(bios_settings, &changed, error)) return FALSE; - } - fwupd_bios_setting_set_current_value(pending, "1"); + g_debug("pending_reboot is now %d", changed); return TRUE; }