Whamcloud - gitweb
LU-17464 lod: set llc_ostlist to NULL after free 97/53797/2
authorBobi Jam <bobijam@whamcloud.com>
Wed, 24 Jan 2024 06:15:49 +0000 (14:15 +0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 15 Feb 2024 06:59:55 +0000 (06:59 +0000)
Default LOV striping could free component entry llc_ostlist if needed
e.g. expand component entries, without set it to NULL it could be
double allocated/freed later.

Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: I25824cb61dd47ba284403039259593b88d25fa9d
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53797
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Qian Yingjin <qian@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/lod/lod_lov.c

index d7000b6..9f59dd3 100644 (file)
@@ -485,9 +485,12 @@ static void lod_free_comp_buffer(struct lod_layout_component *entries,
                        continue;
                if (entry->llc_pool != NULL)
                        lod_set_pool(&entry->llc_pool, NULL);
-               if (entry->llc_ostlist.op_array)
+               if (entry->llc_ostlist.op_array) {
                        OBD_FREE(entry->llc_ostlist.op_array,
                                 entry->llc_ostlist.op_size);
+                       entry->llc_ostlist.op_array = NULL;
+                       entry->llc_ostlist.op_size = 0;
+               }
                LASSERT(entry->llc_stripe == NULL);
                LASSERT(entry->llc_stripes_allocated == 0);
        }