[Ocfs2-devel] [PATCH 1/1] Ocfs2: Handle empty list in lockres_seq_start() for dlmdebug.c

tristan tristan.ye at oracle.com
Thu Sep 9 19:31:01 PDT 2010


Sunil Mushran wrote:
> Signed-off-by: Sunil Mushran<sunil.mushran at oracle.com>
>
> I am assuming you have tested it. ;)

Sure, both in local mode by creating a user dlm domain, and in a cluster.

>
>
> On 09/09/2010 07:16 PM, Tristan Ye wrote:
>> This patch tries to handle the case in which list 
>> 'dlm->tracking_list' is
>> empty, to avoid accessing an invalid pointer. It fixes the following 
>> oops:
>>
>> http://oss.oracle.com/bugzilla/show_bug.cgi?id=1287
>>
>> Signed-off-by: Tristan Ye<tristan.ye at oracle.com>
>> ---
>>   fs/ocfs2/dlm/dlmdebug.c |    9 ++++++++-
>>   1 files changed, 8 insertions(+), 1 deletions(-)
>>
>> diff --git a/fs/ocfs2/dlm/dlmdebug.c b/fs/ocfs2/dlm/dlmdebug.c
>> index 5efdd37..901ca52 100644
>> --- a/fs/ocfs2/dlm/dlmdebug.c
>> +++ b/fs/ocfs2/dlm/dlmdebug.c
>> @@ -636,8 +636,14 @@ static void *lockres_seq_start(struct seq_file 
>> *m, loff_t *pos)
>>       spin_lock(&dlm->track_lock);
>>       if (oldres)
>>           track_list =&oldres->tracking;
>> -    else
>> +    else {
>>           track_list =&dlm->tracking_list;
>> +        if (list_empty(track_list)) {
>> +            dl = NULL;
>> +            spin_unlock(&dlm->track_lock);
>> +            goto bail;
>> +        }
>> +    }
>>
>>       list_for_each_entry(res, track_list, tracking) {
>>           if (&res->tracking ==&dlm->tracking_list)
>> @@ -660,6 +666,7 @@ static void *lockres_seq_start(struct seq_file 
>> *m, loff_t *pos)
>>       } else
>>           dl = NULL;
>>
>> +bail:
>>       /* passed to seq_show */
>>       return dl;
>>   }
>>    
>




More information about the Ocfs2-devel mailing list