|
@@ -489,7 +489,7 @@ static int blkif_queue_request(struct request *req)
|
|
|
|
|
|
if ((ring_req->operation == BLKIF_OP_INDIRECT) &&
|
|
|
(i % SEGS_PER_INDIRECT_FRAME == 0)) {
|
|
|
- unsigned long pfn;
|
|
|
+ unsigned long uninitialized_var(pfn);
|
|
|
|
|
|
if (segments)
|
|
|
kunmap_atomic(segments);
|
|
@@ -2011,6 +2011,10 @@ static void blkif_release(struct gendisk *disk, fmode_t mode)
|
|
|
|
|
|
bdev = bdget_disk(disk, 0);
|
|
|
|
|
|
+ if (!bdev) {
|
|
|
+ WARN(1, "Block device %s yanked out from us!\n", disk->disk_name);
|
|
|
+ goto out_mutex;
|
|
|
+ }
|
|
|
if (bdev->bd_openers)
|
|
|
goto out;
|
|
|
|
|
@@ -2041,6 +2045,7 @@ static void blkif_release(struct gendisk *disk, fmode_t mode)
|
|
|
|
|
|
out:
|
|
|
bdput(bdev);
|
|
|
+out_mutex:
|
|
|
mutex_unlock(&blkfront_mutex);
|
|
|
}
|
|
|
|