Module Name: src
Committed By: dsl
Date: Sat Nov 28 22:38:07 UTC 2009
Modified Files:
src/sys/kern: subr_disk.c
Log Message:
When truncating a request in bounds_check_with_mediasize() multiply
by the provided sector size instead of 512.
Fixes last bit of PR/31565
To generate a diff of this commit:
cvs rdiff -u -r1.98 -r1.99 src/sys/kern/subr_disk.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/subr_disk.c
diff -u src/sys/kern/subr_disk.c:1.98 src/sys/kern/subr_disk.c:1.99
--- src/sys/kern/subr_disk.c:1.98 Fri Nov 27 11:23:50 2009
+++ src/sys/kern/subr_disk.c Sat Nov 28 22:38:07 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_disk.c,v 1.98 2009/11/27 11:23:50 tsutsui Exp $ */
+/* $NetBSD: subr_disk.c,v 1.99 2009/11/28 22:38:07 dsl Exp $ */
/*-
* Copyright (c) 1996, 1997, 1999, 2000, 2009 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.98 2009/11/27 11:23:50 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.99 2009/11/28 22:38:07 dsl Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -315,8 +315,8 @@
/*
* Bounds checking against the media size, used for the raw partition.
- * The sector size passed in should currently always be DEV_BSIZE,
- * and the media size the size of the device in DEV_BSIZE sectors.
+ * secsize, mediasize and b_blkno must all be the same units.
+ * Possibly this has to be DEV_BSIZE (512).
*/
int
bounds_check_with_mediasize(struct buf *bp, int secsize, uint64_t mediasize)
@@ -338,7 +338,7 @@
return 0;
}
/* Otherwise, truncate request. */
- bp->b_bcount = sz << DEV_BSHIFT;
+ bp->b_bcount = sz * secsize;
}
return 1;