Fix return code of NFS command
Patch by Hiroshi Ito, 11 Dec 2004
diff --git a/net/nfs.c b/net/nfs.c
index 1c697ad..de789e1 100644
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -44,6 +44,7 @@
 static char dirfh[NFS_FHSIZE];	/* file handle of directory */
 static char filefh[NFS_FHSIZE]; /* file handle of kernel image */
 
+static int	NfsDownloadState;
 static IPaddr_t NfsServerIP;
 static int	NfsSrvMountPort;
 static int	NfsSrvNfsPort;
@@ -63,7 +64,7 @@
 static char *nfs_path;
 static char nfs_path_buff[2048];
 
-static __inline__ void
+static __inline__ int
 store_block (uchar * src, unsigned offset, unsigned len)
 {
 	ulong newsize = offset + len;
@@ -82,8 +83,7 @@
 		rc = flash_write ((uchar *)src, (ulong)(load_addr+offset), len);
 		if (rc) {
 			flash_perror (rc);
-			NetState = NETLOOP_FAIL;
-			return;
+			return -1;
 		}
 	} else
 #endif /* CFG_DIRECT_FLASH_NFS */
@@ -93,6 +93,7 @@
 
 	if (NetBootFileXferSize < (offset+len))
 		NetBootFileXferSize = newsize;
+	return 0;
 }
 
 static char*
@@ -573,7 +574,8 @@
 	}
 
 	rlen = ntohl(rpc_pkt.u.reply.data[18]);
-	store_block ((uchar *)pkt+sizeof(rpc_pkt.u.reply), nfs_offset, rlen);
+	if ( store_block ((uchar *)pkt+sizeof(rpc_pkt.u.reply), nfs_offset, rlen) )
+		return -9999;
 
 	return rlen;
 }
@@ -632,7 +634,7 @@
 			NetState = NETLOOP_FAIL;
 		} else {
 			puts ("\ndone\n");
-			NetState = NETLOOP_SUCCESS;
+			NetState = NfsDownloadState;
 		}
 		break;
 
@@ -678,6 +680,7 @@
 			NfsState = STATE_READLINK_REQ;
 			NfsSend ();
 		} else {
+			if ( ! rlen ) NfsDownloadState = NETLOOP_SUCCESS;
 			NfsState = STATE_UMOUNT_REQ;
 			NfsSend ();
 		}
@@ -692,6 +695,7 @@
 #ifdef NFS_DEBUG
 	printf ("%s\n", __FUNCTION__);
 #endif
+	NfsDownloadState = NETLOOP_FAIL;
 
 	NfsServerIP = NetServerIP;
 	nfs_path = (char *)nfs_path_buff;