From b2bd20b9faa0ddad04da23bafdf95df0ac8ce0b2 Mon Sep 17 00:00:00 2001 From: "Magomed Kostoev (mkostoevr)" Date: Mon, 2 May 2022 11:26:04 +0000 Subject: [PATCH] [KERNEL] Temporal fix for EDI destruction git-svn-id: svn://kolibrios.org@9801 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/network/IPv4.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/trunk/network/IPv4.inc b/kernel/trunk/network/IPv4.inc index 71324ac3d8..69192543d8 100644 --- a/kernel/trunk/network/IPv4.inc +++ b/kernel/trunk/network/IPv4.inc @@ -87,6 +87,7 @@ align 4 IPv4_fragments rb IPv4_MAX_FRAGMENTS * sizeof.IPv4_FRAGMENT_slot ; IPv4_routes rd IPv4_MAX_ROUTES * sizeof.IPv4_ROUTE + edi_saved rd 1 endg @@ -457,6 +458,7 @@ ipv4_input: mov esi, [esi + IPv4_FRAGMENT_slot.ptr] ; We found the first entry, let's calculate total size of the packet in eax, so we can allocate a buffer push esi xor eax, eax + mov [edi_saved], edi or edi, -1 .count_bytes: @@ -553,6 +555,7 @@ ipv4_input: add esp, 12 xchg cl, ch push ecx edx ; size and pointer + mov edi, [edi_saved] jmp .handle_it ; edx = buf ptr, ecx = size, [esp] buf ptr, [esp+4], total size, ebx=device ptr .destroy_slot_pop: