If sb_occ_port_pool_get() failed in devlink_nl_sb_port_pool_fill(), msg should be canceled by genlmsg_cancel().
Fixes: df38dafd2559 ("devlink: implement shared buffer occupancy monitoring interface") Reported-by: Hulk Robot <hul...@huawei.com> Signed-off-by: Wang Hai <wangha...@huawei.com> --- net/core/devlink.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/core/devlink.c b/net/core/devlink.c index a932d95be798..83b4e7f51b35 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -1447,8 +1447,10 @@ static int devlink_nl_sb_port_pool_fill(struct sk_buff *msg, err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index, pool_index, &cur, &max); - if (err && err != -EOPNOTSUPP) + if (err && err != -EOPNOTSUPP) { + genlmsg_cancel(msg, hdr); return err; + } if (!err) { if (nla_put_u32(msg, DEVLINK_ATTR_SB_OCC_CUR, cur)) goto nla_put_failure; -- 2.17.1