extract_netinfo_args() should be a void function.
authorTony Breeds <tony@bakeyournoodle.com>
Sat, 6 Mar 2010 03:59:04 +0000 (14:59 +1100)
committerTony Breeds <tony@bakeyournoodle.com>
Fri, 16 Jul 2010 05:10:57 +0000 (15:10 +1000)
If there is no "netinfo" packet, extract_netinfo_args() will fail and cause
parse_device_path() to abort.  This basically meant that yaboot will fail to
load any kernel/initrd under those circumstances.

This fix changes extract_netinfo_args() to be a void function.

Signed-off-by: Tony Breeds <tonyb@au1.ibm.com>
second/file.c

index 81d91a9..debf7f4 100644 (file)
@@ -261,10 +261,8 @@ extract_vendor_options(struct bootp_packet *packet, struct boot_fspec_t *result)
 /*
  * Check netinfo for ipv4 parameters and add them to the fspec iff the
  * fspec has no existing value.
- *
- * Returns 1 on success, 0 on failure.
  */
-static int
+static void
 extract_netinfo_args(struct boot_fspec_t *result)
 {
      struct bootp_packet *packet;
@@ -272,7 +270,7 @@ extract_netinfo_args(struct boot_fspec_t *result)
      /* Check to see if we can get the [scyg]iaddr fields from netinfo */
      packet = prom_get_netinfo();
      if (!packet)
-          return 0;
+          return;
 
      DEBUG_F("We have a boot packet\n");
      DEBUG_F(" siaddr = <%x>\n", packet->siaddr);
@@ -304,8 +302,6 @@ extract_netinfo_args(struct boot_fspec_t *result)
           result->giaddr = ipv4_to_str(packet->siaddr);
           DEBUG_F("Forcing giaddr to siaddr <%s>\n", result->giaddr);
      }
-
-     return 1;
 }
 
 /*
@@ -370,7 +366,7 @@ extract_netboot_args(char *imagepath, struct boot_fspec_t *result)
          ret = extract_ipv6_args(imagepath, result);
      else
          ret = extract_ipv4_args(imagepath, result);
-     ret |= extract_netinfo_args(result);
+     extract_netinfo_args(result);
 
      DEBUG_F("ipv6 = <%d>\n", result->is_ipv6);
      DEBUG_F("siaddr = <%s>\n", result->siaddr);