diff options
author | Robert Watson <rwatson@FreeBSD.org> | 2006-04-01 15:55:44 +0000 |
---|---|---|
committer | Robert Watson <rwatson@FreeBSD.org> | 2006-04-01 15:55:44 +0000 |
commit | 0154484bef027a2d9ac7575e85ca4347b34c72e8 (patch) | |
tree | ed87bc7b9c54b39e377be1c3f07498feba81e4b0 /sys/net/raw_usrreq.c | |
parent | 3c3c80e4c8f3ee23a659b3e7a4e5fe25eedaac7a (diff) | |
download | src-0154484bef027a2d9ac7575e85ca4347b34c72e8.tar.gz src-0154484bef027a2d9ac7575e85ca4347b34c72e8.zip |
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
Notes
Notes:
svn path=/head/; revision=157372
Diffstat (limited to 'sys/net/raw_usrreq.c')
-rw-r--r-- | sys/net/raw_usrreq.c | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/sys/net/raw_usrreq.c b/sys/net/raw_usrreq.c index 300dd917eac2..33991a312f65 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); |