Patchwork [v2] NULL pointer when make_indexed_dir returns -ENOSPC

login
register
mail settings
Submitter Allison Henderson
Date May 12, 2011, 5:59 p.m.
Message ID <4DCC1FF8.6040103@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/95347/
State Accepted
Headers show

Comments

Allison Henderson - May 12, 2011, 5:59 p.m.
Hi all,

I wasnt sure if people were expecting a v2 for this one, but I noticed 
the modified version of v1 was removed from the tree, so I am assuming 
we needed v2?  This one handles marking the buffer dirty before calling 
do split to avoid the null pointer.  It introduces a little overhead, 
but the only other option would be to introduce a new flag set to 
do_split.  But if there's any one that would prefer the flags to this 
solution, please let me know.  Thx! :)

Allison Henderson


Signed-off-by: Allison Henderson <achender@us.ibm.com>

---
:100644 100644 3c7a06e... b754b77... M	fs/ext4/namei.c
  fs/ext4/namei.c |    6 ++++--
  1 files changed, 4 insertions(+), 2 deletions(-)

  		/*
@@ -1421,8 +1425,6 @@ static int make_indexed_dir(handle_t *handle, 
struct dentry *dentry,
  		 * with corrupted filesystem.
  		 */
  		ext4_mark_inode_dirty(handle, dir);
-		ext4_handle_dirty_metadata(handle, dir, frame->bh);
-		ext4_handle_dirty_metadata(handle, dir, bh);
  		dx_release(frames);
  		return retval;
  	}
Theodore Ts'o - May 15, 2011, 4:21 a.m.
On Thu, May 12, 2011 at 10:59:20AM -0700, Allison Henderson wrote:
> Hi all,
> 
> I wasnt sure if people were expecting a v2 for this one, but I
> noticed the modified version of v1 was removed from the tree, so I
> am assuming we needed v2?  This one handles marking the buffer dirty
> before calling do split to avoid the null pointer.  It introduces a
> little overhead, but the only other option would be to introduce a
> new flag set to do_split.  But if there's any one that would prefer
> the flags to this solution, please let me know.  Thx! :)
> 
> Allison Henderson
> 
> Signed-off-by: Allison Henderson <achender@us.ibm.com>

Applied, thanks.  In the future, I'd appreciate it if you resent the
patch with a formal commit description.  I recreated the commit
description from the older patch in this case.

	    	     	   	    	 - Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Allison Henderson - May 15, 2011, 3:05 p.m.
On 5/14/2011 9:21 PM, Ted Ts'o wrote:
> On Thu, May 12, 2011 at 10:59:20AM -0700, Allison Henderson wrote:
>> Hi all,
>>
>> I wasnt sure if people were expecting a v2 for this one, but I
>> noticed the modified version of v1 was removed from the tree, so I
>> am assuming we needed v2?  This one handles marking the buffer dirty
>> before calling do split to avoid the null pointer.  It introduces a
>> little overhead, but the only other option would be to introduce a
>> new flag set to do_split.  But if there's any one that would prefer
>> the flags to this solution, please let me know.  Thx! :)
>>
>> Allison Henderson
>>
>> Signed-off-by: Allison Henderson<achender@us.ibm.com>
>
> Applied, thanks.  In the future, I'd appreciate it if you resent the
> patch with a formal commit description.  I recreated the commit
> description from the older patch in this case.
>
> 	    	     	   	    	 - Ted

Thanks Ted.  Sorry about the description, I think I have another small 
patch out there like that.  I will send out an update.  Thx!

Allison Henderson

> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jan Kara - May 17, 2011, 5:44 p.m.
Hello,

On Thu 12-05-11 10:59:20, Allison Henderson wrote:
> I wasnt sure if people were expecting a v2 for this one, but I
> noticed the modified version of v1 was removed from the tree, so I
> am assuming we needed v2?  This one handles marking the buffer dirty
> before calling do split to avoid the null pointer.  It introduces a
> little overhead, but the only other option would be to introduce a
> new flag set to do_split.  But if there's any one that would prefer
> the flags to this solution, please let me know.  Thx! :)
  The patch looks OK. Just please CC me next time - a) because ext3 needs a
similar fix (added now) and b) because I was involved with the previous
patch version. Thanks!

								Honza
