From 4a3594c9b1e1b1b7f30e3eda058d1b7d63518776 Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Thu, 26 Apr 2012 12:51:03 +0200 Subject: [PATCH] * grub-core/disk/diskfilter.c (read_segment): Fix the case when disknr falls on Q syndrom. --- ChangeLog | 5 +++++ grub-core/disk/diskfilter.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index eadfdf375..beca299c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-04-26 Vladimir Serbinenko + + * grub-core/disk/diskfilter.c (read_segment): Fix the case when disknr + falls on Q syndrom. + 2012-04-26 Vladimir Serbinenko * grub-core/fs/nilfs2.c (grub_nilfs2_palloc_entry_offset_log): diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c index 06cc7e75f..ede79ac1e 100644 --- a/grub-core/disk/diskfilter.c +++ b/grub-core/disk/diskfilter.c @@ -723,8 +723,12 @@ read_segment (struct grub_diskfilter_segment *seg, grub_disk_addr_t sector, else { disknr -= seg->node_count; - if (disknr == p) - disknr += n; + if ((disknr >= p && disknr < p + n) + || (disknr + seg->node_count >= p + && disknr + seg->node_count < p + n)) + disknr = p + n; + if (disknr >= seg->node_count) + disknr -= seg->node_count; } } else -- 2.39.5