Re: [PATCH] btrfs: volumes: Increase bioc pointer check

From: Qu Wenruo
Date: Tue Oct 25 2022 - 05:54:36 EST




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@xxxxxxxxxxxx>

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);