]> xenbits.xensource.com Git - xen.git/commitdiff
PV-GRUB: fix blk access at end of disk
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Fri, 21 Mar 2014 01:56:56 +0000 (02:56 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Fri, 4 Apr 2014 15:21:50 +0000 (16:21 +0100)
GRUB usually always loads a whole disk track, even if that means going
beyond the end of the disk.  We thus have to gracefully return an error,
instead of letting the blkfront go panic.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
(cherry picked from commit 51e18e41e39a682de5a2e60ad86048dc6344efec)
(cherry picked from commit 03eb5134056d61167e6781eecf7e570b491bda73)

stubdom/grub/mini-os.c

index 8cecf9013fad4a565f56169b9d3c66cae16d3a6f..64ab962feef51d2f028f8a4d74cafdced2fc9ddf 100644 (file)
@@ -126,6 +126,9 @@ biosdisk (int read, int drive, struct geometry *geometry,
     if (i >= blk_nb)
         return -1;
 
+    if (sector + nsec > geometry->total_sectors)
+      return -1;
+
     aiocb.aio_dev = blk_dev[i];
     aiocb.aio_buf = addr;
     aiocb.aio_nbytes = (size_t)nsec * blk_info[i].sector_size;