From 379586ad7d3093379d6543edb2607b8dcf1c37df Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Sat, 24 Dec 2011 02:43:21 +0100 Subject: [PATCH] * grub-core/kern/disk.c (grub_disk_read): Fix hook calling for unaligned segments. --- ChangeLog | 5 +++++ grub-core/kern/disk.c | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) 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; } }