[PATCH v2] ARM: pl330: Fix a race condition

Jassi Brar jassisinghbrar at gmail.com
Fri Dec 9 11:50:48 EST 2011


On Fri, Dec 9, 2011 at 8:22 PM, Javi Merino <javi.merino at arm.com> wrote:
>
> I think the best solution would be to revert
> ee3f615819404a9438b2dd01b7a39f276d2737f2 and go back to my original
> patch (in the beginning of this thread):
>
> http://article.gmane.org/gmane.linux.ports.arm.kernel/133110
>
> What do you think?

Well, we have to resort to that if we can't find something simpler.

What do you think about ...

diff --git a/arch/arm/common/pl330.c b/arch/arm/common/pl330.c
index f407a6b..3a51cdd 100644
--- a/arch/arm/common/pl330.c
+++ b/arch/arm/common/pl330.c
@@ -1546,7 +1546,7 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)

 		/* Start the next */
 	case PL330_OP_START:
-		if (!_thrd_active(thrd) && !_start(thrd))
+		if (_state(thrd) == PL330_STATE_STOPPED && !_start(thrd))
 			ret = -EIO;
 		break;

Thanks
-jassi

[Sorry I don't have any pl330 platform handy]



More information about the linux-arm-kernel mailing list