All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chao Yu <chao2.yu@samsung.com>
To: 'Changman Lee' <cm224.lee@samsung.com>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH] f2fs: avoid overflow when large directory feathure is enabled
Date: Tue, 27 May 2014 16:49:49 +0800	[thread overview]
Message-ID: <010701cf7988$bc218420$34648c60$@samsung.com> (raw)
In-Reply-To: <20140527062307.GB4886@cm224.lee>

Hi changman,

> -----Original Message-----
> From: Changman Lee [mailto:cm224.lee@samsung.com]
> Sent: Tuesday, May 27, 2014 2:23 PM
> To: Chao Yu
> Cc: Jaegeuk Kim; linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org;
> linux-f2fs-devel@lists.sourceforge.net
> Subject: Re: [f2fs-dev] [PATCH] f2fs: avoid overflow when large directory feathure is enabled
> 
> Hi, Chao
> Good catch. Please, modify Documentation/filesytems/f2fs.txt

Thank you for reminding me, I will add modification of f2fs.txt in the patch later.

> 
> On Tue, May 27, 2014 at 09:06:52AM +0800, Chao Yu wrote:
> > When large directory feathure is enable, We have one case which could cause
> > overflow in dir_buckets() as following:
> > special case: level + dir_level >= 32 and level < MAX_DIR_HASH_DEPTH / 2.
> >
> > Here we define MAX_DIR_BUCKETS to limit the return value when the condition
> > could trigger potential overflow.
> >
> > Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> > ---
> >  fs/f2fs/dir.c           |    4 ++--
> >  include/linux/f2fs_fs.h |    3 +++
> >  2 files changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
> > index c3f1485..966acb0 100644
> > --- a/fs/f2fs/dir.c
> > +++ b/fs/f2fs/dir.c
> > @@ -23,10 +23,10 @@ static unsigned long dir_blocks(struct inode *inode)
> >
> >  static unsigned int dir_buckets(unsigned int level, int dir_level)
> >  {
> > -	if (level < MAX_DIR_HASH_DEPTH / 2)
> > +	if (level + dir_level < MAX_DIR_HASH_DEPTH / 2)
> >  		return 1 << (level + dir_level);
> >  	else
> > -		return 1 << ((MAX_DIR_HASH_DEPTH / 2 + dir_level) - 1);
> > +		return MAX_DIR_BUCKETS;
> >  }
> >
> >  static unsigned int bucket_blocks(unsigned int level)
> > diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h
> > index 8c03f71..ba6f312 100644
> > --- a/include/linux/f2fs_fs.h
> > +++ b/include/linux/f2fs_fs.h
> > @@ -394,6 +394,9 @@ typedef __le32	f2fs_hash_t;
> >  /* MAX level for dir lookup */
> >  #define MAX_DIR_HASH_DEPTH	63
> >
> > +/* MAX buckets in one level of dir */
> > +#define MAX_DIR_BUCKETS		(1 << ((MAX_DIR_HASH_DEPTH / 2) - 1))
> > +
> >  #define SIZE_OF_DIR_ENTRY	11	/* by byte */
> >  #define SIZE_OF_DENTRY_BITMAP	((NR_DENTRY_IN_BLOCK + BITS_PER_BYTE - 1) / \
> >  					BITS_PER_BYTE)
> > --
> > 1.7.10.4
> >
> >
> >
> > ------------------------------------------------------------------------------
> > The best possible search technologies are now affordable for all companies.
> > Download your FREE open source Enterprise Search Engine today!
> > Our experts will assist you in its installation for $59/mo, no commitment.
> > Test it for FREE on our Cloud platform anytime!
> > http://pubads.g.doubleclick.net/gampad/clk?id=145328191&iu=/4140/ostg.clktrk
> > _______________________________________________
> > Linux-f2fs-devel mailing list
> > Linux-f2fs-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


------------------------------------------------------------------------------
The best possible search technologies are now affordable for all companies.
Download your FREE open source Enterprise Search Engine today!
Our experts will assist you in its installation for $59/mo, no commitment.
Test it for FREE on our Cloud platform anytime!
http://pubads.g.doubleclick.net/gampad/clk?id=145328191&iu=/4140/ostg.clktrk

