Commit 5d4d98595743 for kernel

commit 5d4d985957434867bbe85e4fa5e638f3e48ad522
Author: Aamir Ahmed <elb12345@hotmail.co.uk>
Date:   Mon Sep 7 02:42:34 2026 +0000

    net: hinic: fix mailbox segment buffer overflow

    check_mbox_seq_id_and_seg_len() validates that seq_id does not
    exceed SEQ_ID_MAX_VAL (42) and seg_len does not exceed
    MBOX_SEG_LEN (48).  However, this allows the last segment
    (seq_id=42) to carry a full 48-byte payload, writing to offset
    42*48=2016 for 48 bytes (ending at byte 2064).  The receive
    buffer is only MBOX_MAX_BUF_SZ (2048) bytes, resulting in a
    16-byte heap buffer overflow.

    The hinic3 driver already handles this correctly by defining
    MBOX_LAST_SEG_MAX_LEN and rejecting the last segment when it
    exceeds the remaining buffer space.  Apply the same fix to the
    hinic driver.

    Fixes: a425b6e1c69b ("hinic: add mailbox function support")
    Signed-off-by: Aamir Ahmed <elb12345@hotmail.co.uk>
    Link: https://patch.msgid.link/AS8P251MB0001AE870B09020B46B5D7DBC8B22@AS8P251MB0001.EURP251.PROD.OUTLOOK.COM
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>

diff --git a/drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c b/drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c
index 2784127327e6..6e67a6c9578e 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c
@@ -128,6 +128,7 @@ enum hinic_mbox_tx_status {

 #define SEQ_ID_START_VAL			0
 #define SEQ_ID_MAX_VAL				42
+#define MBOX_LAST_SEG_MAX_LEN			(MBOX_MAX_BUF_SZ - SEQ_ID_MAX_VAL * MBOX_SEG_LEN)

 #define NO_DMA_ATTRIBUTE_VAL			0

@@ -372,7 +373,8 @@ recv_pf_from_vf_mbox_handler(struct hinic_mbox_func_to_func *func_to_func,
 static bool check_mbox_seq_id_and_seg_len(struct hinic_recv_mbox *recv_mbox,
 					  u8 seq_id, u8 seg_len)
 {
-	if (seq_id > SEQ_ID_MAX_VAL || seg_len > MBOX_SEG_LEN)
+	if (seq_id > SEQ_ID_MAX_VAL || seg_len > MBOX_SEG_LEN ||
+	    (seq_id == SEQ_ID_MAX_VAL && seg_len > MBOX_LAST_SEG_MAX_LEN))
 		return false;

 	if (seq_id == 0) {