From owner-freebsd-bugs Mon Dec 1 00:20:07 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id AAA19040 for bugs-outgoing; Mon, 1 Dec 1997 00:20:07 -0800 (PST) (envelope-from owner-freebsd-bugs) Received: (from gnats@localhost) by hub.freebsd.org (8.8.7/8.8.7) id AAA19011; Mon, 1 Dec 1997 00:20:02 -0800 (PST) (envelope-from gnats) Resent-Date: Mon, 1 Dec 1997 00:20:02 -0800 (PST) Resent-Message-Id: <199712010820.AAA19011@hub.freebsd.org> Resent-From: gnats (GNATS Management) Resent-To: freebsd-bugs Resent-Reply-To: FreeBSD-gnats@FreeBSD.ORG, Andre Albsmeier Received: from david.siemens.de (david.siemens.de [139.23.36.11]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id AAA18603 for ; Mon, 1 Dec 1997 00:13:34 -0800 (PST) (envelope-from andre.albsmeier@mchp.siemens.de) Received: from salomon.mchp.siemens.de (mail.siemens.de [139.23.33.13]) by david.siemens.de (8.8.8/8.8.8) with ESMTP id JAA07676 for ; Mon, 1 Dec 1997 09:13:27 +0100 (MET) Received: from curry.mchp.siemens.de (daemon@curry.mchp.siemens.de [146.180.31.23]) by salomon.mchp.siemens.de (8.8.8/8.8.5) with ESMTP id JAA12228 for ; Mon, 1 Dec 1997 09:13:31 +0100 (CET) Received: (from daemon@localhost) by curry.mchp.siemens.de (8.8.7/8.8.7) id JAA29362 for ; Mon, 1 Dec 1997 09:13:31 +0100 (MET) Message-Id: <199712010813.JAA05947@intern> Date: Mon, 1 Dec 1997 09:13:17 +0100 (CET) From: Andre Albsmeier To: FreeBSD-gnats-submit@FreeBSD.ORG X-Send-Pr-Version: 3.2 Subject: kern/5186: bug in diskslice_machdep.c (fix included) Sender: owner-freebsd-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >Number: 5186 >Category: kern >Synopsis: bug in diskslice_machdep.c (fix included) >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Dec 1 00:20:01 PST 1997 >Last-Modified: >Originator: Andre Albsmeier >Organization: >Release: FreeBSD 2.2.5-STABLE i386 >Environment: 2.2.5-STABLE, but might be the others as well >Description: Either the code or the comment above it is wrong in sys/i386/isa/diskslice_machdep.c: /* * If ssector1 is on a cylinder >= 1024, then ssector can't be right. * Allow the C/H/S for it to be 1023/ntracks-1/nsectors, or correct * apart from the cylinder being reduced modulo 1024. Always allow * 1023/255/63. */ if (ssector < ssector1 && ((chs_ssect == nsectors && dp->dp_shd == ntracks - 1 && chs_scyl == 1023) || (secpercyl != 0 && (ssector1 - ssector) % (1024 * secpercyl) == 0)) || (dp->dp_scyl == 255 && dp->dp_shd == 255 && dp->dp_ssect == 255)) { Since we can't enter 255 for the number of sectors, I think it's the code. That would also match the numbers used by "disklabel -B"... The same applies a few lines below for the end of the partition. >How-To-Repeat: Look at sys/i386/isa/diskslice_machdep.c :-) >Fix: --- diskslice_machdep.c.ORI Mon Dec 1 08:23:51 1997 +++ diskslice_machdep.c Mon Dec 1 08:57:27 1997 @@ -108,8 +108,8 @@ && chs_scyl == 1023) || (secpercyl != 0 && (ssector1 - ssector) % (1024 * secpercyl) == 0)) - || (dp->dp_scyl == 255 && dp->dp_shd == 255 - && dp->dp_ssect == 255)) { + || (dp->dp_scyl == 1023 && dp->dp_shd == 255 + && dp->dp_ssect == 63)) { TRACE(("%s: C/H/S start %d/%d/%d, start %lu: allow\n", sname, chs_scyl, dp->dp_shd, chs_ssect, ssector1)); ssector = ssector1; @@ -127,8 +127,8 @@ && chs_ecyl == 1023) || (secpercyl != 0 && (esector1 - esector) % (1024 * secpercyl) == 0)) - || (dp->dp_ecyl == 255 && dp->dp_ehd == 255 - && dp->dp_esect == 255)) { + || (dp->dp_ecyl == 1023 && dp->dp_ehd == 255 + && dp->dp_esect == 63)) { TRACE(("%s: C/H/S end %d/%d/%d, end %lu: allow\n", sname, chs_ecyl, dp->dp_ehd, chs_esect, esector1)); esector = esector1; >Audit-Trail: >Unformatted: