diff --git a/util/grub-editenv.c b/util/grub-editenv.c index 7d4981d67..7f39ff120 100644 --- a/util/grub-editenv.c +++ b/util/grub-editenv.c @@ -499,18 +499,32 @@ static void unset_variables (const char *name, int argc, char *argv[]) { grub_envblk_t envblk; + grub_envblk_t envblk_on_block = NULL; envblk = open_envblk_file (name); + + if (fs_envblk != NULL) + envblk_on_block = fs_envblk->ops->open (envblk); + while (argc) { grub_envblk_delete (envblk, argv[0]); + if (envblk_on_block != NULL) + grub_envblk_delete (envblk_on_block, argv[0]); + argc--; argv++; } write_envblk (name, envblk); grub_envblk_close (envblk); + + if (envblk_on_block != NULL) + { + fs_envblk->ops->write (envblk_on_block); + grub_envblk_close (envblk_on_block); + } } int