summaryrefslogtreecommitdiff
path: root/extlinux/main.c
diff options
context:
space:
mode:
authorGene Cumm <gene.cumm@gmail.com>2011-05-11 12:03:30 -0400
committerGene Cumm <gene.cumm@gmail.com>2011-05-11 14:16:51 -0400
commit73cd9bf26066cad0d4a483e31e1d89802a7ca1f9 (patch)
treee963387a0a2bd625ba2dfd772dd6e7d6b20591d9 /extlinux/main.c
parent2613174223371677d0a701a69cb7468947940d65 (diff)
downloadsyslinux-73cd9bf26066cad0d4a483e31e1d89802a7ca1f9.tar.gz
extlinux/main.c: Fix geometry handling
1) ioctl HDIO_GETGEO expects a pointer to a struct hd_geometry 2) struct stat's st_dev is the parent file used; st_rdev is what we want Reported-by: Michael Tokarev <mjt@tls.msk.ru> Tested-By: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
Diffstat (limited to 'extlinux/main.c')
-rwxr-xr-xextlinux/main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/extlinux/main.c b/extlinux/main.c
index e5212a95..6aa6202d 100755
--- a/extlinux/main.c
+++ b/extlinux/main.c
@@ -112,7 +112,7 @@ static int sysfs_get_offset(int devfd, unsigned long *start)
if ((size_t)snprintf(sysfs_name, sizeof sysfs_name,
"/sys/dev/block/%u:%u/start",
- major(st.st_dev), minor(st.st_dev))
+ major(st.st_rdev), minor(st.st_rdev))
>= sizeof sysfs_name)
return -1;
@@ -153,7 +153,7 @@ int get_geometry(int devfd, uint64_t totalbytes, struct hd_geometry *geo)
memset(geo, 0, sizeof *geo);
- if (!ioctl(devfd, HDIO_GETGEO, &geo)) {
+ if (!ioctl(devfd, HDIO_GETGEO, geo)) {
goto ok;
} else if (!ioctl(devfd, FDGETPRM, &fd_str)) {
geo->heads = fd_str.head;