RDMA/nldev: Skip counter if port doesn't match
authorMark Zhang <markz@mellanox.com>
Sun, 20 Oct 2019 06:28:00 +0000 (09:28 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 24 Oct 2019 18:31:23 +0000 (15:31 -0300)
The counter resource should return -EAGAIN if it was requested for a
different port, this is similar to how QP works if the users provides a
port filter.

Otherwise port filtering in netlink will return broken counter nests.

Fixes: c4ffee7c9bdb ("RDMA/netlink: Implement counter dumpit calback")
Link: https://lore.kernel.org/r/20191020062800.8065-1-leon@kernel.org
Signed-off-by: Mark Zhang <markz@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/nldev.c

index 65b36548bc17139b0a2fa5da51a4e0e7d4f9089f..c03af08b80e776688cfa3d4e303d37b1b992a7af 100644 (file)
@@ -778,7 +778,7 @@ static int fill_res_counter_entry(struct sk_buff *msg, bool has_cap_net_admin,
                container_of(res, struct rdma_counter, res);
 
        if (port && port != counter->port)
-               return 0;
+               return -EAGAIN;
 
        /* Dump it even query failed */
        rdma_counter_query_stats(counter);