On Fri, 29 Dec 2023 14:52:40 +0800
Junxian Huang <huangjunxian6@xxxxxxxxxxxxx> wrote:
From: Chengchang Tang <tangchengchang@xxxxxxxxxx>This code in rdma seems to be miking json and newline functionality
There will be a core dump when pretty is used as the JSON object
hasn't been opened and closed properly.
Before:
$ rdma res show qp -jp -dd
[ {
"ifindex": 1,
"ifname": "hns_1",
"port": 1,
"lqpn": 1,
"type": "GSI",
"state": "RTS",
"sq-psn": 0,
"comm": "ib_core"
},
"drv_sq_wqe_cnt": 128,
"drv_sq_max_gs": 2,
"drv_rq_wqe_cnt": 512,
"drv_rq_max_gs": 1,
rdma: json_writer.c:130: jsonw_end: Assertion `self->depth > 0' failed.
Aborted (core dumped)
After:
$ rdma res show qp -jp -dd
[ {
"ifindex": 2,
"ifname": "hns_2",
"port": 1,
"lqpn": 1,
"type": "GSI",
"state": "RTS",
"sq-psn": 0,
"comm": "ib_core",{
"drv_sq_wqe_cnt": 128,
"drv_sq_max_gs": 2,
"drv_rq_wqe_cnt": 512,
"drv_rq_max_gs": 1,
"drv_ext_sge_sge_cnt": 256
}
} ]
Fixes: 331152752a97 ("rdma: print driver resource attributes")
Signed-off-by: Chengchang Tang <tangchengchang@xxxxxxxxxx>
Signed-off-by: Junxian Huang <huangjunxian6@xxxxxxxxxxxxx>
which creates bug traps.
Also the json should have same effective output in pretty and non-pretty mode.
It looks like since pretty mode add extra object layer, the nesting of {} would be
different.
The conversion to json_print() was done but it isn't using same conventions
as ip or tc.
The correct fix needs to go deeper and hit other things.