Commit fbbd84af authored by Dan Carpenter's avatar Dan Carpenter Committed by Jakub Kicinski
Browse files

chelsio/chtls: prevent potential integer overflow on 32bit



The "gl->tot_len" variable is controlled by the user.  It comes from
process_responses().  On 32bit systems, the "gl->tot_len +
sizeof(struct cpl_pass_accept_req) + sizeof(struct rss_header)" addition
could have an integer wrapping bug.  Use size_add() to prevent this.

Fixes: a0894394 ("crypto: chtls - Register chtls with net tls")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/c6bfb23c-2db2-4e1b-b8ab-ba3925c82ef5@stanley.mountain


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c8eb0c3f
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -346,8 +346,9 @@ static struct sk_buff *copy_gl_to_skb_pkt(const struct pkt_gl *gl,
	 * driver. Once driver synthesizes cpl_pass_accept_req the skb will go
	 * through the regular cpl_pass_accept_req processing in TOM.
	 */
	skb = alloc_skb(gl->tot_len + sizeof(struct cpl_pass_accept_req)
			- pktshift, GFP_ATOMIC);
	skb = alloc_skb(size_add(gl->tot_len,
				 sizeof(struct cpl_pass_accept_req)) -
			pktshift, GFP_ATOMIC);
	if (unlikely(!skb))
		return NULL;
	__skb_put(skb, gl->tot_len + sizeof(struct cpl_pass_accept_req)