Skip to content

Commit

Permalink
[PATCH] IPMI: Clean up the waiting message queue properly on unload
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Corey Minyard authored and Linus Torvalds committed Nov 9, 2006
1 parent 13bb7e3 commit f3ce6a0
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion drivers/char/ipmi/ipmi_msghandler.c
Original file line number Diff line number Diff line change
Expand Up @@ -376,13 +376,23 @@ static void free_recv_msg_list(struct list_head *q)
}
}

static void free_smi_msg_list(struct list_head *q)
{
struct ipmi_smi_msg *msg, *msg2;

list_for_each_entry_safe(msg, msg2, q, link) {
list_del(&msg->link);
ipmi_free_smi_msg(msg);
}
}

static void clean_up_interface_data(ipmi_smi_t intf)
{
int i;
struct cmd_rcvr *rcvr, *rcvr2;
struct list_head list;

free_recv_msg_list(&intf->waiting_msgs);
free_smi_msg_list(&intf->waiting_msgs);
free_recv_msg_list(&intf->waiting_events);

/* Wholesale remove all the entries from the list in the
Expand Down

0 comments on commit f3ce6a0

Please sign in to comment.