summaryrefslogtreecommitdiff
path: root/net/ethtool
diff options
context:
space:
mode:
authorPatrick Kelsey <pat.kelsey@cornelisnetworks.com>2023-02-16 19:56:28 +0300
committerJason Gunthorpe <jgg@nvidia.com>2023-02-17 23:38:26 +0300
commitfd8958efe8779d3db19c9124fce593ce681ac709 (patch)
treeb46b64451c40574353f2c5fc2575964bf25427e1 /net/ethtool
parenta0d198f79a8d033bd46605b779859193649f1f99 (diff)
downloadlinux-fd8958efe8779d3db19c9124fce593ce681ac709.tar.xz
IB/hfi1: Fix sdma.h tx->num_descs off-by-one errors
Fix three sources of error involving struct sdma_txreq.num_descs. When _extend_sdma_tx_descs() extends the descriptor array, it uses the value of tx->num_descs to determine how many existing entries from the tx's original, internal descriptor array to copy to the newly allocated one. As this value was incremented before the call, the copy loop will access one entry past the internal descriptor array, copying its contents into the corresponding slot in the new array. If the call to _extend_sdma_tx_descs() fails, _pad_smda_tx_descs() then invokes __sdma_tx_clean() which uses the value of tx->num_desc to drive a loop that unmaps all descriptor entries in use. As this value was incremented before the call, the unmap loop will invoke sdma_unmap_desc() on a descriptor entry whose contents consist of whatever random data was copied into it during (1), leading to cascading further calls into the kernel and driver using arbitrary data. _sdma_close_tx() was using tx->num_descs instead of tx->num_descs - 1. Fix all of the above by: - Only increment .num_descs after .descp is extended. - Use .num_descs - 1 instead of .num_descs for last .descp entry. Fixes: f4d26d81ad7f ("staging/rdma/hfi1: Add coalescing support for SDMA TX descriptors") Link: https://lore.kernel.org/r/167656658879.2223096.10026561343022570690.stgit@awfm-02.cornelisnetworks.com Signed-off-by: Brendan Cunningham <bcunningham@cornelisnetworks.com> Signed-off-by: Patrick Kelsey <pat.kelsey@cornelisnetworks.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Diffstat (limited to 'net/ethtool')
0 files changed, 0 insertions, 0 deletions