eal: fix telemetry logtype registration

Message ID 20210406092545.24465-1-david.marchand@redhat.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series eal: fix telemetry logtype registration |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/travis-robot success travis build: passed
ci/github-robot success github build: passed
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/intel-Testing success Testing PASS

Commit Message

David Marchand April 6, 2021, 9:25 a.m. UTC
  rte_log_register_type_and_pick_level() returns an int.
Casting to a uin32_t will make us miss the -1 passed in case of failure.

Fixes: 37b881a96194 ("telemetry: use log function from pointer")

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 lib/librte_eal/freebsd/eal.c | 4 +++-
 lib/librte_eal/linux/eal.c   | 4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)
  

Comments

Bruce Richardson April 6, 2021, 10:18 a.m. UTC | #1
On Tue, Apr 06, 2021 at 11:25:45AM +0200, David Marchand wrote:
> rte_log_register_type_and_pick_level() returns an int.
> Casting to a uin32_t will make us miss the -1 passed in case of failure.
> 
> Fixes: 37b881a96194 ("telemetry: use log function from pointer")
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  
Thomas Monjalon April 6, 2021, 10:36 a.m. UTC | #2
06/04/2021 12:18, Bruce Richardson:
> On Tue, Apr 06, 2021 at 11:25:45AM +0200, David Marchand wrote:
> > rte_log_register_type_and_pick_level() returns an int.
> > Casting to a uin32_t will make us miss the -1 passed in case of failure.
> > 
> > Fixes: 37b881a96194 ("telemetry: use log function from pointer")
> > 
> > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > ---
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

Good catch, I missed it when doing the patch
"log: choose EAL log type on registration failure"
https://patches.dpdk.org/project/dpdk/patch/20210405100301.657768-2-thomas@monjalon.net/

About the title, I would not say it fixes the registration.
It is more about catching registration failure with a fallback.
  
David Marchand April 8, 2021, 4:41 p.m. UTC | #3
On Tue, Apr 6, 2021 at 12:18 PM Bruce Richardson
<bruce.richardson@intel.com> wrote:
>
> On Tue, Apr 06, 2021 at 11:25:45AM +0200, David Marchand wrote:
> > rte_log_register_type_and_pick_level() returns an int.
> > Casting to a uin32_t will make us miss the -1 passed in case of failure.
> >
> > Fixes: 37b881a96194 ("telemetry: use log function from pointer")
> >
> > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > ---
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
>

Applied, thanks.
  

Patch

diff --git a/lib/librte_eal/freebsd/eal.c b/lib/librte_eal/freebsd/eal.c
index 32442e5ba6..5544701f20 100644
--- a/lib/librte_eal/freebsd/eal.c
+++ b/lib/librte_eal/freebsd/eal.c
@@ -941,8 +941,10 @@  rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 	if (!internal_conf->no_telemetry) {
-		uint32_t tlog = rte_log_register_type_and_pick_level(
+		int tlog = rte_log_register_type_and_pick_level(
 				"lib.telemetry", RTE_LOG_WARNING);
+		if (tlog < 0)
+			tlog = RTE_LOGTYPE_EAL;
 		if (rte_telemetry_init(rte_eal_get_runtime_dir(),
 				rte_version(),
 				&internal_conf->ctrl_cpuset, rte_log, tlog) != 0)
diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c
index abbb537746..9b47fef6f8 100644
--- a/lib/librte_eal/linux/eal.c
+++ b/lib/librte_eal/linux/eal.c
@@ -1314,8 +1314,10 @@  rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 	if (!internal_conf->no_telemetry) {
-		uint32_t tlog = rte_log_register_type_and_pick_level(
+		int tlog = rte_log_register_type_and_pick_level(
 				"lib.telemetry", RTE_LOG_WARNING);
+		if (tlog < 0)
+			tlog = RTE_LOGTYPE_EAL;
 		if (rte_telemetry_init(rte_eal_get_runtime_dir(),
 				rte_version(),
 				&internal_conf->ctrl_cpuset, rte_log, tlog) != 0)