Re: [PATCH 2/8] mm/swap: fix race on swap_info reuse between swapoff and swapon

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 3 Feb 2014, Andrew Morton wrote:
> On Mon, 3 Feb 2014 15:23:40 -0800 Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> > On Mon, 27 Jan 2014 18:03:04 +0800 Weijie Yang <weijie.yang@xxxxxxxxxxx> wrote:
> > 
> > > swapoff clear swap_info's SWP_USED flag prematurely and free its resources
> > > after that. A concurrent swapon will reuse this swap_info while its previous
> > > resources are not cleared completely.
> > > 
> > > These late freed resources are:
> > >  - p->percpu_cluster
> > >  - swap_cgroup_ctrl[type]
> > >  - block_device setting
> > >  - inode->i_flags &= ~S_SWAPFILE
> > > 
> > > This patch clear SWP_USED flag after all its resources freed, so that swapon
> > > can reuse this swap_info by alloc_swap_info() safely.
> > > 
> > > This patch is just for a rare scenario, aim to correct of code.
> > 
> > I believe that
> > http://ozlabs.org/~akpm/mmots/broken-out/mm-swap-fix-race-on-swap_info-reuse-between-swapoff-and-swapon.patch
> > makes this patch redundant?
> > 
> 
> oop, hang on.  This patch *is* a stealth-updated version of
> http://ozlabs.org/~akpm/mmots/broken-out/mm-swap-fix-race-on-swap_info-reuse-between-swapoff-and-swapon.patch.
> 
> Undocumented removals of si->swap_map have been added.  What's going on
> there?
> 
> I think I'll stick with the original patch for now.  If you see
> additional optimisations or changes, let's address that separately?

Correct decision, thanks: I explained in an answer when Acking the
previous version why I dislike this version (it would prevent you
from watching the slow progress of swapoff).

Hugh

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]