net: thunderx: Fix unintentional sign extension issue
[ Upstream commite701a25840] The shifting of the u8 integers rq->caching by 26 bits to the left will be promoted to a 32 bit signed int and then sign-extended to a u64. In the event that rq->caching is greater than 0x1f then all then all the upper 32 bits of the u64 end up as also being set because of the int sign-extension. Fix this by casting the u8 values to a u64 before the 26 bit left shift. Addresses-Coverity: ("Unintended sign extension") Fixes:4863dea3fa("net: Adding support for Cavium ThunderX network controller") Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
6a61307e58
commit
4601bcc641
1 changed files with 1 additions and 1 deletions
|
|
@ -776,7 +776,7 @@ static void nicvf_rcv_queue_config(struct nicvf *nic, struct queue_set *qs,
|
|||
mbx.rq.msg = NIC_MBOX_MSG_RQ_CFG;
|
||||
mbx.rq.qs_num = qs->vnic_id;
|
||||
mbx.rq.rq_num = qidx;
|
||||
mbx.rq.cfg = (rq->caching << 26) | (rq->cq_qs << 19) |
|
||||
mbx.rq.cfg = ((u64)rq->caching << 26) | (rq->cq_qs << 19) |
|
||||
(rq->cq_idx << 16) | (rq->cont_rbdr_qs << 9) |
|
||||
(rq->cont_qs_rbdr_idx << 8) |
|
||||
(rq->start_rbdr_qs << 1) | (rq->start_qs_rbdr_idx);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue