mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
makefs: Cast daddr_t to off_t before multiplication
Apparently some large-file systems out there, such as my powerpc64le
Linux box, define daddr_t as a 32-bit type, which is sad and stymies
cross-building disk images. Cast daddr_t to off_t before doing
arithmetic that overflows.
Reviewed by: arichardson, jrtc27, imp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D27458
(cherry picked from commit 7ef082733b)
This commit is contained in:
parent
4a6bf977ac
commit
d2c77ce6f3
2 changed files with 4 additions and 4 deletions
|
|
@ -70,7 +70,7 @@ bread(struct vnode *vp, daddr_t blkno, int size, struct ucred *u1 __unused,
|
|||
printf("%s: blkno %lld size %d\n", __func__, (long long)blkno,
|
||||
size);
|
||||
*bpp = getblk(vp, blkno, size, 0, 0, 0);
|
||||
offset = (*bpp)->b_blkno * fs->sectorsize + fs->offset;
|
||||
offset = (off_t)(*bpp)->b_blkno * fs->sectorsize + fs->offset;
|
||||
if (debug & DEBUG_BUF_BREAD)
|
||||
printf("%s: blkno %lld offset %lld bcount %ld\n", __func__,
|
||||
(long long)(*bpp)->b_blkno, (long long) offset,
|
||||
|
|
@ -130,7 +130,7 @@ bwrite(struct buf *bp)
|
|||
fsinfo_t *fs = bp->b_fs;
|
||||
|
||||
assert (bp != NULL);
|
||||
offset = bp->b_blkno * fs->sectorsize + fs->offset;
|
||||
offset = (off_t)bp->b_blkno * fs->sectorsize + fs->offset;
|
||||
if (debug & DEBUG_BUF_BWRITE)
|
||||
printf("bwrite: blkno %lld offset %lld bcount %ld\n",
|
||||
(long long)bp->b_blkno, (long long) offset,
|
||||
|
|
|
|||
|
|
@ -794,7 +794,7 @@ ffs_rdfs(daddr_t bno, int size, void *bf, const fsinfo_t *fsopts)
|
|||
int n;
|
||||
off_t offset;
|
||||
|
||||
offset = bno * fsopts->sectorsize + fsopts->offset;
|
||||
offset = (off_t)bno * fsopts->sectorsize + fsopts->offset;
|
||||
if (lseek(fsopts->fd, offset, SEEK_SET) < 0)
|
||||
err(1, "%s: seek error for sector %lld", __func__,
|
||||
(long long)bno);
|
||||
|
|
@ -818,7 +818,7 @@ ffs_wtfs(daddr_t bno, int size, void *bf, const fsinfo_t *fsopts)
|
|||
int n;
|
||||
off_t offset;
|
||||
|
||||
offset = bno * fsopts->sectorsize + fsopts->offset;
|
||||
offset = (off_t)bno * fsopts->sectorsize + fsopts->offset;
|
||||
if (lseek(fsopts->fd, offset, SEEK_SET) < 0)
|
||||
err(1, "%s: seek error for sector %lld", __func__,
|
||||
(long long)bno);
|
||||
|
|
|
|||
Loading…
Reference in a new issue