Avoid erasing non-existent signatures in undi_unload()
authorMichael Brown <mcb30@etherboot.org>
Tue, 9 Jan 2007 02:53:24 +0000 (02:53 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 9 Jan 2007 02:53:24 +0000 (02:53 +0000)
src/arch/i386/drivers/net/undiload.c

index 7ae6248..a0669d9 100644 (file)
@@ -170,8 +170,10 @@ int undi_unload ( struct undi_device *undi ) {
        DBGC ( undi, "UNDI %p unloading\n", undi );
 
        /* Erase signatures */
-       put_real ( dead, undi->pxenv.segment, undi->pxenv.offset );
-       put_real ( dead, undi->ppxe.segment, undi->ppxe.offset );
+       if ( undi->pxenv.segment )
+               put_real ( dead, undi->pxenv.segment, undi->pxenv.offset );
+       if ( undi->ppxe_segment )
+               put_real ( dead, undi->ppxe.segment, undi->ppxe.offset );
 
        /* Free base memory, if possible */
        get_real ( fbms, BDA_SEG, BDA_FBMS );