From: Jiri Slaby Only ISA cards should be freed in module exit. Pci probed are freed in pci_remove. Define a flag, where we store this info a what to check against. Signed-off-by: Jiri Slaby Cc: Alan Cox Signed-off-by: Andrew Morton --- drivers/char/istallion.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN drivers/char/istallion.c~char-istallion-free-only-isa drivers/char/istallion.c --- a/drivers/char/istallion.c~char-istallion-free-only-isa +++ a/drivers/char/istallion.c @@ -202,6 +202,7 @@ static int stli_shared; */ #define BST_FOUND 0x1 #define BST_STARTED 0x2 +#define BST_PROBED 0x4 /* * Define the set of port state flags. These are marked for internal @@ -791,7 +792,7 @@ static void __exit istallion_module_exit kfree(stli_txcookbuf); for (j = 0; (j < stli_nrbrds); j++) { - if ((brdp = stli_brds[j]) == NULL) + if ((brdp = stli_brds[j]) == NULL || (brdp->state & BST_PROBED)) continue; stli_cleanup_ports(brdp); @@ -3956,6 +3957,7 @@ static int __devinit stli_pciprobe(struc if (retval) goto err_null; + brdp->state |= BST_PROBED; pci_set_drvdata(pdev, brdp); return 0; _