Source-Changes-HG archive

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

[src/trunk]: src/sys Change buf_nbuf()'s return value from int to u_int to av...



details:   https://anonhg.NetBSD.org/src/rev/5cb4412409c2
branches:  trunk
changeset: 965000:5cb4412409c2
user:      msaitoh <msaitoh%NetBSD.org@localhost>
date:      Mon Aug 26 10:24:39 2019 +0000

description:
Change buf_nbuf()'s return value from int to u_int to avoid undefined
behavior in wapbl_start() which extended int to size_t.

Error message was:
> UBSan: Undefined Behavior in ../../../../kern/vfs_wapbl.c:609:41, signed integer overflow: 3345138 * 1024 cannot be represented in type 'int'

>        /* XXX maybe use filesystem fragment size instead of 1024 */
>         /* XXX fix actual number of buffers reserved per filesystem. */
>         wl->wl_bufcount_max = (buf_nbuf() / 2) * 1024;

Need more work?

diffstat:

 sys/kern/vfs_bio.c |  6 +++---
 sys/sys/buf.h      |  4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diffs (45 lines):

diff -r 4068f9c7af20 -r 5cb4412409c2 sys/kern/vfs_bio.c
--- a/sys/kern/vfs_bio.c        Mon Aug 26 10:19:08 2019 +0000
+++ b/sys/kern/vfs_bio.c        Mon Aug 26 10:24:39 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vfs_bio.c,v 1.278 2018/11/24 17:52:39 maxv Exp $       */
+/*     $NetBSD: vfs_bio.c,v 1.279 2019/08/26 10:24:39 msaitoh Exp $    */
 
 /*-
  * Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -123,7 +123,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_bio.c,v 1.278 2018/11/24 17:52:39 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_bio.c,v 1.279 2019/08/26 10:24:39 msaitoh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_bufcache.h"
@@ -2177,7 +2177,7 @@
  * Nothing outside this file should really need to know about nbuf,
  * but a few things still want to read it, so give them a way to do that.
  */
-int
+u_int
 buf_nbuf(void)
 {
 
diff -r 4068f9c7af20 -r 5cb4412409c2 sys/sys/buf.h
--- a/sys/sys/buf.h     Mon Aug 26 10:19:08 2019 +0000
+++ b/sys/sys/buf.h     Mon Aug 26 10:24:39 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: buf.h,v 1.130 2019/06/28 14:56:45 jmcneill Exp $ */
+/*     $NetBSD: buf.h,v 1.131 2019/08/26 10:24:39 msaitoh Exp $ */
 
 /*-
  * Copyright (c) 1999, 2000, 2007, 2008 The NetBSD Foundation, Inc.
@@ -311,7 +311,7 @@
 void   buf_init(buf_t *);
 void   buf_destroy(buf_t *);
 int    bbusy(buf_t *, bool, int, kmutex_t *);
-int    buf_nbuf(void);
+u_int  buf_nbuf(void);
 
 void   biohist_init(void);
 



Home | Main Index | Thread Index | Old Index