WARNING: multiple messages have this Message-ID (diff)
From: Chao Yu <chao2.yu@samsung.com>
To: "'Changman Lee'" <cm224.lee@samsung.com>
Cc: "'Jaegeuk Kim'" <jaegeuk.kim@samsung.com>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-f2fs-devel@lists.sourceforge.net
Subject: RE: [f2fs-dev] [PATCH] f2fs: avoid overflow when large directory feathure is enabled
Date: Tue, 27 May 2014 16:49:49 +0800	[thread overview]
Message-ID: <010701cf7988$bc218420$34648c60$@samsung.com> (raw)
In-Reply-To: <20140527062307.GB4886@cm224.lee>

Hi changman,

> -----Original Message-----
> From: Changman Lee [mailto:cm224.lee@samsung.com]
> Sent: Tuesday, May 27, 2014 2:23 PM
> To: Chao Yu
> Cc: Jaegeuk Kim; linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org;
> linux-f2fs-devel@lists.sourceforge.net
> Subject: Re: [f2fs-dev] [PATCH] f2fs: avoid overflow when large directory feathure is enabled
> 
> Hi, Chao
> Good catch. Please, modify Documentation/filesytems/f2fs.txt

Thank you for reminding me, I will add modification of f2fs.txt in the patch later.

> 
> On Tue, May 27, 2014 at 09:06:52AM +0800, Chao Yu wrote:
> > When large directory feathure is enable, We have one case which could cause
> > overflow in dir_buckets() as following:
> > special case: level + dir_level >= 32 and level < MAX_DIR_HASH_DEPTH / 2.
> >
> > Here we define MAX_DIR_BUCKETS to limit the return value when the condition
> > could trigger potential overflow.
> >
> > Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> > ---
> >  fs/f2fs/dir.c           |    4 ++--
> >  include/linux/f2fs_fs.h |    3 +++
> >  2 files changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
> > index c3f1485..966acb0 100644
> > --- a/fs/f2fs/dir.c
> > +++ b/fs/f2fs/dir.c
> > @@ -23,10 +23,10 @@ static unsigned long dir_blocks(struct inode *inode)
> >
> >  static unsigned int dir_buckets(unsigned int level, int dir_level)
> >  {
> > -	if (level < MAX_DIR_HASH_DEPTH / 2)
> > +	if (level + dir_level < MAX_DIR_HASH_DEPTH / 2)
> >  		return 1 << (level + dir_level);
> >  	else
> > -		return 1 << ((MAX_DIR_HASH_DEPTH / 2 + dir_level) - 1);
> > +		return MAX_DIR_BUCKETS;
> >  }
> >
> >  static unsigned int bucket_blocks(unsigned int level)
> > diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h
> > index 8c03f71..ba6f312 100644
> > --- a/include/linux/f2fs_fs.h
> > +++ b/include/linux/f2fs_fs.h
> > @@ -394,6 +394,9 @@ typedef __le32	f2fs_hash_t;
> >  /* MAX level for dir lookup */
> >  #define MAX_DIR_HASH_DEPTH	63
> >
> > +/* MAX buckets in one level of dir */
> > +#define MAX_DIR_BUCKETS		(1 << ((MAX_DIR_HASH_DEPTH / 2) - 1))
> > +
> >  #define SIZE_OF_DIR_ENTRY	11	/* by byte */
> >  #define SIZE_OF_DENTRY_BITMAP	((NR_DENTRY_IN_BLOCK + BITS_PER_BYTE - 1) / \
> >  					BITS_PER_BYTE)
> > --
> > 1.7.10.4
> >
> >
> >
> > ------------------------------------------------------------------------------
> > The best possible search technologies are now affordable for all companies.
> > Download your FREE open source Enterprise Search Engine today!
> > Our experts will assist you in its installation for $59/mo, no commitment.
> > Test it for FREE on our Cloud platform anytime!
> > http://pubads.g.doubleclick.net/gampad/clk?id=145328191&iu=/4140/ostg.clktrk
> > _______________________________________________
> > Linux-f2fs-devel mailing list
> > Linux-f2fs-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


  reply	other threads:[~2014-05-27  8:50 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-27  1:06 [PATCH] f2fs: avoid overflow when large directory feathure is enabled Chao Yu
2014-05-27  1:06 ` [f2fs-dev][PATCH] " Chao Yu
2014-05-27  6:23 ` [PATCH] " Changman Lee
2014-05-27  6:23   ` [f2fs-dev] " Changman Lee
2014-05-27  8:49   ` Chao Yu [this message]
2014-05-27  8:49     ` Chao Yu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='010701cf7988$bc218420$34648c60$@samsung.com' \
    --to=chao2.yu@samsung.com \
    --cc=cm224.lee@samsung.com \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.