Re: [Bug #11342] Linux 2.6.27-rc3: kernel BUG at mm/vmalloc.c - bisected

Mike Travis
2008-09-30T16:14:36Z

Ingo Molnar wrote:
> * Mike Travis <travis@sgi.com> wrote:
>
>>> could you please send whatever .c changes you have already, so that
>>> we can have a look at how the end result will look like? Doesnt have
>>> to build, i'm just curious about how it looks like in practice,
>>> semantically.
>>
>> I will, and the full "allyesconfig" does compile. And it's basically
>> a benign change in that the functionality is still the same. I'm
>> currently reordering it a bit to clean it up.
>
> btw., are the resulting instructions also expected to be the same? If
> yes then you might want to verify it all by making sure the md5's of the
> .o's do not change.
>
> (If that's not possible (gcc decides to compile it a bit differently)
> then no big deal, just wanted to mention the possibility.)
>
> Ingo

Well, not exactly... ;-) It does institute the new API change that specifies
only pointers to cpumask's can be passed to functions and returned from
functions. I really wanted the default cpumask_t to be a constant so those
instances where the passed in cpumask is used as a read/write temp variable
would be caught. But it started getting messy.

One pain is:

typedef struct __cpumask_s *cpumask_t;
const cpumask_t xxx;

is not the same as:

typedef const struct __cpumask_s *const_cpumask_t;
const_cpumask_t xxx;

and I'm not exactly sure why. It came up when I tried to declare
functions that returned a constant cpumask_t pointer (node_to_cpumask,
cpumask_of_cpu, etc.)

The other major change I'm contemplating is to remove "cpumask_t" completely
(maybe cpumask_ptr_t?). This would force every instance of cpumask_t to be
examined. (I found quite a few I had missed in my original edits when I
added the task struct temp cpumask's.)

Oh yeah, one question ... is "current" always valid?

Thanks,
Mike