Re: More fixes for kmem on slabs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2012-02-09 at 11:06 -0500, Dave Anderson wrote:

> But your patch does this:
> 
> @@ -8117,8 +8135,9 @@ kmem_cache_s_array_nodes:
>              "array cache array", RETURN_ON_ERROR))
>                 goto bail_out;
> 
> -       for (i = max_limit = 0; (i < ARRAY_LENGTH(kmem_cache_s_array)) &&
> -            cpudata[i]; i++) {
> +       for (i = max_limit = 0; (i < kmem_cache_nr_cpu)
> +                       && (i < ARRAY_LENGTH(kmem_cache_s_array))
> +                       && cpudata[i]; i++) {
>                  if (!readmem(cpudata[i]+OFFSET(array_cache_limit),
>                      KVADDR, &limit, sizeof(int),
>                      "array cache limit", RETURN_ON_ERROR))
> 
> On "old" slab systems, your new "kmem_cache_nr_cpu" variable remains at
> its initialized value of zero, and the loop never gets entered.  So I don't 
> think you wanted to keep the (i < kmem_cache_nr_cpu) there, right?

Of course you're right, sorry about that.  I originally tried to fix the
problem by putting (i < kt->cpus) there before I fixed the array length,
then substituted instead of removing that clause.

> 
> > 2) kmem_cache structs can be allocated near enough to the edge of a page
> > that the old incorrect length crosses the page boundary, even though the
> > real smaller structure fits in the page.  That caused a readmem of the
> > structure to cross into a coincidentally missing page in the dump.
> 
> Right -- that was the genesis of the kmem_cache_downsize() function.
>  
> > This patch fixes both of those (after wrestling ARRAY_LENGTH to the
> > ground), but *does not* fix the similar page crossing problem when I try
> > to use a "struct kmem_cache" command on the particular structure at the
> > end of the page.
> 
> Yeah, damn, I don't know what can be done for that, aside from some
> horrific kludge to gdb_readmem_callback() to return successfully even 
> if the readmem() failed.

At least you won't see the problem on startup, only if you accidentally
ask for that particular struct.

Bob M.

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility


[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux