* grub/asmstub.c (biosdisk): Work around a bug in linux's ez

remapping.  Problem reported by Ben Byer <bbyer@rice.edu>.
This commit is contained in:
jochen 2001-05-03 08:34:56 +00:00
parent 9e3e10d2c1
commit 68c2bd1e7b
2 changed files with 18 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2001-05-03 Jochen Hoenicke <jochen@gnu.org>
* grub/asmstub.c (biosdisk): Work around a bug in linux's ez
remapping. Problem reported by Ben Byer <bbyer@rice.edu>.
2001-03-28 Gordon Matzigkeit <gord@fig.org>
* stage2/boot.c (load_image): Don't cast entry_addr to an int, or

View file

@ -872,6 +872,19 @@ biosdisk (int subfunc, int drive, struct geometry *geometry,
switch (subfunc)
{
case BIOSDISK_READ:
#ifdef __linux__
if (sector == 0 && nsec > 1)
{
/* Work around a bug in linux's ez remapping. Linux remaps all
sectors that are read together with the MBR in one read. It
should only remap the MBR, so we split the read in two
parts. -jochen */
if (nread (fd, buf, SECTOR_SIZE) != SECTOR_SIZE)
return -1;
buf += SECTOR_SIZE;
nsec--;
}
#endif
if (nread (fd, buf, nsec * SECTOR_SIZE) != nsec * SECTOR_SIZE)
return -1;
break;