From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jaegeuk Kim Subject: Re: [PATCH v2] f2fs: fix up f2fs_get_parent issue to retrieve correct parent inode number Date: Fri, 14 Dec 2012 15:42:43 +0900 Message-ID: <1355467363.16178.25.camel@kjgkr> References: <1355409851-6389-1-git-send-email-linkinjeon@gmail.com> <1355460921.16178.21.camel@kjgkr> Reply-To: jaegeuk.kim@samsung.com Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-MWkFBEXA8LLYqJPnzw38" Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, Namjae Jeon , Amit Sahrawat To: Namjae Jeon Return-path: Received: from mailout1.samsung.com ([203.254.224.24]:31515 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750824Ab2LNGmv (ORCPT ); Fri, 14 Dec 2012 01:42:51 -0500 In-reply-to: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: --=-MWkFBEXA8LLYqJPnzw38 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 2012-12-14 (=EA=B8=88), 14:41 +0900, Namjae Jeon: > 2012/12/14, Jaegeuk Kim : > > Hi, > > > >> diff --git a/fs/f2fs/hash.c b/fs/f2fs/hash.c > >> index a60f042..5e48bac 100644 > >> --- a/fs/f2fs/hash.c > >> +++ b/fs/f2fs/hash.c > >> @@ -76,6 +76,10 @@ f2fs_hash_t f2fs_dentry_hash(const char *name, int > >> len) > >> const char *p; > >> __u32 in[8], buf[4]; > >> > >> + if ((len <=3D 2) && (name[0] =3D=3D '.') && > >> + (name[1] =3D=3D '.' || name[1] =3D=3D '\0')) > >> + return 0; > > > > If len =3D=3D 1, we should avoid referencing name[1]. > > Likewise VFS does, I rewrote that like below. > > > > if (name[0] =3D=3D '.') { > > switch (len) { > > case 1: > > return 0; > > case 2: > > if (name[1] =3D=3D '.') > > return 0; > > } > > } > > > > So, how about this patch? >=20 > I think that there is no issue on current patch. Since, the strings > are always expected to be NULL terminated. >=20 > "." should include '\0', So we can distingsh by checking only name[0], na= me[1]. >=20 > When we do: > char *ptr=3D"hello"; -> it will always be NULL terminated -> "hello" in > memory followed by '\0'; > when we reserver space > char ptr[5];-> We need to reserver space for '\0' at the end. Got it. I found that NULL is added to the dentry->d_name as follows. In __d_alloc(), dentry->d_name.len =3D name->len; dentry->d_name.hash =3D name->hash; memcpy(dname, name->name, name->len); dname[name->len] =3D 0;=20 I'll merge your patch. :) Thanks, --=20 Jaegeuk Kim Samsung --=-MWkFBEXA8LLYqJPnzw38 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJQyspjAAoJEEAUqH6CSFDSr04P+gPUYQig/v6F8w/qn4FFg+Rk kZ+eSRkpvwNArE1L0VLMV4d2dXAeqWZO+fAE3z11Lp4bkpuDpxj9xEmGWOIjMRKG rXpiAEqV1EITAPpxNJ4eojf4NZhwSSbQ+mLujDMKX+gvq4aD4GKtd+a6XLDgzGG1 lawnzft55lH/dcrt2AT/Zn3bcqYYXIZlr31+4yA4hlrGWuyo0dmnx78eiMgUaULb I0k2z1AyQW8E4f+FlrCT9a8SZWhHIT0Yc8gcIZWfZ1jGkXop5az4EaJQkv8+ZzIV P0ZLuT5tbWydCelKwMt/u4nTSCaGYFKT9AZA0oxsqbUxDaPNAoEIgjd3t9sazQrj cmzKKSNGdM9og+N/lkj6ttgPBNDFbAzRcZMvh0xAL0aRMcaVhgfkZ5FJK2okButL eIdea1eizKM6Zz0I7Ug3oytvN2cBxnA2QQcZKIq94msvQoa18oNc9txmS5hAToXf Ss/Rd64gkQJBhjkdyzc5QQc1SfPrHj1TIlZO4ho/I8RnbX3oP4oYuXu4VjOMU2Ey N8x+m6fvCTFBE4UrZIBw6QNnDfcxOzAXpXN4M7QhwxJs+n9MX0dOwF0UYgmSTk9l dNcXLUMi78yIPMLKaHritEFQOWizcQC5AT+v3nLfSWWQLuxJfvGXn3MHUokAzEUE cJdUcF/6cuGG5vY9owqA =7gfp -----END PGP SIGNATURE----- --=-MWkFBEXA8LLYqJPnzw38--