From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754090Ab3HEA3p (ORCPT ); Sun, 4 Aug 2013 20:29:45 -0400 Received: from cantor2.suse.de ([195.135.220.15]:60787 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754015Ab3HEA3o (ORCPT ); Sun, 4 Aug 2013 20:29:44 -0400 Date: Mon, 5 Aug 2013 10:29:17 +1000 From: NeilBrown To: "Kirill A. Shutemov" Cc: Andrea Arcangeli , Andrew Morton , Al Viro , Hugh Dickins , Wu Fengguang , Jan Kara , Mel Gorman , linux-mm@kvack.org, Andi Kleen , Matthew Wilcox , "Kirill A. Shutemov" , Hillf Danton , Dave Hansen , Ning Qu , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 15/23] mm, fs: avoid page allocation beyond i_size on read Message-ID: <20130805102917.315976e5@notabene.brown> In-Reply-To: <1375582645-29274-16-git-send-email-kirill.shutemov@linux.intel.com> References: <1375582645-29274-1-git-send-email-kirill.shutemov@linux.intel.com> <1375582645-29274-16-git-send-email-kirill.shutemov@linux.intel.com> X-Mailer: Claws Mail 3.9.0 (GTK+ 2.24.18; x86_64-suse-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/signed; micalg=PGP-SHA1; boundary="Sig_/TN0Ce_QHwvPupUYNU45S851"; protocol="application/pgp-signature" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --Sig_/TN0Ce_QHwvPupUYNU45S851 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Sun, 4 Aug 2013 05:17:17 +0300 "Kirill A. Shutemov" wrote: > From: "Kirill A. Shutemov" >=20 > I've noticed that we allocated unneeded page for cache on read beyond > i_size. Simple test case (I checked it on ramfs): >=20 > $ touch testfile > $ cat testfile >=20 > It triggers 'no_cached_page' code path in do_generic_file_read(). >=20 > Looks like it's regression since commit a32ea1e. Let's fix it. >=20 > Signed-off-by: Kirill A. Shutemov > Cc: NeilBrown > --- > mm/filemap.c | 4 ++++ > 1 file changed, 4 insertions(+) >=20 > diff --git a/mm/filemap.c b/mm/filemap.c > index 066bbff..c31d296 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -1163,6 +1163,10 @@ static void do_generic_file_read(struct file *filp= , loff_t *ppos, > loff_t isize; > unsigned long nr, ret; > =20 > + isize =3D i_size_read(inode); > + if (!isize || index > (isize - 1) >> PAGE_CACHE_SHIFT) > + goto out; > + > cond_resched(); > find_page: > page =3D find_get_page(mapping, index); Looks good to me. Acked-by: NeilBrown Thanks, NeilBrown --Sig_/TN0Ce_QHwvPupUYNU45S851 Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQIVAwUBUf7x3Tnsnt1WYoG5AQKnxA//Xeu579goDJa3UAOJn8qIIfXGnCI6T24M hRmhG+FPLHVm8FwfD6WzoLNXy/Y8VIqKCIP1y36DocTxHcNzlKkJvlvrhJJezt7E 0Owc6T1shHaxs3wYCr6KwJZWPddJT2piq+PSLe8fV0L3PmTTOsKcNbP+e/tLt0uk fW+YL7BoShQiOPs+Bmj9VRntqTLBMZiIBkNmCTJPDluAkSb/dGuWsMiWy+G8jLMi vVkEkvDTi1qQ6sv97nMZWQC9Sj4p7+qLg/ZUSnINz5bVno8A6EEx8MVu29khhiKw bQwuQCY6uYDIvmu1oHQVI8xK495YkUsiMTA9DOQ+Bua+UXI0TFa+LKHzAoE/g6Ok axI56Bimq39xjl5DwzjUhSbfqFds4iLcbccw9w1Jin0Oh7wc1FHQOc0V6PfisESw m5iidTB75AtMVjDiTXtXUOppUTA5Z2Lz34sFU0NQAKkozaBfzoY4IhZHNXuBgjOd Ya/smkoCwXIKWDqAnZHl1WvG+OKQw/wZcsTx00RYQ87JVOJ99T/Pyg8NuoQ41J3x 77JuCnY8R3hahGVO3/EgrrVt1CkX2Bm4GhisgbyRMehur/Hm8sQUOq3q3fdjX0vd JX5D3O5I8oAjZVasV68NPhT0kMnPglSAZBwJV35Nb7vA0v4babiedViVk8JfQzAk y7WLUMDnbT0= =h+wg -----END PGP SIGNATURE----- --Sig_/TN0Ce_QHwvPupUYNU45S851-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: NeilBrown Subject: Re: [PATCH 15/23] mm, fs: avoid page allocation beyond i_size on read Date: Mon, 5 Aug 2013 10:29:17 +1000 Message-ID: <20130805102917.315976e5@notabene.brown> References: <1375582645-29274-1-git-send-email-kirill.shutemov@linux.intel.com> <1375582645-29274-16-git-send-email-kirill.shutemov@linux.intel.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=PGP-SHA1; boundary="Sig_/TN0Ce_QHwvPupUYNU45S851"; protocol="application/pgp-signature" Cc: Andrea Arcangeli , Andrew Morton , Al Viro , Hugh Dickins , Wu Fengguang , Jan Kara , Mel Gorman , linux-mm@kvack.org, Andi Kleen , Matthew Wilcox , "Kirill A. Shutemov" , Hillf Danton , Dave Hansen , Ning Qu , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org To: "Kirill A. Shutemov" Return-path: In-Reply-To: <1375582645-29274-16-git-send-email-kirill.shutemov@linux.intel.com> Sender: owner-linux-mm@kvack.org List-Id: linux-fsdevel.vger.kernel.org --Sig_/TN0Ce_QHwvPupUYNU45S851 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Sun, 4 Aug 2013 05:17:17 +0300 "Kirill A. Shutemov" wrote: > From: "Kirill A. Shutemov" >=20 > I've noticed that we allocated unneeded page for cache on read beyond > i_size. Simple test case (I checked it on ramfs): >=20 > $ touch testfile > $ cat testfile >=20 > It triggers 'no_cached_page' code path in do_generic_file_read(). >=20 > Looks like it's regression since commit a32ea1e. Let's fix it. >=20 > Signed-off-by: Kirill A. Shutemov > Cc: NeilBrown > --- > mm/filemap.c | 4 ++++ > 1 file changed, 4 insertions(+) >=20 > diff --git a/mm/filemap.c b/mm/filemap.c > index 066bbff..c31d296 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -1163,6 +1163,10 @@ static void do_generic_file_read(struct file *filp= , loff_t *ppos, > loff_t isize; > unsigned long nr, ret; > =20 > + isize =3D i_size_read(inode); > + if (!isize || index > (isize - 1) >> PAGE_CACHE_SHIFT) > + goto out; > + > cond_resched(); > find_page: > page =3D find_get_page(mapping, index); Looks good to me. Acked-by: NeilBrown Thanks, NeilBrown --Sig_/TN0Ce_QHwvPupUYNU45S851 Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQIVAwUBUf7x3Tnsnt1WYoG5AQKnxA//Xeu579goDJa3UAOJn8qIIfXGnCI6T24M hRmhG+FPLHVm8FwfD6WzoLNXy/Y8VIqKCIP1y36DocTxHcNzlKkJvlvrhJJezt7E 0Owc6T1shHaxs3wYCr6KwJZWPddJT2piq+PSLe8fV0L3PmTTOsKcNbP+e/tLt0uk fW+YL7BoShQiOPs+Bmj9VRntqTLBMZiIBkNmCTJPDluAkSb/dGuWsMiWy+G8jLMi vVkEkvDTi1qQ6sv97nMZWQC9Sj4p7+qLg/ZUSnINz5bVno8A6EEx8MVu29khhiKw bQwuQCY6uYDIvmu1oHQVI8xK495YkUsiMTA9DOQ+Bua+UXI0TFa+LKHzAoE/g6Ok axI56Bimq39xjl5DwzjUhSbfqFds4iLcbccw9w1Jin0Oh7wc1FHQOc0V6PfisESw m5iidTB75AtMVjDiTXtXUOppUTA5Z2Lz34sFU0NQAKkozaBfzoY4IhZHNXuBgjOd Ya/smkoCwXIKWDqAnZHl1WvG+OKQw/wZcsTx00RYQ87JVOJ99T/Pyg8NuoQ41J3x 77JuCnY8R3hahGVO3/EgrrVt1CkX2Bm4GhisgbyRMehur/Hm8sQUOq3q3fdjX0vd JX5D3O5I8oAjZVasV68NPhT0kMnPglSAZBwJV35Nb7vA0v4babiedViVk8JfQzAk y7WLUMDnbT0= =h+wg -----END PGP SIGNATURE----- --Sig_/TN0Ce_QHwvPupUYNU45S851-- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org