Set gd->queue to NULL after queue cleanup

Otherwise put_disk() tries to access the queue which leads to
kernel panic.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
Robert Baldyga 2022-12-30 15:18:07 +01:00
parent 8285bd076b
commit 9db73b2fb6
2 changed files with 9 additions and 7 deletions

View File

@ -34,9 +34,9 @@ apply() {
return 0; return 0;
}" }"
add_function " add_function "
static inline void cas_cleanup_mq_disk(struct cas_exp_obj *exp_obj) static inline void cas_cleanup_mq_disk(struct gendisk *gd)
{ {
cas_cleanup_disk(exp_obj->gd); cas_cleanup_disk(gd);
}" }"
;; ;;
@ -61,9 +61,11 @@ apply() {
}" }"
add_function " add_function "
static inline void cas_cleanup_mq_disk(struct cas_exp_obj *exp_obj){ static inline void cas_cleanup_mq_disk(struct gendisk *gd)
blk_cleanup_queue(exp_obj->queue); {
put_disk(exp_obj->gd); blk_cleanup_queue(gd->queue);
gd->queue = NULL;
put_disk(gd);
}" }"
;; ;;

View File

@ -502,8 +502,8 @@ error_set_geometry:
exp_obj->private = NULL; exp_obj->private = NULL;
_cas_exp_obj_clear_dev_t(dsk); _cas_exp_obj_clear_dev_t(dsk);
error_exp_obj_set_dev_t: error_exp_obj_set_dev_t:
cas_cleanup_mq_disk(exp_obj); cas_cleanup_mq_disk(gd);
dsk->exp_obj->gd = NULL; exp_obj->gd = NULL;
error_alloc_mq_disk: error_alloc_mq_disk:
blk_mq_free_tag_set(&exp_obj->tag_set); blk_mq_free_tag_set(&exp_obj->tag_set);
error_init_tag_set: error_init_tag_set: