Message ID | 1444755947-13418-1-git-send-email-stuart.haslam@linaro.org |
---|---|
State | Accepted |
Commit | 596e0856169692956bd86554ceac78b7ec372ac3 |
Headers | show |
On Tue, Oct 13, 2015 at 12:05 PM, Stuart Haslam <stuart.haslam@linaro.org> 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 <anders.roxell@linaro.org> > Signed-off-by: Stuart Haslam <stuart.haslam@linaro.org> > Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> > --- > 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 > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp >
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); }
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 <anders.roxell@linaro.org> Signed-off-by: Stuart Haslam <stuart.haslam@linaro.org> --- 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(-)