On Tue, Oct 13, 2015 at 12:05 PM, Stuart Haslam <[email protected]>
wrote:

> If one of the pktio interfaces used by the test unexpectedly fails to
> open an invalid pktio handle is passed on to further API calls
> resulting in undefined behaviour.
>
> Reported-by: Anders Roxell <[email protected]>
> Signed-off-by: Stuart Haslam <[email protected]>
>

Reviewed-by: Bill Fischofer <[email protected]>


> ---
> This causes a seg fault when testing the linux-generic implementation,
> it can be easily reproduced with;
>
> ODP_PKTIO_IF0=blah ODP_PKTIO_IF1=foo ./test/validation/pktio/pktio_main
>
>  test/validation/pktio/pktio.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c
> index 118fe89..d4b447a 100644
> --- a/test/validation/pktio/pktio.c
> +++ b/test/validation/pktio/pktio.c
> @@ -520,7 +520,9 @@ void pktio_test_mtu(void)
>  {
>         int ret;
>         int mtu;
> +
>         odp_pktio_t pktio = create_pktio(iface_name[0],
> ODP_QUEUE_TYPE_SCHED, 0);
> +       CU_ASSERT_FATAL(pktio != ODP_PKTIO_INVALID);
>
>         mtu = odp_pktio_mtu(pktio);
>         CU_ASSERT(mtu > 0);
> @@ -534,7 +536,9 @@ void pktio_test_mtu(void)
>  void pktio_test_promisc(void)
>  {
>         int ret;
> +
>         odp_pktio_t pktio = create_pktio(iface_name[0],
> ODP_QUEUE_TYPE_SCHED, 0);
> +       CU_ASSERT_FATAL(pktio != ODP_PKTIO_INVALID);
>
>         ret = odp_pktio_promisc_mode_set(pktio, 1);
>         CU_ASSERT(0 == ret);
> @@ -562,6 +566,7 @@ void pktio_test_mac(void)
>         odp_pktio_t pktio;
>
>         pktio = create_pktio(iface_name[0], ODP_QUEUE_TYPE_SCHED, 0);
> +       CU_ASSERT_FATAL(pktio != ODP_PKTIO_INVALID);
>
>         printf("testing mac for %s\n", iface_name[0]);
>
> @@ -589,7 +594,7 @@ void pktio_test_inq_remdef(void)
>         int i;
>
>         pktio = create_pktio(iface_name[0], ODP_QUEUE_TYPE_SCHED, 0);
> -       CU_ASSERT(pktio != ODP_PKTIO_INVALID);
> +       CU_ASSERT_FATAL(pktio != ODP_PKTIO_INVALID);
>         CU_ASSERT(create_inq(pktio, ODP_QUEUE_TYPE_POLL) == 0);
>         inq = odp_pktio_inq_getdef(pktio);
>         CU_ASSERT(inq != ODP_QUEUE_INVALID);
> @@ -617,7 +622,7 @@ void pktio_test_open(void)
>         /* test the sequence open->close->open->close() */
>         for (i = 0; i < 2; ++i) {
>                 pktio = create_pktio(iface_name[0], ODP_QUEUE_TYPE_SCHED,
> 0);
> -               CU_ASSERT(pktio != ODP_PKTIO_INVALID);
> +               CU_ASSERT_FATAL(pktio != ODP_PKTIO_INVALID);
>                 CU_ASSERT(odp_pktio_close(pktio) == 0);
>         }
>
> @@ -656,7 +661,7 @@ void pktio_test_inq(void)
>         odp_pktio_t pktio;
>
>         pktio = create_pktio(iface_name[0], ODP_QUEUE_TYPE_SCHED, 0);
> -       CU_ASSERT(pktio != ODP_PKTIO_INVALID);
> +       CU_ASSERT_FATAL(pktio != ODP_PKTIO_INVALID);
>
>         CU_ASSERT(create_inq(pktio, ODP_QUEUE_TYPE_POLL) == 0);
>         CU_ASSERT(destroy_inq(pktio) == 0);
> @@ -675,7 +680,7 @@ static void pktio_test_start_stop(void)
>
>         for (i = 0; i < num_ifaces; i++) {
>                 pktio[i] = create_pktio(iface_name[i],
> ODP_QUEUE_TYPE_SCHED, 0);
> -               CU_ASSERT(pktio[i] != ODP_PKTIO_INVALID);
> +               CU_ASSERT_FATAL(pktio[i] != ODP_PKTIO_INVALID);
>                 create_inq(pktio[i],  ODP_QUEUE_TYPE_SCHED);
>         }
>
> --
> 2.1.1
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to