> -----Original Message----- > From: Borislav Petkov [mailto:[email protected]] > Sent: Sunday, May 28, 2017 1:22 PM > To: Ghannam, Yazen <[email protected]> > Cc: [email protected]; Borislav Petkov <[email protected]>; Tony Luck > <[email protected]>; [email protected]; [email protected] > Subject: Re: [PATCH 2/3] x86/mce/AMD: Define a list_head for threshold > blocks outside the list > > On Wed, May 24, 2017 at 03:41:46PM -0500, Yazen Ghannam wrote: > > From: Yazen Ghannam <[email protected]> > > > > There needs to be a list_head outside of a linked list in order to > > iterate over it and have access to all its elements. This is because > > the > > list_for_each* macros iterate starting from head->next rather than head. > > > > Define a list_head for the threshold blocks list in struct > > threshold_bank > > struct threshold_block { > > ... > > struct list_head miscj; /* > * List of threshold blocks > * within a bank. > */ > > There's your list_head right there. >
Like I said in the commit message, the list_head needs to be outside the list to access all the elements using list_for_each*. Otherwise, we won't get a reference to the "head" element since we iterate starting from head->next and break when !head. For example here, we use block 0 as the head and I find that I don't get a reference to it when using list_for_each* as the code is currently. Am I doing something wrong? Thanks, Yazen

