[image] Revert "clear LOADED flag" patch
authorMichael Brown <mcb30@etherboot.org>
Tue, 8 Jul 2008 02:15:02 +0000 (03:15 +0100)
committerMichael Brown <mcb30@etherboot.org>
Tue, 8 Jul 2008 02:15:02 +0000 (03:15 +0100)
Clearing the LOADED flag actually prevents users from doing clever things
such as loading an image, then loading a patch image, then executing the
first image.  (image_exec() checks for IMAGE_LOADED, so this sequence of
operations will fail if the LOADED flag gets cleared.)

This reverts commit 14c080020fb37cb34fe74213393f47bd2ad8b9bc.

src/core/image.c

index d896be0..440a68c 100644 (file)
@@ -156,7 +156,7 @@ void unregister_image ( struct image *image ) {
 struct image * find_image ( const char *name ) {
        struct image *image;
 
 struct image * find_image ( const char *name ) {
        struct image *image;
 
-       for_each_image ( image ) {
+       list_for_each_entry ( image, &images, list ) {
                if ( strcmp ( image->name, name ) == 0 )
                        return image;
        }
                if ( strcmp ( image->name, name ) == 0 )
                        return image;
        }
@@ -172,21 +172,12 @@ struct image * find_image ( const char *name ) {
  * @ret rc             Return status code
  */
 static int image_load_type ( struct image *image, struct image_type *type ) {
  * @ret rc             Return status code
  */
 static int image_load_type ( struct image *image, struct image_type *type ) {
-       struct image *tmp_image;
        int rc;
 
        /* Check image is actually loadable */
        if ( ! type->load )
                return -ENOEXEC;
 
        int rc;
 
        /* Check image is actually loadable */
        if ( ! type->load )
                return -ENOEXEC;
 
-       /* Clear the loaded flag on all images; loading this image
-        * will invalidate any previous loads.  (Even if loading
-        * fails, the previously loaded image may still have been
-        * partially overwritten.)
-        */
-       for_each_image ( tmp_image )
-               tmp_image->flags &= ~IMAGE_LOADED;
-
        /* Try the image loader */
        if ( ( rc = type->load ( image ) ) != 0 ) {
                DBGC ( image, "IMAGE %p could not load as %s: %s\n",
        /* Try the image loader */
        if ( ( rc = type->load ( image ) ) != 0 ) {
                DBGC ( image, "IMAGE %p could not load as %s: %s\n",