mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-05 19:31:57 -04:00
sctp: avoid NULL dereference when chunk data buffer is missing
[ Upstream commit 441f0647f7673e0e64d4910ef61a5fb8f16bfb82 ]
chunk->skb pointer is dereferenced in the if-block where it's supposed
to be NULL only.
chunk->skb can only be NULL if chunk->head_skb is not. Check for frag_list
instead and do it just before replacing chunk->skb. We're sure that
otherwise chunk->skb is non-NULL because of outer if() condition.
Fixes: 90017accff ("sctp: Add GSO support")
Signed-off-by: Alexey Simakov <bigalex934@gmail.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Link: https://patch.msgid.link/20251021130034.6333-1-bigalex934@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
b735a3e81b
commit
61cda2777b
1 changed files with 7 additions and 6 deletions
|
|
@ -163,13 +163,14 @@ next_chunk:
|
|||
chunk->head_skb = chunk->skb;
|
||||
|
||||
/* skbs with "cover letter" */
|
||||
if (chunk->head_skb && chunk->skb->data_len == chunk->skb->len)
|
||||
if (chunk->head_skb && chunk->skb->data_len == chunk->skb->len) {
|
||||
if (WARN_ON(!skb_shinfo(chunk->skb)->frag_list)) {
|
||||
__SCTP_INC_STATS(dev_net(chunk->skb->dev),
|
||||
SCTP_MIB_IN_PKT_DISCARDS);
|
||||
sctp_chunk_free(chunk);
|
||||
goto next_chunk;
|
||||
}
|
||||
chunk->skb = skb_shinfo(chunk->skb)->frag_list;
|
||||
|
||||
if (WARN_ON(!chunk->skb)) {
|
||||
__SCTP_INC_STATS(dev_net(chunk->skb->dev), SCTP_MIB_IN_PKT_DISCARDS);
|
||||
sctp_chunk_free(chunk);
|
||||
goto next_chunk;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue