summaryrefslogtreecommitdiffstats
path: root/sys/net/raw_usrreq.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2006-04-01 15:55:44 +0000
committerrwatson <rwatson@FreeBSD.org>2006-04-01 15:55:44 +0000
commit173781a39a4623af3173bfdc1e69f3a3fe4166f2 (patch)
treeed87bc7b9c54b39e377be1c3f07498feba81e4b0 /sys/net/raw_usrreq.c
parent5965562ffef852fa5b51c73adfd2fe5b75e16380 (diff)
downloadFreeBSD-src-173781a39a4623af3173bfdc1e69f3a3fe4166f2.zip
FreeBSD-src-173781a39a4623af3173bfdc1e69f3a3fe4166f2.tar.gz
In raw and raw-derived socket types, maintain and enforce invariant that
the so_pcb pointer on the socket is always non-NULL. This eliminates countless unnecessary error checks, replacing them with assertions. MFC after: 3 months
Diffstat (limited to 'sys/net/raw_usrreq.c')
-rw-r--r--sys/net/raw_usrreq.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/sys/net/raw_usrreq.c b/sys/net/raw_usrreq.c
index 300dd91..33991a3 100644
--- a/sys/net/raw_usrreq.c
+++ b/sys/net/raw_usrreq.c
@@ -153,11 +153,9 @@ raw_uabort(struct socket *so)
static int
raw_uattach(struct socket *so, int proto, struct thread *td)
{
- struct rawcb *rp = sotorawcb(so);
int error;
- if (rp == 0)
- return EINVAL;
+ KASSERT(sotorawcb(so) == NULL, ("raw_uattach: rp != NULL"));
if (td && (error = suser(td)) != 0)
return error;
return raw_attach(so, proto);
@@ -183,9 +181,7 @@ raw_udetach(struct socket *so)
{
struct rawcb *rp = sotorawcb(so);
- if (rp == 0)
- return;
-
+ KASSERT(rp != NULL, ("raw_udetach: rp == NULL"));
raw_detach(rp);
}
@@ -194,8 +190,7 @@ raw_udisconnect(struct socket *so)
{
struct rawcb *rp = sotorawcb(so);
- if (rp == 0)
- return EINVAL;
+ KASSERT(rp != NULL, ("raw_udisconnect: rp == NULL"));
if (rp->rcb_faddr == 0) {
return ENOTCONN;
}
@@ -211,8 +206,7 @@ raw_upeeraddr(struct socket *so, struct sockaddr **nam)
{
struct rawcb *rp = sotorawcb(so);
- if (rp == 0)
- return EINVAL;
+ KASSERT(rp != NULL, ("raw_upeeraddr: rp == NULL"));
if (rp->rcb_faddr == 0) {
return ENOTCONN;
}
@@ -230,10 +224,7 @@ raw_usend(struct socket *so, int flags, struct mbuf *m,
int error;
struct rawcb *rp = sotorawcb(so);
- if (rp == 0) {
- error = EINVAL;
- goto release;
- }
+ KASSERT(rp != NULL, ("raw_usend: rp == NULL"));
if (flags & PRUS_OOB) {
error = EOPNOTSUPP;
@@ -269,10 +260,8 @@ release:
static int
raw_ushutdown(struct socket *so)
{
- struct rawcb *rp = sotorawcb(so);
- if (rp == 0)
- return EINVAL;
+ KASSERT(sotorawcb(so) != NULL, ("raw_ushutdown: rp == NULL"));
socantsendmore(so);
return 0;
}
@@ -282,8 +271,7 @@ raw_usockaddr(struct socket *so, struct sockaddr **nam)
{
struct rawcb *rp = sotorawcb(so);
- if (rp == 0)
- return EINVAL;
+ KASSERT(rp != NULL, ("raw_usockaddr: rp == NULL"));
if (rp->rcb_laddr == 0)
return EINVAL;
*nam = sodupsockaddr(rp->rcb_laddr, M_WAITOK);
OpenPOWER on IntegriCloud