sunrpc: potential memory leak in function rdma_read_xdr
In case the check on ch_count fails the cleanup path is skipped and the previously allocated memory 'rpl_map', 'chl_map' is not freed. Reported by Coverity. Signed-off-by: Christian Engelmayer <christian.engelmayer@frequentis.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
e4636d535e
commit
59fb30660b
1 changed files with 4 additions and 4 deletions
|
@ -397,14 +397,14 @@ static int rdma_read_xdr(struct svcxprt_rdma *xprt,
|
||||||
if (!ch)
|
if (!ch)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Allocate temporary reply and chunk maps */
|
|
||||||
rpl_map = svc_rdma_get_req_map();
|
|
||||||
chl_map = svc_rdma_get_req_map();
|
|
||||||
|
|
||||||
svc_rdma_rcl_chunk_counts(ch, &ch_count, &byte_count);
|
svc_rdma_rcl_chunk_counts(ch, &ch_count, &byte_count);
|
||||||
if (ch_count > RPCSVC_MAXPAGES)
|
if (ch_count > RPCSVC_MAXPAGES)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
/* Allocate temporary reply and chunk maps */
|
||||||
|
rpl_map = svc_rdma_get_req_map();
|
||||||
|
chl_map = svc_rdma_get_req_map();
|
||||||
|
|
||||||
if (!xprt->sc_frmr_pg_list_len)
|
if (!xprt->sc_frmr_pg_list_len)
|
||||||
sge_count = map_read_chunks(xprt, rqstp, hdr_ctxt, rmsgp,
|
sge_count = map_read_chunks(xprt, rqstp, hdr_ctxt, rmsgp,
|
||||||
rpl_map, chl_map, ch_count,
|
rpl_map, chl_map, ch_count,
|
||||||
|
|
Loading…
Add table
Reference in a new issue