]> git.proxmox.com Git - grub2.git/commitdiff
* grub-core/disk/diskfilter.c (read_segment): Fix the case when disknr
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 26 Apr 2012 10:51:03 +0000 (12:51 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 26 Apr 2012 10:51:03 +0000 (12:51 +0200)
falls on Q syndrom.

ChangeLog
grub-core/disk/diskfilter.c

index eadfdf375472f258051d8a64cec3cba776308e8c..beca299c2d38e157979b0452781669506632740b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-04-26  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/disk/diskfilter.c (read_segment): Fix the case when disknr
+       falls on Q syndrom.
+
 2012-04-26  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/nilfs2.c (grub_nilfs2_palloc_entry_offset_log):
index 06cc7e75f4b53a2b4f5f8e6a56635dec0abd3c9b..ede79ac1e551e2b4082400701547e76b3fb68c0c 100644 (file)
@@ -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