Thread (17 messages) 17 messages, 5 authors, 2012-06-01

Re: [PATCH 5/9] blackfin: A couple of task->mm handling fixes

From: Mike Frysinger <hidden>
Date: 2012-06-01 04:36:55
Also in: linux-arm-kernel, linux-mm, linux-sh, linux-um, lkml

On Monday 23 April 2012 03:09:01 Anton Vorontsov wrote:
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).
that isn't a problem for this code as it specifically checks if it's in an 
atomic section.  if it is, then task->mm can't go away on us.
   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.
if we're not in an atomic section, then sleeping is fine.
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.
i don't think it matters for this code (per the reasons above).
   To catch this we use find_lock_task_mm(), which walks up all
   threads and returns an appropriate task (with task lock held).
certainly fine for the non-atomic code path.  i guess we'll notice in crashes 
if it causes a problem in atomic code paths as well.
-mike

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help