rbd: resurrect setting of disk->private_data in rbd_init_disk()
authorIlya Dryomov <idryomov@gmail.com>
Wed, 21 Jul 2021 10:16:26 +0000 (12:16 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 21 Jul 2021 15:20:43 +0000 (17:20 +0200)
rbd_open() and rbd_release() expect that disk->private_data is set to
rbd_dev.  Otherwise we hit a NULL pointer dereference when mapping the
image.

URL: https://tracker.ceph.com/issues/51759
Fixes: 195b1956b85b ("rbd: use blk_mq_alloc_disk and blk_cleanup_disk")
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
drivers/block/rbd.c

index 784797f..90b947c 100644 (file)
@@ -4943,6 +4943,7 @@ static int rbd_init_disk(struct rbd_device *rbd_dev)
                disk->minors = RBD_MINORS_PER_MAJOR;
        }
        disk->fops = &rbd_bd_ops;
+       disk->private_data = rbd_dev;
 
        blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
        /* QUEUE_FLAG_ADD_RANDOM is off by default for blk-mq */