From: Chunsong Feng Date: Wed, 20 Nov 2019 05:56:50 +0000 (+0800) Subject: msg/async/dpdk: fix SEGV caused by zero length packet X-Git-Tag: v15.1.0~654^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=eb326c111527b4cb1b8a3ab572b234c1347c00c6;p=ceph-ci.git msg/async/dpdk: fix SEGV caused by zero length packet calculating zero length packet checksum will cause segv, so skip sending the packet here. Fixes: https://tracker.ceph.com/issues/42805 Signed-off-by: Chunsong Feng --- diff --git a/src/msg/async/dpdk/DPDKStack.h b/src/msg/async/dpdk/DPDKStack.h index e41a8754522..65e089c6744 100644 --- a/src/msg/async/dpdk/DPDKStack.h +++ b/src/msg/async/dpdk/DPDKStack.h @@ -141,6 +141,11 @@ class NativeConnectedSocketImpl : public ConnectedSocketImpl { uint64_t seglen = 0; while (len < available && left_pbrs--) { seglen = pb->length(); + // Buffer length is zero, no need to send, so skip it + if (seglen == 0) { + ++pb; + continue; + } if (len + seglen > available) { // don't continue if we enough at least 1 fragment since no available // space for next ptr.