All of lore.kernel.org
 help / color / mirror / Atom feed
* 2.4.18(19) swapcache oops
@ 2002-08-15 12:39 j-nomura
  2002-08-15 14:32 ` Hugh Dickins
  0 siblings, 1 reply; 8+ messages in thread
From: j-nomura @ 2002-08-15 12:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: j-nomura

Hello,

I'm using 2.4.18 kernel and suspect there are swapcache race. 
I looked into 2.4.19 patch but could not find the fix to it.

The race condition is described below.
Do you have any idea?


In the situation such as:
  - two processes (process A and B) sharing memory space
  - one of the pages in the space has been swapped out and
    not remained in swapcache
  - process A runs on cpu0, process B runs on cpu1

when process A reads the address corresponding to the page,
page fault occurs and the cpu0 reads swapped-out page into memory,
calls add_to_page_cache_unique() to add it to swapcache and then
calls lru_cache_add() to add it to lru list.

If process B reads the same address at that time, cpu1 calls
do_swap_page() and lookup_swap_cache() may succeed before cpu0
calls lru_cache_add() and cpu1 will set the page active by
following mark_page_accessed().

lru_cache_add() checks if the page is active and if it is active,
it calls BUG().

   process A                          process B
   cpu0                               cpu1
   -----------------------------------------------------------
   do_swap_page()
    spinunlock(mm->page_table_lock)
                                     spinlock(mm->page_table_lock)
    lookup_swap_cache()
    read_swap_cache_async()
     alloc_page()
     add_to_swap_cache_unique()
       __add_to_page_cache()
                                      do_swap_page()
                                        lookup_swap_cache()
                                        mark_page_accessed()
       lru_cache_add()


Best regards.
--
NOMURA, Jun'ichi <j-nomura@ce.jp.nec.com, nomura@hpc.bs1.fc.nec.co.jp>
HPC Operating System Group, 1st Computers Software Division,
Computers Software Operations Unit, NEC Solutions.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2002-08-16  8:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-08-15 12:39 2.4.18(19) swapcache oops j-nomura
2002-08-15 14:32 ` Hugh Dickins
2002-08-15 20:05   ` Andrew Morton
2002-08-15 20:21     ` Andrew Morton
2002-08-16  4:19       ` j-nomura
2002-08-16  4:40         ` Andrew Morton
2002-08-16  8:07           ` j-nomura
2002-08-15 22:59     ` Hugh Dickins

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.