From 2739d83bec7c37c63d857663a5ecd9e9722c593a Mon Sep 17 00:00:00 2001 From: Krzysztof Majzerowicz-Jaszcz Date: Fri, 24 Jun 2022 05:22:31 -0400 Subject: [PATCH] Fix for null pointer dereference bug Null pointer dereference occurs when terminating cache is standby detached state. This fixes this problem. Fixes #1235 Signed-off-by: Krzysztof Majzerowicz-Jaszcz --- modules/cas_cache/layer_cache_management.c | 2 +- modules/cas_cache/volume/vol_block_dev_top.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/cas_cache/layer_cache_management.c b/modules/cas_cache/layer_cache_management.c index 534bac3..6d9060a 100644 --- a/modules/cas_cache/layer_cache_management.c +++ b/modules/cas_cache/layer_cache_management.c @@ -2946,7 +2946,7 @@ int cache_mngt_exit_instance(const char *cache_name, size_t name_len, int flush) goto stop_thread; } } else { - status = kcas_cache_destroy_exported_object(cache); + status = cache_mngt_destroy_cache_exp_obj(cache); if (status != 0) { printk(KERN_WARNING "Failed to remove cache exported object\n"); diff --git a/modules/cas_cache/volume/vol_block_dev_top.c b/modules/cas_cache/volume/vol_block_dev_top.c index 7931c48..edd7040 100644 --- a/modules/cas_cache/volume/vol_block_dev_top.c +++ b/modules/cas_cache/volume/vol_block_dev_top.c @@ -571,9 +571,14 @@ end: static int kcas_volume_destroy_exported_object(ocf_volume_t volume) { - struct bd_object *bvol = bd_object(volume); + struct bd_object *bvol; int result; + BUG_ON(!volume); + + bvol = bd_object(volume); + BUG_ON(!bvol); + if (!bvol->expobj_valid) return 0;