Compare commits
4
Commits
v3.1.1
...
stable-3.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
920019e0e0 | ||
|
|
9efdbc0224 | ||
|
|
28c1dde9aa | ||
|
|
ab630a065a |
No files matched your search
@@ -514,7 +514,7 @@ static int create_qp(PVRDMADev *dev, union pvrdma_cmd_req *req,
|
||||
cmd->recv_cq_handle, rings, &resp->qpn);
|
||||
if (resp->hdr.err) {
|
||||
destroy_qp_rings(rings);
|
||||
return rc;
|
||||
goto out;
|
||||
}
|
||||
|
||||
resp->max_send_wr = cmd->max_send_wr;
|
||||
|
||||
+11
-8
@@ -300,6 +300,7 @@ ip_reass(Slirp *slirp, struct ip *ip, struct ipq *fp)
|
||||
*/
|
||||
while (q != (struct ipasfrag*)&fp->frag_link &&
|
||||
ip->ip_off + ip->ip_len > q->ipf_off) {
|
||||
struct ipasfrag *prev;
|
||||
i = (ip->ip_off + ip->ip_len) - q->ipf_off;
|
||||
if (i < q->ipf_len) {
|
||||
q->ipf_len -= i;
|
||||
@@ -307,9 +308,10 @@ ip_reass(Slirp *slirp, struct ip *ip, struct ipq *fp)
|
||||
m_adj(dtom(slirp, q), i);
|
||||
break;
|
||||
}
|
||||
prev = q;
|
||||
q = q->ipf_next;
|
||||
m_free(dtom(slirp, q->ipf_prev));
|
||||
ip_deq(q->ipf_prev);
|
||||
ip_deq(prev);
|
||||
m_free(dtom(slirp, prev));
|
||||
}
|
||||
|
||||
insert:
|
||||
@@ -334,6 +336,8 @@ insert:
|
||||
q = fp->frag_link.next;
|
||||
m = dtom(slirp, q);
|
||||
|
||||
int was_ext = m->m_flags & M_EXT;
|
||||
|
||||
q = (struct ipasfrag *) q->ipf_next;
|
||||
while (q != (struct ipasfrag*)&fp->frag_link) {
|
||||
struct mbuf *t = dtom(slirp, q);
|
||||
@@ -350,13 +354,12 @@ insert:
|
||||
q = fp->frag_link.next;
|
||||
|
||||
/*
|
||||
* If the fragments concatenated to an mbuf that's
|
||||
* bigger than the total size of the fragment, then and
|
||||
* m_ext buffer was alloced. But fp->ipq_next points to
|
||||
* the old buffer (in the mbuf), so we must point ip
|
||||
* into the new buffer.
|
||||
* If the fragments concatenated to an mbuf that's bigger than the total
|
||||
* size of the fragment and the mbuf was not already using an m_ext buffer,
|
||||
* then an m_ext buffer was alloced. But fp->ipq_next points to the old
|
||||
* buffer (in the mbuf), so we must point ip into the new buffer.
|
||||
*/
|
||||
if (m->m_flags & M_EXT) {
|
||||
if (!was_ext && m->m_flags & M_EXT) {
|
||||
int delta = (char *)q - m->m_dat;
|
||||
q = (struct ipasfrag *)(m->m_ext + delta);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user