[PATCH] IPMI: Clean up the waiting message queue properly on unload

A wrong function was being used to free a list; this fixes the problem.
Otherwise, an oops at unload time was possible. But not likely, since you
can't have any users when you unload the modules and it is very hard to get
messages into this queue without users.

Signed-off-by: Corey Minyard <minyard@acm.org>
Cc: Patrick Schoeller <Patrick.Schoeller@hp.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Corey Minyard and committed by Linus Torvalds f3ce6a0e 13bb7e37

+11 -1
+11 -1
drivers/char/ipmi/ipmi_msghandler.c
··· 376 376 } 377 377 } 378 378 379 + static void free_smi_msg_list(struct list_head *q) 380 + { 381 + struct ipmi_smi_msg *msg, *msg2; 382 + 383 + list_for_each_entry_safe(msg, msg2, q, link) { 384 + list_del(&msg->link); 385 + ipmi_free_smi_msg(msg); 386 + } 387 + } 388 + 379 389 static void clean_up_interface_data(ipmi_smi_t intf) 380 390 { 381 391 int i; 382 392 struct cmd_rcvr *rcvr, *rcvr2; 383 393 struct list_head list; 384 394 385 - free_recv_msg_list(&intf->waiting_msgs); 395 + free_smi_msg_list(&intf->waiting_msgs); 386 396 free_recv_msg_list(&intf->waiting_events); 387 397 388 398 /* Wholesale remove all the entries from the list in the