summaryrefslogtreecommitdiff
path: root/sys/ufs/lfs/lfs_segment.c
diff options
context:
space:
mode:
authordholland <dholland@NetBSD.org>2015-08-02 18:18:46 +0000
committerdholland <dholland@NetBSD.org>2015-08-02 18:18:46 +0000
commit0452e472993c7542fb1b8ef2bbeede4e9ded07b2 (patch)
treed205bf092e5157f6cbee18f0c5945e1561f38f2b /sys/ufs/lfs/lfs_segment.c
parentce7ab97df2d93f089223154db810050d22f81163 (diff)
Pass the fs object to LFS_MAX_DADDR so it can check lfs_is64.
Remove some hackish intentional 64->32 truncations next to the checks using LFS_MAX_DADDR, and tackle the problem they handled in bmap instead. The problem: the magic block pointer value UNWRITTEN has magic value -2, and if it's not handled specifically, uint32 -> uint64 promotion turns it into 4294967294, which then causes consternation and monkeyhouse downstream. What's here is still kind of a hack, but it's a step forward.
Diffstat (limited to 'sys/ufs/lfs/lfs_segment.c')
-rw-r--r--sys/ufs/lfs/lfs_segment.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/ufs/lfs/lfs_segment.c b/sys/ufs/lfs/lfs_segment.c
index b1cabdf9299..9c9dcf11abf 100644
--- a/sys/ufs/lfs/lfs_segment.c
+++ b/sys/ufs/lfs/lfs_segment.c
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_segment.c,v 1.250 2015/08/02 18:18:10 dholland Exp $ */
+/* $NetBSD: lfs_segment.c,v 1.251 2015/08/02 18:18:46 dholland Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_segment.c,v 1.250 2015/08/02 18:18:10 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_segment.c,v 1.251 2015/08/02 18:18:46 dholland Exp $");
#define _VFS_VNODE_PRIVATE /* XXX: check for VI_MARKER, this has to go */
@@ -1473,8 +1473,7 @@ lfs_update_single(struct lfs *fs, struct segment *sp,
if (error)
panic("lfs_updatemeta: ulfs_bmaparray returned %d", error);
- daddr = (daddr_t)((int32_t)daddr); /* XXX ondisk32 */
- KASSERT(daddr <= LFS_MAX_DADDR);
+ KASSERT(daddr <= LFS_MAX_DADDR(fs));
if (daddr > 0)
daddr = LFS_DBTOFSB(fs, daddr);