}
skb = sdp_stream_alloc_skb(sk, size, gfp);
- BUG_ON(!skb);
+ if (unlikely(!skb))
+ return NULL;
skb_header_release(skb);
struct sdp_chrecvbuf *resp_size;
skb = sdp_alloc_skb(sk, SDP_MID_CHRCVBUF_ACK, sizeof(*resp_size), gfp);
+ if (unlikely(!skb))
+ return NULL;
resp_size = (struct sdp_chrecvbuf *)skb_put(skb, sizeof *resp_size);
resp_size->size = htonl(size);
struct sdp_srcah *srcah;
skb = sdp_alloc_skb(sk, SDP_MID_SRCAVAIL, sizeof(*srcah), gfp);
+ if (unlikely(!skb))
+ return NULL;
srcah = (struct sdp_srcah *)skb_put(skb, sizeof(*srcah));
srcah->len = htonl(len);
struct sdp_rrch *rrch;
skb = sdp_alloc_skb(sk, SDP_MID_RDMARDCOMPL, sizeof(*rrch), gfp);
+ if (unlikely(!skb))
+ return NULL;
rrch = (struct sdp_rrch *)skb_put(skb, sizeof(*rrch));
rrch->len = htonl(len);
ring_tail(ssk->rx_ring) >= ssk->recv_request_head &&
tx_credits(ssk) >= SDP_MIN_TX_CREDITS &&
sdp_tx_ring_slots_left(ssk)) {
- ssk->recv_request = 0;
-
skb = sdp_alloc_skb_chrcvbuf_ack(sk,
ssk->recv_frags * PAGE_SIZE, gfp);
-
- sdp_post_send(ssk, skb);
- post_count++;
+ if (likely(skb)) {
+ ssk->recv_request = 0;
+ sdp_post_send(ssk, skb);
+ post_count++;
+ }
}
if (tx_credits(ssk) <= SDP_MIN_TX_CREDITS &&
(TCPF_ESTABLISHED | TCPF_FIN_WAIT1))) {
skb = sdp_alloc_skb_data(&ssk->isk.sk, 0, gfp);
- sdp_post_send(ssk, skb);
-
- SDPSTATS_COUNTER_INC(post_send_credits);
- post_count++;
+ if (likely(skb)) {
+ sdp_post_send(ssk, skb);
+ SDPSTATS_COUNTER_INC(post_send_credits);
+ post_count++;
+ }
}
/* send DisConn if needed
if (unlikely(ssk->sdp_disconnect) &&
!ssk->isk.sk.sk_send_head &&
tx_credits(ssk) > 1) {
- ssk->sdp_disconnect = 0;
-
skb = sdp_alloc_skb_disconnect(sk, gfp);
- sdp_post_send(ssk, skb);
-
- post_count++;
+ if (likely(skb)) {
+ ssk->sdp_disconnect = 0;
+ sdp_post_send(ssk, skb);
+ post_count++;
+ }
}
if (post_count)
if (rx_sa && !(flags & MSG_PEEK)) {
rc = sdp_post_rdma_rd_compl(sk, rx_sa, offset);
- BUG_ON(rc);
-
+ if (unlikely(rc)) {
+ err = rc;
+ goto out;
+ }
}
if (!rx_sa && offset < skb->len)
gfp_page = GFP_HIGHUSER;
}
+ if (unlikely(!skb))
+ return -1;
+
sdp_prf(&ssk->isk.sk, skb, "Posting skb");
- /* FIXME */
- BUG_ON(!skb);
h = (struct sdp_bsdh *)skb->head;
rx_req = ssk->rx_ring.buffer + (id & (SDP_RX_SIZE - 1));
sdp_dbg_data(&ssk->isk.sk, "Posting srcavail cancel\n");
skb = sdp_alloc_skb_srcavail_cancel(sk, 0);
+ if (unlikely(!skb))
+ return -ENOMEM;
+
sdp_skb_entail(sk, skb);
sdp_post_sends(ssk, 0);
return 0;
skb = sdp_alloc_skb_rdmardcompl(sk, copied, 0);
+ if (unlikely(!skb))
+ return -ENOMEM;
sdp_skb_entail(sk, skb);
{
struct sk_buff *skb = sdp_alloc_skb_sendsm(sk, 0);
+ if (unlikely(!skb))
+ return -ENOMEM;
+
sdp_skb_entail(sk, skb);
sdp_post_sends(sdp_sk(sk), 0);