@@ -2114,9 +2114,11 @@ static void blkfront_closing(struct blkfront_info *info)
2114
2114
return ;
2115
2115
2116
2116
/* No more blkif_request(). */
2117
- blk_mq_stop_hw_queues (info -> rq );
2118
- blk_mark_disk_dead (info -> gd );
2119
- set_capacity (info -> gd , 0 );
2117
+ if (info -> rq && info -> gd ) {
2118
+ blk_mq_stop_hw_queues (info -> rq );
2119
+ blk_mark_disk_dead (info -> gd );
2120
+ set_capacity (info -> gd , 0 );
2121
+ }
2120
2122
2121
2123
for_each_rinfo (info , rinfo , i ) {
2122
2124
/* No more gnttab callback work. */
@@ -2457,16 +2459,19 @@ static int blkfront_remove(struct xenbus_device *xbdev)
2457
2459
2458
2460
dev_dbg (& xbdev -> dev , "%s removed" , xbdev -> nodename );
2459
2461
2460
- del_gendisk (info -> gd );
2462
+ if (info -> gd )
2463
+ del_gendisk (info -> gd );
2461
2464
2462
2465
mutex_lock (& blkfront_mutex );
2463
2466
list_del (& info -> info_list );
2464
2467
mutex_unlock (& blkfront_mutex );
2465
2468
2466
2469
blkif_free (info , 0 );
2467
- xlbd_release_minors (info -> gd -> first_minor , info -> gd -> minors );
2468
- blk_cleanup_disk (info -> gd );
2469
- blk_mq_free_tag_set (& info -> tag_set );
2470
+ if (info -> gd ) {
2471
+ xlbd_release_minors (info -> gd -> first_minor , info -> gd -> minors );
2472
+ blk_cleanup_disk (info -> gd );
2473
+ blk_mq_free_tag_set (& info -> tag_set );
2474
+ }
2470
2475
2471
2476
kfree (info );
2472
2477
return 0 ;
0 commit comments