> Signed-off-by: Allison Henderson <achender@us.ibm.com>
> 
> ---
> :100644 100644 3c7a06e... b754b77... M	fs/ext4/namei.c
>  fs/ext4/namei.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
> index 3c7a06e..b754b77 100644
> --- a/fs/ext4/namei.c
> +++ b/fs/ext4/namei.c
> @@ -1413,6 +1413,10 @@ static int make_indexed_dir(handle_t *handle,
> struct dentry *dentry,
>  	frame->at = entries;
>  	frame->bh = bh;
>  	bh = bh2;
> +
> +	ext4_handle_dirty_metadata(handle, dir, frame->bh);
> +	ext4_handle_dirty_metadata(handle, dir, bh);
> +
>  	de = do_split(handle,dir, &bh, frame, &hinfo, &retval);
>  	if (!de) {
>  		/*
> @@ -1421,8 +1425,6 @@ static int make_indexed_dir(handle_t *handle,
> struct dentry *dentry,
>  		 * with corrupted filesystem.
>  		 */
>  		ext4_mark_inode_dirty(handle, dir);
> -		ext4_handle_dirty_metadata(handle, dir, frame->bh);
> -		ext4_handle_dirty_metadata(handle, dir, bh);
>  		dx_release(frames);
>  		return retval;
>  	}
> -- 
> 1.7.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Allison Henderson - May 18, 2011, 3:23 p.m.
On 5/17/2011 10:44 AM, Jan Kara wrote:
>    Hello,
>
> On Thu 12-05-11 10:59:20, Allison Henderson wrote:
>> I wasnt sure if people were expecting a v2 for this one, but I
>> noticed the modified version of v1 was removed from the tree, so I
>> am assuming we needed v2?  This one handles marking the buffer dirty
>> before calling do split to avoid the null pointer.  It introduces a
>> little overhead, but the only other option would be to introduce a
>> new flag set to do_split.  But if there's any one that would prefer
>> the flags to this solution, please let me know.  Thx! :)
>    The patch looks OK. Just please CC me next time - a) because ext3 needs a
> similar fix (added now) and b) because I was involved with the previous
> patch version. Thanks!
>
> 								Honza

Sure, I just thought I would save people from the extra spam since it 
was already seen, but I will keep you cc'd next time. Thx!

Allison Henderson

>> Signed-off-by: Allison Henderson<achender@us.ibm.com>
>>
>> ---
>> :100644 100644 3c7a06e... b754b77... M	fs/ext4/namei.c
>>   fs/ext4/namei.c |    6 ++++--
>>   1 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
>> index 3c7a06e..b754b77 100644
>> --- a/fs/ext4/namei.c
>> +++ b/fs/ext4/namei.c
>> @@ -1413,6 +1413,10 @@ static int make_indexed_dir(handle_t *handle,
>> struct dentry *dentry,
>>   	frame->at = entries;
>>   	frame->bh = bh;
>>   	bh = bh2;
>> +
>> +	ext4_handle_dirty_metadata(handle, dir, frame->bh);
>> +	ext4_handle_dirty_metadata(handle, dir, bh);
>> +
>>   	de = do_split(handle,dir,&bh, frame,&hinfo,&retval);
>>   	if (!de) {
>>   		/*
>> @@ -1421,8 +1425,6 @@ static int make_indexed_dir(handle_t *handle,
>> struct dentry *dentry,
>>   		 * with corrupted filesystem.
>>   		 */
>>   		ext4_mark_inode_dirty(handle, dir);
>> -		ext4_handle_dirty_metadata(handle, dir, frame->bh);
>> -		ext4_handle_dirty_metadata(handle, dir, bh);
>>   		dx_release(frames);
>>   		return retval;
>>   	}
>> --
>> 1.7.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 3c7a06e..b754b77 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1413,6 +1413,10 @@  static int make_indexed_dir(handle_t *handle, 
struct dentry *dentry,
  	frame->at = entries;
  	frame->bh = bh;
  	bh = bh2;
+
+	ext4_handle_dirty_metadata(handle, dir, frame->bh);
+	ext4_handle_dirty_metadata(handle, dir, bh);
+
  	de = do_split(handle,dir, &bh, frame, &hinfo, &retval);
  	if (!de) {