Re: [PATCH 2.6.30-rc5] ehea: fix invalid pointer access

From: David Howells
Date: Tue May 05 2009 - 08:22:36 EST


Hannes Hering <hannes.hering@xxxxxxxxxxxxxxxxxx> wrote:

> this is an ehea driver problem, which is occuring when the receive queue runs
> empty. The faulting code is more specifically the following line:
>
> pref = (skb_array[x]->data);

In that case, you might want to move the prefetchw() calls in the following:

pref = skb_array[x];
- prefetchw(pref);
- prefetchw(pref + EHEA_CACHE_LINE);
+ if (pref) {
+ prefetchw(pref);
+ prefetchw(pref + EHEA_CACHE_LINE);

to before the if-statement. That way the CPU can be attempting the prefetch
whilst it's chewing over the test and branch. prefetching shouldn't fault on
a bad address.

David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/