diff mbox

[PATCHv2] linux-generic: timer fix odp_timer_pool_create return code

Message ID 1461946606-1572-1-git-send-email-maxim.uvarov@linaro.org
State Superseded
Headers show

Commit Message

Maxim Uvarov April 29, 2016, 4:16 p.m. UTC
Accodring to API return code for fail case is ODP_TIMER_POOL_INVALID
and errno set event if it's defined to NULL. Also add check on pool
alloc that input parameter is not invalid.
https://bugs.linaro.org/show_bug.cgi?id=2139

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
---
 platform/linux-generic/odp_timer.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

Comments

Bill Fischofer May 7, 2016, 11:06 p.m. UTC | #1
On Fri, Apr 29, 2016 at 11:16 AM, Maxim Uvarov <maxim.uvarov@linaro.org>
wrote:

> Accodring to API return code for fail case is ODP_TIMER_POOL_INVALID

> and errno set event if it's defined to NULL. Also add check on pool

> alloc that input parameter is not invalid.

> https://bugs.linaro.org/show_bug.cgi?id=2139

>

> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>

> ---

>  platform/linux-generic/odp_timer.c | 24 ++++++++++++------------

>  1 file changed, 12 insertions(+), 12 deletions(-)

>

> diff --git a/platform/linux-generic/odp_timer.c

> b/platform/linux-generic/odp_timer.c

> index ac72709..52cee99 100644

> --- a/platform/linux-generic/odp_timer.c

> +++ b/platform/linux-generic/odp_timer.c

> @@ -214,16 +214,15 @@ static inline odp_timer_t tp_idx_to_handle(struct

> odp_timer_pool_s *tp,

>  static void itimer_init(odp_timer_pool *tp);

>  static void itimer_fini(odp_timer_pool *tp);

>

> -static odp_timer_pool *odp_timer_pool_new(

> -       const char *_name,

> -       const odp_timer_pool_param_t *param)

> +static odp_timer_pool_t odp_timer_pool_new(const char *_name,

> +                                          const odp_timer_pool_param_t

> *param)

>  {

>         uint32_t tp_idx = odp_atomic_fetch_add_u32(&num_timer_pools, 1);

>         if (odp_unlikely(tp_idx >= MAX_TIMER_POOLS)) {

>                 /* Restore the previous value */

>                 odp_atomic_sub_u32(&num_timer_pools, 1);

>                 __odp_errno = ENFILE; /* Table overflow */

> -               return NULL;

> +               return ODP_TIMER_POOL_INVALID;

>         }

>         size_t sz0 = ODP_ALIGN_ROUNDUP(sizeof(odp_timer_pool),

>                         ODP_CACHE_LINE_SIZE);

> @@ -787,10 +786,9 @@ odp_timer_pool_create(const char *name,

>         /* Verify that we have a valid (non-zero) timer resolution */

>         if (param->res_ns == 0) {

>                 __odp_errno = EINVAL;

> -               return NULL;

> +               return ODP_TIMER_POOL_INVALID;

>         }

> -       odp_timer_pool_t tp = odp_timer_pool_new(name, param);

> -       return tp;

> +       return odp_timer_pool_new(name, param);

>  }

>

>  void odp_timer_pool_start(void)

> @@ -833,15 +831,17 @@ odp_timer_t odp_timer_alloc(odp_timer_pool_t tpid,

>                             odp_queue_t queue,

>                             void *user_ptr)

>  {

> +       odp_timer_t hdl;

> +

> +       if (odp_unlikely(tpid == ODP_TIMER_POOL_INVALID)

>


Missing closing ) causes compilation failure


> +               ODP_ABORT("Invalid timer pool.\n");

>         if (odp_unlikely(queue == ODP_QUEUE_INVALID))

>                 ODP_ABORT("%s: Invalid queue handle\n", tpid->name);

>         /* We don't care about the validity of user_ptr because we will not

>          * attempt to dereference it */

> -       odp_timer_t hdl = timer_alloc(tpid, queue, user_ptr);

> -       if (odp_likely(hdl != ODP_TIMER_INVALID)) {

> -               /* Success */

> -               return hdl;

> -       }

> +       hdl = timer_alloc(tpid, queue, user_ptr);

> +       if (odp_likely(hdl != ODP_TIMER_INVALID))

> +               return hdl; /* Success */

>         /* errno set by timer_alloc() */

>         return ODP_TIMER_INVALID;

>  }

> --

> 2.7.1.250.gff4ea60

>

> _______________________________________________

> lng-odp mailing list

> lng-odp@lists.linaro.org

> https://lists.linaro.org/mailman/listinfo/lng-odp

>
diff mbox

Patch

diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c
index ac72709..52cee99 100644
--- a/platform/linux-generic/odp_timer.c
+++ b/platform/linux-generic/odp_timer.c
@@ -214,16 +214,15 @@  static inline odp_timer_t tp_idx_to_handle(struct odp_timer_pool_s *tp,
 static void itimer_init(odp_timer_pool *tp);
 static void itimer_fini(odp_timer_pool *tp);
 
-static odp_timer_pool *odp_timer_pool_new(
-	const char *_name,
-	const odp_timer_pool_param_t *param)
+static odp_timer_pool_t odp_timer_pool_new(const char *_name,
+					   const odp_timer_pool_param_t *param)
 {
 	uint32_t tp_idx = odp_atomic_fetch_add_u32(&num_timer_pools, 1);
 	if (odp_unlikely(tp_idx >= MAX_TIMER_POOLS)) {
 		/* Restore the previous value */
 		odp_atomic_sub_u32(&num_timer_pools, 1);
 		__odp_errno = ENFILE; /* Table overflow */
-		return NULL;
+		return ODP_TIMER_POOL_INVALID;
 	}
 	size_t sz0 = ODP_ALIGN_ROUNDUP(sizeof(odp_timer_pool),
 			ODP_CACHE_LINE_SIZE);
@@ -787,10 +786,9 @@  odp_timer_pool_create(const char *name,
 	/* Verify that we have a valid (non-zero) timer resolution */
 	if (param->res_ns == 0) {
 		__odp_errno = EINVAL;
-		return NULL;
+		return ODP_TIMER_POOL_INVALID;
 	}
-	odp_timer_pool_t tp = odp_timer_pool_new(name, param);
-	return tp;
+	return odp_timer_pool_new(name, param);
 }
 
 void odp_timer_pool_start(void)
@@ -833,15 +831,17 @@  odp_timer_t odp_timer_alloc(odp_timer_pool_t tpid,
 			    odp_queue_t queue,
 			    void *user_ptr)
 {
+	odp_timer_t hdl;
+
+	if (odp_unlikely(tpid == ODP_TIMER_POOL_INVALID)
+		ODP_ABORT("Invalid timer pool.\n");
 	if (odp_unlikely(queue == ODP_QUEUE_INVALID))
 		ODP_ABORT("%s: Invalid queue handle\n", tpid->name);
 	/* We don't care about the validity of user_ptr because we will not
 	 * attempt to dereference it */
-	odp_timer_t hdl = timer_alloc(tpid, queue, user_ptr);
-	if (odp_likely(hdl != ODP_TIMER_INVALID)) {
-		/* Success */
-		return hdl;
-	}
+	hdl = timer_alloc(tpid, queue, user_ptr);
+	if (odp_likely(hdl != ODP_TIMER_INVALID))
+		return hdl; /* Success */
 	/* errno set by timer_alloc() */
 	return ODP_TIMER_INVALID;
 }