Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753207AbbGBMiJ (ORCPT ); Thu, 2 Jul 2015 08:38:09 -0400 Received: from col004-omc1s5.hotmail.com ([65.55.34.15]:60563 "EHLO COL004-OMC1S5.hotmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751683AbbGBMh5 (ORCPT ); Thu, 2 Jul 2015 08:37:57 -0400 X-Greylist: delayed 300 seconds by postgrey-1.27 at vger.kernel.org; Thu, 02 Jul 2015 08:37:57 EDT X-TMN: [Zfc/WmtINCq6JTbzPUsQPIKvTDep2yKt] X-Originating-Email: [yuchaochina@hotmail.com] Message-ID: From: Chao Yu To: "'Jaegeuk Kim'" CC: , , References: <1435603176-63219-1-git-send-email-jaegeuk@kernel.org> <1435603176-63219-8-git-send-email-jaegeuk@kernel.org> In-Reply-To: <1435603176-63219-8-git-send-email-jaegeuk@kernel.org> Subject: RE: [f2fs-dev] [PATCH 08/12] f2fs: introduce a shrinker for mounted fs Date: Thu, 2 Jul 2015 20:32:39 +0800 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 15.0 Thread-index: AQABAgMEgG3CrEeNPw4n9niu9S2yRaFnFCgA Content-Language: zh-cn X-OriginalArrivalTime: 02 Jul 2015 12:32:57.0101 (UTC) FILETIME=[398E8BD0:01D0B4C3] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1489 Lines: 48 > -----Original Message----- > From: Jaegeuk Kim [mailto:jaegeuk@kernel.org] > Sent: Tuesday, June 30, 2015 2:40 AM > To: linux-kernel@vger.kernel.org; linux-fsdevel@vger.kernel.org; > linux-f2fs-devel@lists.sourceforge.net > Cc: Jaegeuk Kim > Subject: [f2fs-dev] [PATCH 08/12] f2fs: introduce a shrinker for mounted fs > > This patch introduces a shrinker targeting to reduce memory footprint consumed > by a number of in-memory f2fs data structures. > > In addition, it newly adds: > - sbi->umount_mutex to avoid data races on shrinker and put_super > - sbi->shruinker_run_no to not revisit objects > > Noteh that the basic implementation was copied from fs/btrfs/shrinker.c This file seems not exist... > @@ -1310,6 +1328,7 @@ free_root_inode: > dput(sb->s_root); > sb->s_root = NULL; > free_node_inode: > + f2fs_leave_shrinker(sbi); We should detach shrinker under sbi->umount_mutex. Otherwise we will access freed memory in following call path: mount shrinker ->fill_super Failed after f2fs_join_shrinker ->f2fs_leave_shrinker ->f2fs_shrink_scan spin_lock get sbi pointer spin_unlock spin_lock list_del sbi->s_list spin_unlock free sbi use-after-free for sbi Thanks, -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/