blkback: don't call vbd_size() if bd_disk is NULL
PATCH 1/1 blkback: don't call vbd_size() if bd_disk is NULL
...because vbd_size() dereferences bd_disk if bd_part is NULL.
--- drivers/xen/blkback/vbd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/xen/blkback/vbd.c +2 -1
@@ -73,7 +73,6 @@ int vbd_create(blkif_t *blkif, blkif_vde } vbd->bdev = bdev; - vbd->size =vbd_size (vbd);if (vbd->bdev->bd_disk ==NULL ) { DPRINTK("vbd_creat: device %08x doesn't exist.\n",
@@ -82,6 +81,8 @@ int vbd_create(blkif_t *blkif, blkif_vdereturn -ENOENT ; } + vbd->size =vbd_size (vbd); +if (vbd->bdev->bd_disk->flags &GENHD_FL_CD || cdrom) vbd->type |=VDISK_CDROM ;if (vbd->bdev->bd_disk->flags &GENHD_FL_REMOVABLE )
Quoted 4 lines
Quoted 1 line
Quoted 1 line · Laszlo Ersek
...because
vbd_size()dereferencesbd_diskifbd_partis NULL.Signed-off-by Laszlo Ersek<[email protected]>
Quoted 29 lines
--- drivers/xen/blkback/vbd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)diff -r
415a9b435fefdrivers/xen/blkback/vbd.cdrivers/xen/blkback/vbd.c +2
-1@@ -73,7 +73,6 @@ int vbd_create(blkif_t *blkif, blkif_vde } vbd->bdev = bdev; - vbd->size =vbd_size (vbd);if (vbd->bdev->bd_disk ==NULL ) { DPRINTK("vbd_creat: device %08x doesn't exist.\n",@@ -82,6 +81,8 @@ int vbd_create(blkif_t *blkif, blkif_vdereturn -ENOENT ; } + vbd->size =vbd_size (vbd); +if (vbd->bdev->bd_disk->flags &GENHD_FL_CD || cdrom) vbd->type |=VDISK_CDROM ;if (vbd->bdev->bd_disk->flags &GENHD_FL_REMOVABLE )_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel
Quoted 2 lines · Jan Beulich
Quoted 2 lines
Quoted 1 line
Quoted 1 line · Laszlo Ersek
...because
vbd_size()dereferencesbd_diskifbd_partis NULL.
Which would imply that doing this on disk without any partitions would crash.
Weird, I don't seem to get that problem on a disk without any partitions (just a raw disk). Or does the kernel actually set the bd_part to something even if it does not have any partitions?
Quoted 42 lines
Quoted 2 lines
Signed-off-by Laszlo Ersek<[email protected]>Acked-by Jan Beulich <[email protected]>Quoted 25 lines
--- drivers/xen/blkback/vbd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)diff -r
415a9b435fefdrivers/xen/blkback/vbd.cdrivers/xen/blkback/vbd.c +2
-1@@ -73,7 +73,6 @@ int vbd_create(blkif_t *blkif, blkif_vde } vbd->bdev = bdev; - vbd->size =vbd_size (vbd);if (vbd->bdev->bd_disk ==NULL ) { DPRINTK("vbd_creat: device %08x doesn't exist.\n",@@ -82,6 +81,8 @@ int vbd_create(blkif_t *blkif, blkif_vdereturn -ENOENT ; } + vbd->size =vbd_size (vbd); +if (vbd->bdev->bd_disk->flags &GENHD_FL_CD || cdrom) vbd->type |=VDISK_CDROM ;if (vbd->bdev->bd_disk->flags &GENHD_FL_REMOVABLE )Quoted 4 lines
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel