summaryrefslogtreecommitdiff
path: root/net/tftp.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tftp.c')
-rw-r--r--net/tftp.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/net/tftp.c b/net/tftp.c
index b5d227d8bc2..704b20b4ff8 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -10,6 +10,7 @@
#include <efi_loader.h>
#include <env.h>
#include <image.h>
+#include <led.h>
#include <lmb.h>
#include <log.h>
#include <mapmem.h>
@@ -82,7 +83,6 @@ static ulong tftp_block_wrap;
static ulong tftp_block_wrap_offset;
static int tftp_state;
static ulong tftp_load_addr;
-static ulong tftp_load_size;
#ifdef CONFIG_TFTP_TSIZE
/* The file size reported by the server */
static int tftp_tsize;
@@ -159,13 +159,8 @@ static inline int store_block(int block, uchar *src, unsigned int len)
void *ptr;
if (CONFIG_IS_ENABLED(LMB)) {
- ulong end_addr = tftp_load_addr + tftp_load_size;
-
- if (!end_addr)
- end_addr = ULONG_MAX;
-
if (store_addr < tftp_load_addr ||
- store_addr + len > end_addr) {
+ lmb_read_check(store_addr, len)) {
puts("\nTFTP error: ");
puts("trying to overwrite reserved memory...\n");
return -1;
@@ -191,6 +186,7 @@ static void new_transfer(void)
#ifdef CONFIG_CMD_TFTPPUT
tftp_put_final_block_sent = 0;
#endif
+ led_activity_blink();
}
#ifdef CONFIG_CMD_TFTPPUT
@@ -300,6 +296,9 @@ static void tftp_complete(void)
time_start * 1000, "/s");
}
puts("\ndone\n");
+
+ led_activity_off();
+
if (!tftp_put_active)
efi_set_bootdev("Net", "", tftp_filename,
map_sysmem(tftp_load_addr, 0),
@@ -712,19 +711,8 @@ static void tftp_timeout_handler(void)
}
}
-/* Initialize tftp_load_addr and tftp_load_size from image_load_addr and lmb */
static int tftp_init_load_addr(void)
{
- if (CONFIG_IS_ENABLED(LMB)) {
- phys_size_t max_size;
-
- max_size = lmb_get_free_size(image_load_addr);
- if (!max_size)
- return -1;
-
- tftp_load_size = max_size;
- }
-
tftp_load_addr = image_load_addr;
return 0;
}