- if (mem_head->address == address_p) {
- kfree(mem_head->address);
- mem_head=mem_head->next;
- kfree(mem_search);
- }
- else {
- while (mem_search->next->address != address_p)
- mem_search=mem_search->next;
- kfree(mem_search->next->address);
- mem_delete=mem_search->next;
- mem_search->next=mem_search->next->next;
- kfree(mem_delete);
+ for(mem_pptr = &mem_head; (mem_del = *mem_pptr); mem_pptr = &mem_del->next) {
+ if (mem_del->address != address_p)
+ continue;
+ *mem_pptr=mem_del->next;
+ kfree(mem_del);
+ kfree(address_p);
+ return 0;