NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/47676: Off-by-one error in reported CD capacity means last sector cannot be read



The following reply was made to PR kern/47676; it has been noted by GNATS.

From: "Mark" <markk%clara.co.uk@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: kern-bug-people%netbsd.org@localhost,
 gnats-admin%netbsd.org@localhost,
 netbsd-bugs%netbsd.org@localhost
Subject: Re: kern/47676: Off-by-one error in reported CD capacity means last
 sector cannot be read
Date: Thu, 21 Mar 2013 17:57:21 -0000

 On Thu, March 21, 2013 17:30, Michael van Elst wrote:
 > The following reply was made to PR kern/47676; it has been noted by GNATS.
 >
 > From: mlelstv%serpens.de@localhost (Michael van Elst)
 > To: gnats-bugs%netbsd.org@localhost
 > Cc:
 > Subject: Re: kern/47676: Off-by-one error in reported CD capacity means
 > last sector cannot be read
 > Date: Thu, 21 Mar 2013 17:28:31 +0000 (UTC)
 >
 >  Seems to be slightly more complex.
 >
 >  read_cd_capacity(struct scsipi_periph *periph, u_int *blksize, u_long
 > *size)
 >  error = read_cd_capacity(cd->sc_periph, &blksize, &size);
 >  error = read_cd_capacity(cd->sc_periph, &blksize, &size);
 >  error = read_cd_capacity(periph, &mmc_discinfo->sector_size, &last_lba);
 >
 >  One time the caller apparently expects the last_lba value as is returned
 >  by the READ RECORDED CD CAPACITY command.
 
 I don't think the caller does, though the last_lba variable name is quite
 misleading.
 
 The caller is the mmc_getdiscinfo() function in src/sys/dev/scsipi/cd.c.
 Code around line 3005 in the NetBSD 6.0.1 source:
        error = read_cd_capacity(periph, &mmc_discinfo->sector_size, &last_lba);
        if (error)
                goto out;
 
        mmc_discinfo->last_possible_lba = (uint32_t) last_lba - 1;
 
 So last_possible_lba is set assuming that the "last_lba" variable is
 actually the total number of sectors, i.e. the number of the last LBA + 1.
 No code change is needed there, though someone might want to rename
 last_lba to be less confusing.
 
 
 


Home | Main Index | Thread Index | Old Index