+
+ while(dev_list) {
+ dev_link_t *link = dev_list;
+
+ dev_list = link->next;
+ if (link) {
+ struct pcmciamtd_dev *dev = link->priv;
+
+ if(dev) {
+ if(link->state & DEV_PRESENT) {
+ if (!(link->state & DEV_STALE_LINK)) {
+ pcmciamtd_detach(link);
+ }
+ link->state &= ~DEV_PRESENT;
+ if(dev->mtd_info) {
+ del_mtd_device(dev->mtd_info);
+ info("mtd%d: Removed",
+ dev->mtd_info->index);
+ }
+ }
+ if(dev->mtd_info) {
+ DEBUG(2, "Destroying map for mtd%d",
+ dev->mtd_info->index);
+ map_destroy(dev->mtd_info);
+ }
+ kfree(dev);
+ }
+ }
+ }