]> git.karo-electronics.de Git - karo-tx-linux.git/commit
blackfin: a couple of task->mm handling fixes
authorAnton Vorontsov <anton.vorontsov@linaro.org>
Thu, 3 May 2012 05:44:45 +0000 (15:44 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 3 May 2012 05:46:58 +0000 (15:46 +1000)
commitb8be805cbe1fd51f9657744c5cdda62e7b989df3
tree987e289edd1218ddc6866e0bccbe3b6b9b4bf465
parenta37ed7f0bb6b232af08523d02ca1dd2d3b8e7e51
blackfin: a couple of task->mm handling fixes

The patch fixes two problems:

1. Working with task->mm w/o getting mm or grabing the task lock is
   dangerous as ->mm might disappear (exit_mm() assigns NULL under
   task_lock(), so tasklist lock is not enough).

   We can't use get_task_mm()/mmput() pair as mmput() might sleep,
   so we have to take the task lock while handle its mm.

2. Checking for process->mm is not enough because process' main
   thread may exit or detach its mm via use_mm(), but other threads
   may still have a valid mm.

   To catch this we use find_lock_task_mm(), which walks up all
   threads and returns an appropriate task (with task lock held).

Suggested-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
Cc: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
arch/blackfin/kernel/trace.c