Source-Changes-HG archive

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

[src/trunk]: src/sys - Convert sb_lowat to unsigned for consistency. There ar...



details:   https://anonhg.NetBSD.org/src/rev/c9f2dc7a8c1b
branches:  trunk
changeset: 321493:c9f2dc7a8c1b
user:      christos <christos%NetBSD.org@localhost>
date:      Sun Mar 18 15:32:48 2018 +0000

description:
- Convert sb_lowat to unsigned for consistency. There are no negative value
  uses
- Check for overflow as mentioned in the comment
- Sprinkle const

diffstat:

 sys/kern/uipc_socket2.c |  10 +++++-----
 sys/sys/socketvar.h     |  26 +++++++++++++-------------
 2 files changed, 18 insertions(+), 18 deletions(-)

diffs (122 lines):

diff -r 72067eb0d4df -r c9f2dc7a8c1b sys/kern/uipc_socket2.c
--- a/sys/kern/uipc_socket2.c   Sun Mar 18 13:18:39 2018 +0000
+++ b/sys/kern/uipc_socket2.c   Sun Mar 18 15:32:48 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uipc_socket2.c,v 1.126 2017/07/06 17:42:39 christos Exp $      */
+/*     $NetBSD: uipc_socket2.c,v 1.127 2018/03/18 15:32:48 christos Exp $      */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_socket2.c,v 1.126 2017/07/06 17:42:39 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_socket2.c,v 1.127 2018/03/18 15:32:48 christos Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_mbuftrace.h"
@@ -1427,16 +1427,16 @@
 }
 
 bool
-solocked(struct socket *so)
+solocked(const struct socket *so)
 {
 
        return mutex_owned(so->so_lock);
 }
 
 bool
-solocked2(struct socket *so1, struct socket *so2)
+solocked2(const struct socket *so1, const struct socket *so2)
 {
-       kmutex_t *lock;
+       const kmutex_t *lock;
 
        lock = so1->so_lock;
        if (lock != so2->so_lock)
diff -r 72067eb0d4df -r c9f2dc7a8c1b sys/sys/socketvar.h
--- a/sys/sys/socketvar.h       Sun Mar 18 13:18:39 2018 +0000
+++ b/sys/sys/socketvar.h       Sun Mar 18 15:32:48 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: socketvar.h,v 1.148 2018/03/16 17:35:13 christos Exp $ */
+/*     $NetBSD: socketvar.h,v 1.149 2018/03/18 15:32:48 christos Exp $ */
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -93,7 +93,7 @@
        u_long  sb_hiwat;               /* max actual char count */
        u_long  sb_mbcnt;               /* chars of mbufs used */
        u_long  sb_mbmax;               /* max chars of mbufs to use */
-       long    sb_lowat;               /* low water mark */
+       u_long  sb_lowat;               /* low water mark */
        struct mbuf *sb_mb;             /* the mbuf chain */
        struct mbuf *sb_mbtail;         /* the last mbuf in the chain */
        struct mbuf *sb_lastrecord;     /* first mbuf of last record in
@@ -301,6 +301,7 @@
 int    sobind(struct socket *, struct sockaddr *, struct lwp *);
 void   socantrcvmore(struct socket *);
 void   socantsendmore(struct socket *);
+void   soroverflow(struct socket *);
 int    soclose(struct socket *);
 int    soconnect(struct socket *, struct sockaddr *, struct lwp *);
 int    soconnect2(struct socket *, struct socket *);
@@ -335,8 +336,8 @@
 int    sopoll(struct socket *, int);
 struct socket *soget(bool);
 void   soput(struct socket *);
-bool   solocked(struct socket *);
-bool   solocked2(struct socket *, struct socket *);
+bool   solocked(const struct socket *);
+bool   solocked2(const struct socket *, const struct socket *);
 int    sblock(struct sockbuf *, int);
 void   sbunlock(struct sockbuf *);
 int    sowait(struct socket *, bool, int);
@@ -399,22 +400,21 @@
 
 /*
  * How much space is there in a socket buffer (so->so_snd or so->so_rcv)?
- * This is problematical if the fields are unsigned, as the space might
- * still be negative (cc > hiwat or mbcnt > mbmax).  Should detect
- * overflow and return 0.
+ * Since the fields are unsigned, detect overflow and return 0.
  */
-static inline long
-sbspace(struct sockbuf *sb)
+static inline u_long
+sbspace(const struct sockbuf *sb)
 {
 
        KASSERT(solocked(sb->sb_so));
-
+       if (sb->sb_hiwat <= sb->sb_cc || sb->sb_mbmax <= sb->sb_mbcnt)
+               return 0;
        return lmin(sb->sb_hiwat - sb->sb_cc, sb->sb_mbmax - sb->sb_mbcnt);
 }
 
 /* do we have to send all at once on a socket? */
 static inline int
-sosendallatonce(struct socket *so)
+sosendallatonce(const struct socket *so)
 {
 
        return so->so_proto->pr_flags & PR_ATOMIC;
@@ -422,7 +422,7 @@
 
 /* can we read something from so? */
 static inline int
-soreadable(struct socket *so)
+soreadable(const struct socket *so)
 {
 
        KASSERT(solocked(so));
@@ -434,7 +434,7 @@
 
 /* can we write something to so? */
 static inline int
-sowritable(struct socket *so)
+sowritable(const struct socket *so)
 {
 
        KASSERT(solocked(so));



Home | Main Index | Thread Index | Old Index