--- a/sys/bus/pccard/pccard_cis_quirks.c +++ b/sys/bus/pccard/pccard_cis_quirks.c @@ -231,6 +231,9 @@ pccard_check_cis_quirks(device_t dev) for (i=0; ipf == NULL || q->cfe == NULL) /* malformed entry */ + continue; if (!wiped) { if (bootverbose) { device_printf(dev, "using CIS quirks for "); @@ -278,8 +281,10 @@ pccard_check_cis_quirks(device_t dev) cfe = kmalloc(sizeof(*cfe), M_DEVBUF, M_NOWAIT); if (cfe == NULL) { kfree(pf, M_DEVBUF); + /* pf no longer tracks pf_last; force the next + * match down the fresh-function path */ + pf_last = NULL; device_printf(dev, "no memory for quirk (2)\n"); continue; }