On Wed, Jul 22, 2009 at 2:47 AM, Pavel Roskin<pro...@gnu.org> wrote: > ChangeLog: > > * kern/dl.c (grub_dl_load_core): Call grub_dl_call_init() only > after grub_dl_add() succeeds. Set mod->ref_count to 1 later to > allow grub_dl_unload() to work. > Original patch by Joe Auricchio <jauricc...@gmail.com> Ok with me > --- > kern/dl.c | 14 +++++--------- > 1 files changed, 5 insertions(+), 9 deletions(-) > > diff --git a/kern/dl.c b/kern/dl.c > index 78ebc1e..ebde547 100644 > --- a/kern/dl.c > +++ b/kern/dl.c > @@ -539,14 +539,13 @@ grub_dl_load_core (void *addr, grub_size_t size) > if (! mod) > return 0; > > - mod->ref_count = 1; > - > grub_dprintf ("modules", "relocating to %p\n", mod); > if (grub_dl_resolve_name (mod, e) > || grub_dl_resolve_dependencies (mod, e) > || grub_dl_load_segments (mod, e) > || grub_dl_resolve_symbols (mod, e) > - || grub_arch_dl_relocate_symbols (mod, e)) > + || grub_arch_dl_relocate_symbols (mod, e) > + || grub_dl_add (mod)) > { > mod->fini = 0; > grub_dl_unload (mod); > @@ -557,13 +556,10 @@ grub_dl_load_core (void *addr, grub_size_t size) > > grub_dprintf ("modules", "module name: %s\n", mod->name); > grub_dprintf ("modules", "init function: %p\n", mod->init); > - grub_dl_call_init (mod); > > - if (grub_dl_add (mod)) > - { > - grub_dl_unload (mod); > - return 0; > - } > + mod->ref_count = 1; > + > + grub_dl_call_init (mod); > > return mod; > } > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel >
-- Regards Vladimir 'phcoder' Serbinenko Personal git repository: http://repo.or.cz/w/grub2/phcoder.git _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel