From 90dab62d635666001b8b4e2b7aa8cc1f23bc6f5b Mon Sep 17 00:00:00 2001 From: Bobi Jam Date: Fri, 3 Sep 2021 12:03:18 +0800 Subject: [PATCH] LU-14781 osp: osp object header could be NULL Don't call lu_object_header_fini upon NULL header in osp_object_free(). Call trace: lu_object_free.isra.30+0xf2/0x170 [obdclass] lu_object_find_at+0x496/0x930 [obdclass] lod_initialize_objects+0x3e4/0xba0 [lod] lod_parse_striping+0x693/0xc20 [lod] lod_striping_load+0x2b2/0x660 [lod] lod_declare_destroy+0x12b/0x600 [lod] mdd_declare_finish_unlink+0x91/0x210 [mdd] mdd_unlink+0x48f/0xab0 [mdd] mdt_reint_unlink+0xc32/0x1550 [mdt] mdt_reint_rec+0x83/0x210 [mdt] mdt_reint_internal+0x6e1/0xb00 [mdt] mdt_reint+0x67/0x140 [mdt] tgt_request_handle+0xaee/0x15f0 [ptlrpc] ptlrpc_server_handle_request+0x24b/0xab0 [ptlrpc] ptlrpc_main+0xb34/0x1470 [ptlrpc] kthread+0xd1/0xe0 Signed-off-by: Bobi Jam Change-Id: Iec23cf06dffaa64c6f5853c28382ba930ee1076b Reviewed-on: https://review.whamcloud.com/44055 Tested-by: jenkins Reviewed-by: Andreas Dilger Reviewed-by: Patrick Farrell Tested-by: Maloo --- lustre/osp/osp_object.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lustre/osp/osp_object.c b/lustre/osp/osp_object.c index 5fb55bf..8126eb0f 100644 --- a/lustre/osp/osp_object.c +++ b/lustre/osp/osp_object.c @@ -2349,7 +2349,8 @@ static void osp_object_free(const struct lu_env *env, struct lu_object *o) int count; dt_object_fini(&obj->opo_obj); - lu_object_header_fini(h); + if (h) + lu_object_header_fini(h); list_for_each_entry_safe(oxe, tmp, &obj->opo_xattr_list, oxe_list) { list_del_init(&oxe->oxe_list); count = atomic_read(&oxe->oxe_ref); -- 1.8.3.1