From: Eric Miao Date: Mon, 8 Dec 2008 10:51:01 +0000 (+0800) Subject: [ARM] pxafb: avoid the racing condition in pxafb_smart_thread X-Git-Tag: v2.6.29-rc1~559^2~3^2~8 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=07f651c72ac0530033883c113939d9b9c7fa75e5;p=linux-2.6-omap-h63xx.git [ARM] pxafb: avoid the racing condition in pxafb_smart_thread fbi->state change shall really be protected by fbi->ctrlr_lock, where the change is sheltered. There is a possibility that pxafb_smart_thread will start update the LCD panel when fbi->state == C_ENABLE, while all other initialization isn't done. Signed-off-by: Eric Miao --- diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c index 1e1c4ec0d3b..ab689597f25 100644 --- a/drivers/video/pxafb.c +++ b/drivers/video/pxafb.c @@ -794,11 +794,15 @@ static int pxafb_smart_thread(void *arg) if (try_to_freeze()) continue; + mutex_lock(&fbi->ctrlr_lock); + if (fbi->state == C_ENABLE) { inf->smart_update(&fbi->fb); complete(&fbi->refresh_done); } + mutex_unlock(&fbi->ctrlr_lock); + set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(30 * HZ / 1000); }