From: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
To: David Sterba <dave@jikos.cz>
Cc: linux-btrfs@vger.kernel.org, chris.mason@oracle.com
Subject: Re: [PATCH] Btrfs: check return value of kmalloc()
Date: Wed, 20 Apr 2011 09:51:30 +0900 [thread overview]
Message-ID: <4DAE2E12.7060002@jp.fujitsu.com> (raw)
In-Reply-To: <20110419111240.GV31675@twin.jikos.cz>
(2011/04/19 20:12), David Sterba wrote:
Thanks for your review.
> Hi,
>
> there are more unchecked kmallocs, in inode.c:btrfs_add_delayed_iput()
>
> 2030 delayed = kmalloc(sizeof(*delayed), GFP_NOFS | __GFP_NOFAIL);
I think that it doesn't fail ordinary when __GFP_NOFAIL is specified...
>
> and in extent-tree.c:relocate_one_extent()
>
> 7992 new_extents = kmalloc(sizeof(*new_extents),
> 7993 GFP_NOFS);
>
> the value is checked later, new_extents is passed to get_new_locations
> and there it's checked, but no other callers pass potential NULL and the
> check fits here and can be dropped from get_new_locations; there's a
> little chance that get_new_locations will be able to succesfully
> allocate the same data a jiffy later.
Yes, therefore I did not check 'new_extents'.
Thanks,
Tsutomu
>
> IMO the check can be safely added here and get_new_locations cleaned up
> later.
>
> Feel free to fold the changes into your patch.
>
> I did not find any more unchecked allocatinos.
>
>
> dave
>
>
> On Tue, Apr 19, 2011 at 02:27:08PM +0900, Tsutomu Itoh wrote:
>> The check on the return value of kmalloc() in inode.c is added.
>>
>> Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
>> ---
>> fs/btrfs/inode.c | 3 +++
>> 1 files changed, 3 insertions(+), 0 deletions(-)
>>
>> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
>> index a4157cf..c718d27 100644
>> --- a/fs/btrfs/inode.c
>> +++ b/fs/btrfs/inode.c
>> @@ -953,6 +953,7 @@ static int cow_file_range_async(struct inode *inode, struct page *locked_page,
>> 1, 0, NULL, GFP_NOFS);
>> while (start < end) {
>> async_cow = kmalloc(sizeof(*async_cow), GFP_NOFS);
>> + BUG_ON(!async_cow);
>> async_cow->inode = inode;
>> async_cow->root = root;
>> async_cow->locked_page = locked_page;
>> @@ -5001,6 +5002,8 @@ static noinline int uncompress_inline(struct btrfs_path *path,
>> inline_size = btrfs_file_extent_inline_item_len(leaf,
>> btrfs_item_nr(leaf, path->slots[0]));
>> tmp = kmalloc(inline_size, GFP_NOFS);
>> + if (!tmp)
>> + return -ENOMEM;
>> ptr = btrfs_file_extent_inline_start(item);
>>
>> read_extent_buffer(leaf, tmp, ptr, inline_size);
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2011-04-20 0:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-19 5:27 [PATCH] Btrfs: check return value of kmalloc() Tsutomu Itoh
2011-04-19 11:12 ` David Sterba
2011-04-20 0:51 ` Tsutomu Itoh [this message]
2011-04-21 12:18 ` David Sterba
2011-04-22 1:23 ` Tsutomu Itoh
2011-04-22 12:02 ` David Sterba
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=4DAE2E12.7060002@jp.fujitsu.com \
--to=t-itoh@jp.fujitsu.com \
--cc=chris.mason@oracle.com \
--cc=dave@jikos.cz \
--cc=linux-btrfs@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.