diff options
-rw-r--r-- | src/svm/svmtool.c | 1 | ||||
-rw-r--r-- | src/vnet/classify/classify_api.c | 8 | ||||
-rw-r--r-- | src/vnet/ethernet/node.c | 4 |
3 files changed, 6 insertions, 7 deletions
diff --git a/src/svm/svmtool.c b/src/svm/svmtool.c index 61f8372e4e0..60859674298 100644 --- a/src/svm/svmtool.c +++ b/src/svm/svmtool.c @@ -265,6 +265,7 @@ svm_existing_region_map_nolock (void *root_arg, svm_map_region_args_t * a) svm_pop_heap (oldheap); return rp; } + region_unlock (root_rp); return 0; } diff --git a/src/vnet/classify/classify_api.c b/src/vnet/classify/classify_api.c index 4b182ca9a0a..7c08528f58a 100644 --- a/src/vnet/classify/classify_api.c +++ b/src/vnet/classify/classify_api.c @@ -101,11 +101,9 @@ static void vl_api_classify_pcap_lookup_table_t_handler u32 mask_len = ntohl (mp->mask_len); u32 sw_if_index = ntohl (mp->sw_if_index); - if (n_skip > 5 - || 0 <= n_match || n_match > 5 - || mask_len != n_match * sizeof (u32x4) - || sw_if_index == ~0 - || sw_if_index >= vec_len (cm->classify_table_index_by_sw_if_index)) + if (n_skip > 5 || n_match == 0 || n_match > 5 || + mask_len != n_match * sizeof (u32x4) || sw_if_index == ~0 || + sw_if_index >= vec_len (cm->classify_table_index_by_sw_if_index)) { rv = VNET_API_ERROR_INVALID_VALUE; goto out; diff --git a/src/vnet/ethernet/node.c b/src/vnet/ethernet/node.c index efe7290d19a..f4f84f8ca45 100644 --- a/src/vnet/ethernet/node.c +++ b/src/vnet/ethernet/node.c @@ -1340,7 +1340,7 @@ ethernet_input_inline (vlib_main_t * vm, } else { - if (ei->flags & ETHERNET_INTERFACE_FLAG_STATUS_L3) + if (ei && (ei->flags & ETHERNET_INTERFACE_FLAG_STATUS_L3)) goto skip_dmac_check01; dmacs[0] = *(u64 *) e0; @@ -1584,7 +1584,7 @@ ethernet_input_inline (vlib_main_t * vm, } else { - if (ei->flags & ETHERNET_INTERFACE_FLAG_STATUS_L3) + if (ei && ei->flags & ETHERNET_INTERFACE_FLAG_STATUS_L3) goto skip_dmac_check0; dmacs[0] = *(u64 *) e0; |