Re: [patch] race-fix for bottom-half-functions [Re: Subtle trouble in remove_bh().]

Andrea Arcangeli (andrea@e-mind.com)
Thu, 28 Jan 1999 14:40:12 +0100 (CET)


Linus this is about the softirq.h spinlock instead of atomic_t. Don't
waste time reading it if you are not interested. Maybe this is not an
issue that a normal user will notice.

On Thu, 28 Jan 1999, Patrik Rak wrote:

> I know that many people out there consider these problems too subtle,
> but I can't help myself - I just tend to nail down every bug I spot
> (err, I mean, the software ones :)

Me too, but I think that Linus is not interesed at all in these right now.

The point is that we are writing in the asm section of the includes so we
don't need to write C that works everywhere, but only in all i386.

In the init_bh/remove_bh the only thing I care is the order of the
routine = xx and bh_mask |= xxx operations. Nothing more. It has to be
single threaded, and I want it atomic in respect only of the bh handler
engine.

When instead we are at regime we only care to do update bh_mask and
bh_mask_count at the same time, to not risk to have bh_mask_count enabled
but bh_mask disabled (or the reverse). You must think at enable_bh() and
disable_bh() as heavily recalled from different context at the same time
(as in the console code).

I can't see races in get_active_bhs() and clear_active_bhs(). The reason
is that if we miss a bh this time we'll get it the next one. Can you
explain better your thought?

Andrea Arcangeli

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