From f639f626a7cf6c198f0ea4b649d7b86d2026f14b Mon Sep 17 00:00:00 2001 From: Stuart Haslam Date: Thu, 2 Apr 2015 17:49:20 +0100 Subject: linux-generic: pktio: fix SEGV after odp_pktio_inq_remdef() Calling odp_pktio_inq_remdef() causes the pktio's inq_default to be set to ODP_QUEUE_INVALID, but when the scheduler later polls the pktio it fails to check the validity of inq_default and ends up passing a bogus pointer to queue_enq_multi(). Signed-off-by: Stuart Haslam Reviewed-by: Ciprian Barbu Signed-off-by: Maxim Uvarov --- platform/linux-generic/odp_packet_io.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'platform/linux-generic/odp_packet_io.c') diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index e7d3c1bfd..cfe5b71b6 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -685,6 +685,9 @@ int pktin_poll(pktio_entry_t *entry) if (odp_unlikely(is_free(entry))) return -1; + if (odp_unlikely(entry->s.inq_default == ODP_QUEUE_INVALID)) + return -1; + num = odp_pktio_recv(entry->s.handle, pkt_tbl, QUEUE_MULTI_MAX); if (num < 0) { -- cgit v1.2.3