tools: ynl-gen: fix single attribute structs with attr 0 only
authorJakub Kicinski <kuba@kernel.org>
Thu, 23 Feb 2023 18:31:39 +0000 (10:31 -0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 24 Feb 2023 19:55:47 +0000 (11:55 -0800)
Chuck run into an issue with a single-element attr-set which
only has an attr with value of 0. The search for max attr in
a struct records attrs with value larger than 0 only (max_val
is set to 0 at the start). Adjust the comparison, alternatively
max_val could be init'ed to -1. Somehow picking the last attr
of a value seems like a good idea in general.

Reported-by: Chuck Lever III <chuck.lever@oracle.com>
Fixes: be5bea1cc0bf ("net: add basic C code generators for Netlink")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/net/ynl/ynl-gen-c.py

index 3942f24..274e9c5 100755 (executable)
@@ -546,7 +546,7 @@ class Struct:
         max_val = 0
         self.attr_max_val = None
         for name, attr in self.attr_list:
-            if attr.value > max_val:
+            if attr.value >= max_val:
                 max_val = attr.value
                 self.attr_max_val = attr
             self.attrs[name] = attr