It can happen that the first packet we receive is not the desired one. In this case we have to poll for further packets. set nfs_state back to STATE_START before polling for more packets, otherwise we check the same packet again and again. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- fs/nfs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/nfs.c b/fs/nfs.c index 1bfd36fcb6..b070ca79d5 100644 --- a/fs/nfs.c +++ b/fs/nfs.c @@ -450,14 +450,17 @@ again: nfs_timer_start = get_time_ns(); - nfs_state = STATE_START; + while (1) { + nfs_state = STATE_START; - while (nfs_state != STATE_DONE) { if (ctrlc()) return ERR_PTR(-EINTR); net_poll(); + if (nfs_state != STATE_DONE) + continue; + if (is_timeout(nfs_timer_start, NFS_TIMEOUT)) { tries++; if (tries == NFS_MAX_RESEND) -- 2.26.0.rc2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox