From: Vladimir 'phcoder' Serbinenko Date: Sat, 24 Dec 2011 01:43:21 +0000 (+0100) Subject: * grub-core/kern/disk.c (grub_disk_read): Fix hook calling for X-Git-Tag: 2.00~833 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=379586ad7d3093379d6543edb2607b8dcf1c37df;p=thirdparty%2Fgrub.git * grub-core/kern/disk.c (grub_disk_read): Fix hook calling for unaligned segments. --- diff --git a/ChangeLog b/ChangeLog index 8c4a5b468..18f6778c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-12-24 Vladimir Serbinenko + + * grub-core/kern/disk.c (grub_disk_read): Fix hook calling for + unaligned segments. + 2011-12-24 Vladimir Serbinenko * grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Add ieee1275/ diff --git a/grub-core/kern/disk.c b/grub-core/kern/disk.c index 460d8778f..fb9782ff9 100644 --- a/grub-core/kern/disk.c +++ b/grub-core/kern/disk.c @@ -607,12 +607,13 @@ grub_disk_read (grub_disk_t disk, grub_disk_addr_t sector, while (l) { - (disk->read_hook) (s, o, - ((l > GRUB_DISK_SECTOR_SIZE) - ? GRUB_DISK_SECTOR_SIZE - : l)); + grub_size_t cl; + cl = GRUB_DISK_SECTOR_SIZE - o; + if (cl > l) + cl = l; + (disk->read_hook) (s, o, cl); s++; - l -= GRUB_DISK_SECTOR_SIZE - o; + l -= cl; o = 0; } }