Messages in this thread | | | Date | Tue, 25 Oct 2022 17:49:55 +0800 | Subject | Re: [PATCH] btrfs: volumes: Increase bioc pointer check | From | Qu Wenruo <> |
| |
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@nfschina.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);
| |