mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
chelsio/chtls: prevent potential integer overflow on 32bit
commit fbbd84af6ba70334335bdeba3ae536cf751c14c6 upstream.
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: a089439478 ("crypto: chtls - Register chtls with net tls")
Cc: stable@vger.kernel.org
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/c6bfb23c-2db2-4e1b-b8ab-ba3925c82ef5@stanley.mountain
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
15b3121a68
commit
ecc0e323dd
@@ -346,8 +346,9 @@ static struct sk_buff *copy_gl_to_skb_pkt(const struct pkt_gl *gl,
|
|||||||
* driver. Once driver synthesizes cpl_pass_accpet_req the skb will go
|
* driver. Once driver synthesizes cpl_pass_accpet_req the skb will go
|
||||||
* through the regular cpl_pass_accept_req processing in TOM.
|
* through the regular cpl_pass_accept_req processing in TOM.
|
||||||
*/
|
*/
|
||||||
skb = alloc_skb(gl->tot_len + sizeof(struct cpl_pass_accept_req)
|
skb = alloc_skb(size_add(gl->tot_len,
|
||||||
- pktshift, GFP_ATOMIC);
|
sizeof(struct cpl_pass_accept_req)) -
|
||||||
|
pktshift, GFP_ATOMIC);
|
||||||
if (unlikely(!skb))
|
if (unlikely(!skb))
|
||||||
return NULL;
|
return NULL;
|
||||||
__skb_put(skb, gl->tot_len + sizeof(struct cpl_pass_accept_req)
|
__skb_put(skb, gl->tot_len + sizeof(struct cpl_pass_accept_req)
|
||||||
|
|||||||
Reference in New Issue
Block a user