Module Name: src Committed By: christos Date: Sun Mar 18 15:32:48 UTC 2018
Modified Files: src/sys/kern: uipc_socket2.c src/sys/sys: socketvar.h Log Message: - Convert sb_lowat to unsigned for consistency. There are no negative value uses - Check for overflow as mentioned in the comment - Sprinkle const To generate a diff of this commit: cvs rdiff -u -r1.126 -r1.127 src/sys/kern/uipc_socket2.c cvs rdiff -u -r1.148 -r1.149 src/sys/sys/socketvar.h 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/uipc_socket2.c diff -u src/sys/kern/uipc_socket2.c:1.126 src/sys/kern/uipc_socket2.c:1.127 --- src/sys/kern/uipc_socket2.c:1.126 Thu Jul 6 13:42:39 2017 +++ src/sys/kern/uipc_socket2.c Sun Mar 18 11:32:48 2018 @@ -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 @@ solockretry(struct socket *so, kmutex_t } 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) Index: src/sys/sys/socketvar.h diff -u src/sys/sys/socketvar.h:1.148 src/sys/sys/socketvar.h:1.149 --- src/sys/sys/socketvar.h:1.148 Fri Mar 16 13:35:13 2018 +++ src/sys/sys/socketvar.h Sun Mar 18 11:32:48 2018 @@ -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 @@ struct sockbuf { 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 sofamily(const struct socket *); 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 sockargs(struct mbuf **, const void 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 @@ sb_notify(struct sockbuf *sb) /* * 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 @@ sosendallatonce(struct socket *so) /* 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 @@ soreadable(struct socket *so) /* can we write something to so? */ static inline int -sowritable(struct socket *so) +sowritable(const struct socket *so) { KASSERT(solocked(so));