- down(&nodemgr_ud_class.sem);
- count = 0;
- list_for_each_entry(cdev, &nodemgr_ud_class.children, node) {
- ud = container_of(cdev, struct unit_directory, class_dev);
- if (ud->ne == ne)
- count++;
- }
- if (!count) {
- up(&nodemgr_ud_class.sem);
- mutex_unlock(&nodemgr_serialize_remove_uds);
- return;
- }
- unreg = kcalloc(count, sizeof(*unreg), GFP_KERNEL);
- if (!unreg) {
- HPSB_ERR("NodeMgr: out of memory in nodemgr_remove_uds");
- up(&nodemgr_ud_class.sem);
- mutex_unlock(&nodemgr_serialize_remove_uds);
- return;
- }
- i = 0;
- list_for_each_entry(cdev, &nodemgr_ud_class.children, node) {
- ud = container_of(cdev, struct unit_directory, class_dev);
- if (ud->ne == ne) {
- BUG_ON(i >= count);
- unreg[i++] = ud;
- }
- }
- up(&nodemgr_ud_class.sem);