Re: [PATCH 1/6] net: ip4_datagram_connect: Use correct form ofstatistics update

From: Eric Dumazet
Date: Wed Oct 16 2013 - 05:14:40 EST


On Wed, 2013-10-16 at 10:35 +0200, Peter Zijlstra wrote:
> On Tue, Oct 15, 2013 at 12:47:23PM -0500, Christoph Lameter wrote:
> > ip4_datagram_connect is called with BH processing enabled. Therefore
> > we cannot use IP_INC_STATS_BH but must use IP_INC_STATS which disables
> > BH handling before incrementing the counter.
> >
> > The following trace is triggered without this patch:
> >
> > [ 9293.806634] __this_cpu_add operation in preemptible [00000000] code: ntpd/2150
>
> You lost the BUG there; that really needs to be there:
>
> - BUG makes people pay attention
> - This was an actual BUG wasn't it?
>
> Sure there can be false positives, but in all cases people should amend
> the code. Sometimes with a comment explaining why the raw primitive
> should be used; sometimes to fix an actual bug, but a patch needs to be
> written. Therefore BUG!

Yep this is a real BUG for linux 2.6.36+ on 32bit arches,

The effect of this bug is that on 32bit arches, we might corrupt
a seqcount : Later, we can spin forever on it.

In linux 2.6.36 we converted IP mib from 32 to 64 bits, therefore this
fix should be backported up to 2.6.36

Prior to 2.6.36, the bug was that some increments of SNMP stat could be
lost, because two cpus could access the same location, hardly a
problem...

Thanks


--
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/