pr_err("registering device %s failed\n", aim->name);
                return ret;
        }
-       pr_info("registered new application interfacing module %s\n",
-               aim->name);
+       list_add_tail(&aim->list, &mc.mod_list);
+       pr_info("registered new application interfacing module %s\n", aim->name);
        return 0;
 }
 EXPORT_SYMBOL_GPL(most_register_aim);
                }
        }
        device_unregister(&aim->dev);
+       list_del(&aim->list);
        pr_info("deregistering application interfacing module %s\n", aim->name);
        return 0;
 }
 
        pr_info("init()\n");
        INIT_LIST_HEAD(&instance_list);
+       INIT_LIST_HEAD(&mc.mod_list);
        ida_init(&mdev_id);
 
        mc.bus.name = "most",
 
  */
 struct most_aim {
        struct device dev;
+       struct list_head list;
        const char *name;
        int (*probe_channel)(struct most_interface *iface, int channel_idx,
                             struct most_channel_config *cfg, char *name);