That is correct. I will rewrite this patch later tonight correctly.
Nick

On Fri, Jan 23, 2015 at 2:00 PM, Corey Minyard <[email protected]> wrote:
> On 01/23/2015 12:27 PM, nick wrote:
>> Corney,
>> Hope this patch fixes the issue. Sorry about missing that kfree
>> being required. :(
>
> Well, the kfree needs to be after the free of the messages.    You can't
> use an item after you free it.
>
> -corey
>
>> Nick
>>
>>
>> On 2015-01-23 01:02 PM, Nicholas Krause wrote:
>>> This adds a loop through the elements in the linked list, recv_msgs using
>>> list_for_entry_safe in order to free messages in this list.  In addition
>>> we are using the safe version of this marco in order to prevent use after
>>> bugs related to deleting the element we are on currently by holding a
>>> pointer to the next element after the current one we are on and freeing
>>> with the function, ipmi_free_recv_msg internally in this loop.
>>>
>>> Signed-off-by: Nicholas Krause <[email protected]>
>>> ---
>>>  drivers/char/ipmi/ipmi_devintf.c | 7 ++++++-
>>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/char/ipmi/ipmi_devintf.c 
>>> b/drivers/char/ipmi/ipmi_devintf.c
>>> index ec318bf..a625510 100644
>>> --- a/drivers/char/ipmi/ipmi_devintf.c
>>> +++ b/drivers/char/ipmi/ipmi_devintf.c
>>> @@ -157,14 +157,19 @@ static int ipmi_release(struct inode *inode, struct 
>>> file *file)
>>>  {
>>>      struct ipmi_file_private *priv = file->private_data;
>>>      int                      rv;
>>> +    struct  ipmi_recv_msg *msg, *next;
>>>
>>>      rv = ipmi_destroy_user(priv->user);
>>>      if (rv)
>>>              return rv;
>>>
>>> -    /* FIXME - free the messages in the list. */
>>>      kfree(priv);
>>>
>>> +    list_for_each_entry_safe(msg, next, &priv->recv_msgs, link) {
>>> +            ipmi_free_recv_msg(msg);
>>> +    }
>>> +
>>> +
>>>      return 0;
>>>  }
>>>
>>>
>

------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer

Reply via email to