lib: objagg: fix handling of object with 0 users when assembling hints
It is possible that there might be an originally parent object with 0 direct users that is in hints no longer considered as parent. Then the weight of this object is 0 and current code ignores him. That's why the total amount of hint objects might be lower than for the original objagg and WARN_ON is hit. Fix this be considering 0 weight valid. Fixes: 9069a3817d82 ("lib: objagg: implement optimization hints assembly and use hints for object creation") Signed-off-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e0c6d1d859
commit
fa8ba2cba7
@ -744,8 +744,6 @@ static unsigned int objagg_tmp_graph_node_weight(struct objagg_tmp_graph *graph,
|
|||||||
* that this node can represent with delta.
|
* that this node can represent with delta.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (node->crossed_out)
|
|
||||||
return 0;
|
|
||||||
for (j = 0; j < graph->nodes_count; j++) {
|
for (j = 0; j < graph->nodes_count; j++) {
|
||||||
if (!objagg_tmp_graph_is_edge(graph, index, j))
|
if (!objagg_tmp_graph_is_edge(graph, index, j))
|
||||||
continue;
|
continue;
|
||||||
@ -759,14 +757,18 @@ static unsigned int objagg_tmp_graph_node_weight(struct objagg_tmp_graph *graph,
|
|||||||
|
|
||||||
static int objagg_tmp_graph_node_max_weight(struct objagg_tmp_graph *graph)
|
static int objagg_tmp_graph_node_max_weight(struct objagg_tmp_graph *graph)
|
||||||
{
|
{
|
||||||
|
struct objagg_tmp_node *node;
|
||||||
unsigned int max_weight = 0;
|
unsigned int max_weight = 0;
|
||||||
unsigned int weight;
|
unsigned int weight;
|
||||||
int max_index = -1;
|
int max_index = -1;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < graph->nodes_count; i++) {
|
for (i = 0; i < graph->nodes_count; i++) {
|
||||||
|
node = &graph->nodes[i];
|
||||||
|
if (node->crossed_out)
|
||||||
|
continue;
|
||||||
weight = objagg_tmp_graph_node_weight(graph, i);
|
weight = objagg_tmp_graph_node_weight(graph, i);
|
||||||
if (weight > max_weight) {
|
if (weight >= max_weight) {
|
||||||
max_weight = weight;
|
max_weight = weight;
|
||||||
max_index = i;
|
max_index = i;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user