lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <13035b03-ed27-c36e-da6a-072d882e787f@gmx.com>
Date:   Tue, 25 Oct 2022 17:49:55 +0800
From:   Qu Wenruo <quwenruo.btrfs@....com>
To:     Nikolay Borisov <nborisov@...e.com>,
        Li zeming <zeming@...china.com>, clm@...com,
        josef@...icpanda.com, dsterba@...e.com
Cc:     linux-btrfs@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] btrfs: volumes: Increase bioc pointer check



On 2022/10/25 17:29, Nikolay Borisov wrote:
>
>
> On 25.10.22 г. 11:28 ч., Li zeming wrote:
>> If kzalloc fails to allocate the bioc pointer, NULL is returned
>> directly.
>>
>> Signed-off-by: Li zeming <zeming@...china.com>
>
> This patch clearly shows you haven't really understood the code. As is
> evident there is __GFP_NOFAIL flag so as per the guarantees for this
> flag we either loop infinitely trying to allocate a bioc or simply
> allocated it. So this check can never be triggered.

I guess what he missed is just to also remove that NOFAIL flag.

NOFAIL will not 100% guarantee the allocation, and I don't see this
location to be so important, especially when the only caller is already
handing allocation failure.

Thanks,
Qu

>
> NAK
>> ---
>>   fs/btrfs/volumes.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>> index 064ab2a79c80..f9cb815fe23d 100644
>> --- a/fs/btrfs/volumes.c
>> +++ b/fs/btrfs/volumes.c
>> @@ -5892,6 +5892,8 @@ static struct btrfs_io_context
>> *alloc_btrfs_io_context(struct btrfs_fs_info *fs_
>>            */
>>           sizeof(u64) * (total_stripes),
>>           GFP_NOFS|__GFP_NOFAIL);
>> +    if (!bioc)
>> +        return NULL;
>>       atomic_set(&bioc->error, 0);
>>       refcount_set(&bioc->refs, 1);

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