Module Name: src Committed By: cegger Date: Fri Jun 3 09:51:40 UTC 2011
Modified Files: src/sys/dev/pci: if_bge.c Log Message: fix crash by NULL pointer dereferencing I get everytime right after this message: bge0: discarding oversize frame (len=-4) To generate a diff of this commit: cvs rdiff -u -r1.196 -r1.197 src/sys/dev/pci/if_bge.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/if_bge.c diff -u src/sys/dev/pci/if_bge.c:1.196 src/sys/dev/pci/if_bge.c:1.197 --- src/sys/dev/pci/if_bge.c:1.196 Sun May 22 08:15:20 2011 +++ src/sys/dev/pci/if_bge.c Fri Jun 3 09:51:40 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bge.c,v 1.196 2011/05/22 08:15:20 mrg Exp $ */ +/* $NetBSD: if_bge.c,v 1.197 2011/06/03 09:51:40 cegger Exp $ */ /* * Copyright (c) 2001 Wind River Systems @@ -79,7 +79,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.196 2011/05/22 08:15:20 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.197 2011/06/03 09:51:40 cegger Exp $"); #include "vlan.h" #include "rnd.h" @@ -3406,6 +3406,11 @@ stdcnt++; dmamap = sc->bge_cdata.bge_rx_std_map[rxidx]; sc->bge_cdata.bge_rx_std_map[rxidx] = 0; + if (dmamap == NULL) { + ifp->if_ierrors++; + bge_newbuf_std(sc, sc->bge_std, m, dmamap); + continue; + } bus_dmamap_sync(sc->bge_dmatag, dmamap, 0, dmamap->dm_mapsize, BUS_DMASYNC_POSTREAD); bus_dmamap_unload(sc->bge_dmatag, dmamap);