void rmnet_usb_ctrl_exit(int no_rmnet_devs, int no_rmnet_insts_per_dev) { int i, n; for (i = 0; i < no_rmnet_devs; i++) { for (n = 0; n < no_rmnet_insts_per_dev; n++) free_rmnet_ctrl_dev(&ctrl_devs[i][n]); kfree(ctrl_devs[i]); class_destroy(ctrldev_classp[i]); if (ctrldev_num[i]) unregister_chrdev_region(ctrldev_num[i], insts_per_dev); } kfree(ctrl_devs); rmnet_usb_ctrl_debugfs_exit(); }
void rmnet_usb_ctrl_exit(int no_rmnet_devs, int no_rmnet_insts_per_dev, unsigned long mux_info) { int i, n; for (i = 0; i < no_rmnet_devs; i++) { for (n = 0; n < no_rmnet_insts_per_dev; n++) { free_rmnet_ctrl_dev(&ctrl_devs[i][n]); if (n && test_bit(i, &mux_info)) continue; free_rmnet_ctrl_udev((&ctrl_devs[i][n])->cudev); } kfree(ctrl_devs[i]); class_destroy(ctrldev_classp[i]); if (ctrldev_num[i]) unregister_chrdev_region(ctrldev_num[i], insts_per_dev); } kfree(ctrl_devs); rmnet_usb_ctrl_debugfs_exit(); }