drivers/net/wwan/mhi_wwan_mbim.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-)
This reverts commit eeecf5d3a3a484cedfa3f2f87e6d51a7390ed960.
This change lead to MHI WWAN device can't connect to internet.
I found a netwrok issue with kernel 6.19-rc4, but network works
well with kernel 6.18-rc1. After checking, this commit is the
root cause.
Before appliing this serial changes on MHI WWAN network, we shall
revert this change in case of v6.19 being impacted.
Fixes: eeecf5d3a3a4 ("net: wwan: mhi_wwan_mbim: Avoid -Wflex-array-member-not-at-end warning")
Signed-off-by: Slark Xiao <slark_xiao@163.com>
---
drivers/net/wwan/mhi_wwan_mbim.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/net/wwan/mhi_wwan_mbim.c b/drivers/net/wwan/mhi_wwan_mbim.c
index cf6d3e2a007b..1d7e3ad900c1 100644
--- a/drivers/net/wwan/mhi_wwan_mbim.c
+++ b/drivers/net/wwan/mhi_wwan_mbim.c
@@ -78,9 +78,8 @@ struct mhi_mbim_context {
struct mbim_tx_hdr {
struct usb_cdc_ncm_nth16 nth16;
-
- /* Must be last as it ends in a flexible-array member. */
struct usb_cdc_ncm_ndp16 ndp16;
+ struct usb_cdc_ncm_dpe16 dpe16[2];
} __packed;
static struct mhi_mbim_link *mhi_mbim_get_link_rcu(struct mhi_mbim_context *mbim,
@@ -109,20 +108,20 @@ static int mhi_mbim_get_link_mux_id(struct mhi_controller *cntrl)
static struct sk_buff *mbim_tx_fixup(struct sk_buff *skb, unsigned int session,
u16 tx_seq)
{
- DEFINE_RAW_FLEX(struct mbim_tx_hdr, mbim_hdr, ndp16.dpe16, 2);
unsigned int dgram_size = skb->len;
struct usb_cdc_ncm_nth16 *nth16;
struct usb_cdc_ncm_ndp16 *ndp16;
+ struct mbim_tx_hdr *mbim_hdr;
/* Only one NDP is sent, containing the IP packet (no aggregation) */
/* Ensure we have enough headroom for crafting MBIM header */
- if (skb_cow_head(skb, __struct_size(mbim_hdr))) {
+ if (skb_cow_head(skb, sizeof(struct mbim_tx_hdr))) {
dev_kfree_skb_any(skb);
return NULL;
}
- mbim_hdr = skb_push(skb, __struct_size(mbim_hdr));
+ mbim_hdr = skb_push(skb, sizeof(struct mbim_tx_hdr));
/* Fill NTB header */
nth16 = &mbim_hdr->nth16;
@@ -135,11 +134,12 @@ static struct sk_buff *mbim_tx_fixup(struct sk_buff *skb, unsigned int session,
/* Fill the unique NDP */
ndp16 = &mbim_hdr->ndp16;
ndp16->dwSignature = cpu_to_le32(USB_CDC_MBIM_NDP16_IPS_SIGN | (session << 24));
- ndp16->wLength = cpu_to_le16(struct_size(ndp16, dpe16, 2));
+ ndp16->wLength = cpu_to_le16(sizeof(struct usb_cdc_ncm_ndp16)
+ + sizeof(struct usb_cdc_ncm_dpe16) * 2);
ndp16->wNextNdpIndex = 0;
/* Datagram follows the mbim header */
- ndp16->dpe16[0].wDatagramIndex = cpu_to_le16(__struct_size(mbim_hdr));
+ ndp16->dpe16[0].wDatagramIndex = cpu_to_le16(sizeof(struct mbim_tx_hdr));
ndp16->dpe16[0].wDatagramLength = cpu_to_le16(dgram_size);
/* null termination */
@@ -585,8 +585,7 @@ static void mhi_mbim_setup(struct net_device *ndev)
{
ndev->header_ops = NULL; /* No header */
ndev->type = ARPHRD_RAWIP;
- ndev->needed_headroom =
- struct_size_t(struct mbim_tx_hdr, ndp16.dpe16, 2);
+ ndev->needed_headroom = sizeof(struct mbim_tx_hdr);
ndev->hard_header_len = 0;
ndev->addr_len = 0;
ndev->flags = IFF_POINTOPOINT | IFF_NOARP;
--
2.25.1
Hi Slark,
On 1/20/26 16:20, Slark Xiao wrote:
> This reverts commit eeecf5d3a3a484cedfa3f2f87e6d51a7390ed960.
>
> This change lead to MHI WWAN device can't connect to internet.
> I found a netwrok issue with kernel 6.19-rc4, but network works
> well with kernel 6.18-rc1. After checking, this commit is the
> root cause.
Thanks for the report.
Could you please apply the following patch on top of this revert,
and let us know if the problem still manifests? Thank you!
diff --git a/drivers/net/wwan/mhi_wwan_mbim.c b/drivers/net/wwan/mhi_wwan_mbim.c
index 1d7e3ad900c1..a271a72fed63 100644
--- a/drivers/net/wwan/mhi_wwan_mbim.c
+++ b/drivers/net/wwan/mhi_wwan_mbim.c
@@ -78,9 +78,12 @@ struct mhi_mbim_context {
struct mbim_tx_hdr {
struct usb_cdc_ncm_nth16 nth16;
- struct usb_cdc_ncm_ndp16 ndp16;
- struct usb_cdc_ncm_dpe16 dpe16[2];
+ __TRAILING_OVERLAP(struct usb_cdc_ncm_ndp16, ndp16, dpe16, __packed,
+ struct usb_cdc_ncm_dpe16 dpe16[2];
+ );
} __packed;
+static_assert(offsetof(struct mbim_tx_hdr, ndp16.dpe16) ==
+ offsetof(struct mbim_tx_hdr, dpe16));
static struct mhi_mbim_link *mhi_mbim_get_link_rcu(struct mhi_mbim_context *mbim,
unsigned int session)
At 2026-01-20 15:51:57, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>Hi Slark,
>
>On 1/20/26 16:20, Slark Xiao wrote:
>> This reverts commit eeecf5d3a3a484cedfa3f2f87e6d51a7390ed960.
>>
>> This change lead to MHI WWAN device can't connect to internet.
>> I found a netwrok issue with kernel 6.19-rc4, but network works
>> well with kernel 6.18-rc1. After checking, this commit is the
>> root cause.
>
>Thanks for the report.
>
>Could you please apply the following patch on top of this revert,
>and let us know if the problem still manifests? Thank you!
>
>diff --git a/drivers/net/wwan/mhi_wwan_mbim.c b/drivers/net/wwan/mhi_wwan_mbim.c
>index 1d7e3ad900c1..a271a72fed63 100644
>--- a/drivers/net/wwan/mhi_wwan_mbim.c
>+++ b/drivers/net/wwan/mhi_wwan_mbim.c
>@@ -78,9 +78,12 @@ struct mhi_mbim_context {
>
> struct mbim_tx_hdr {
> struct usb_cdc_ncm_nth16 nth16;
>- struct usb_cdc_ncm_ndp16 ndp16;
>- struct usb_cdc_ncm_dpe16 dpe16[2];
>+ __TRAILING_OVERLAP(struct usb_cdc_ncm_ndp16, ndp16, dpe16, __packed,
>+ struct usb_cdc_ncm_dpe16 dpe16[2];
>+ );
> } __packed;
>+static_assert(offsetof(struct mbim_tx_hdr, ndp16.dpe16) ==
>+ offsetof(struct mbim_tx_hdr, dpe16));
>
> static struct mhi_mbim_link *mhi_mbim_get_link_rcu(struct mhi_mbim_context *mbim,
> unsigned int session)
This patch won't introduce previous problem.
On 1/20/26 18:16, Slark Xiao wrote:
>
>
> At 2026-01-20 15:51:57, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>> Hi Slark,
>>
>> On 1/20/26 16:20, Slark Xiao wrote:
>>> This reverts commit eeecf5d3a3a484cedfa3f2f87e6d51a7390ed960.
>>>
>>> This change lead to MHI WWAN device can't connect to internet.
>>> I found a netwrok issue with kernel 6.19-rc4, but network works
>>> well with kernel 6.18-rc1. After checking, this commit is the
>>> root cause.
>>
>> Thanks for the report.
>>
>> Could you please apply the following patch on top of this revert,
>> and let us know if the problem still manifests? Thank you!
>>
>> diff --git a/drivers/net/wwan/mhi_wwan_mbim.c b/drivers/net/wwan/mhi_wwan_mbim.c
>> index 1d7e3ad900c1..a271a72fed63 100644
>> --- a/drivers/net/wwan/mhi_wwan_mbim.c
>> +++ b/drivers/net/wwan/mhi_wwan_mbim.c
>> @@ -78,9 +78,12 @@ struct mhi_mbim_context {
>>
>> struct mbim_tx_hdr {
>> struct usb_cdc_ncm_nth16 nth16;
>> - struct usb_cdc_ncm_ndp16 ndp16;
>> - struct usb_cdc_ncm_dpe16 dpe16[2];
>> + __TRAILING_OVERLAP(struct usb_cdc_ncm_ndp16, ndp16, dpe16, __packed,
>> + struct usb_cdc_ncm_dpe16 dpe16[2];
>> + );
>> } __packed;
>> +static_assert(offsetof(struct mbim_tx_hdr, ndp16.dpe16) ==
>> + offsetof(struct mbim_tx_hdr, dpe16));
>>
>> static struct mhi_mbim_link *mhi_mbim_get_link_rcu(struct mhi_mbim_context *mbim,
>> unsigned int session)
> This patch won't introduce previous problem.
>
Thanks for confirming this.
I'll turn it into a proper patch.
-Gustavo
At 2026-01-20 17:28:42, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>
>
>On 1/20/26 18:16, Slark Xiao wrote:
>>
>>
>> At 2026-01-20 15:51:57, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>>> Hi Slark,
>>>
>>> On 1/20/26 16:20, Slark Xiao wrote:
>>>> This reverts commit eeecf5d3a3a484cedfa3f2f87e6d51a7390ed960.
>>>>
>>>> This change lead to MHI WWAN device can't connect to internet.
>>>> I found a netwrok issue with kernel 6.19-rc4, but network works
>>>> well with kernel 6.18-rc1. After checking, this commit is the
>>>> root cause.
>>>
>>> Thanks for the report.
>>>
>>> Could you please apply the following patch on top of this revert,
>>> and let us know if the problem still manifests? Thank you!
>>>
>>> diff --git a/drivers/net/wwan/mhi_wwan_mbim.c b/drivers/net/wwan/mhi_wwan_mbim.c
>>> index 1d7e3ad900c1..a271a72fed63 100644
>>> --- a/drivers/net/wwan/mhi_wwan_mbim.c
>>> +++ b/drivers/net/wwan/mhi_wwan_mbim.c
>>> @@ -78,9 +78,12 @@ struct mhi_mbim_context {
>>>
>>> struct mbim_tx_hdr {
>>> struct usb_cdc_ncm_nth16 nth16;
>>> - struct usb_cdc_ncm_ndp16 ndp16;
>>> - struct usb_cdc_ncm_dpe16 dpe16[2];
>>> + __TRAILING_OVERLAP(struct usb_cdc_ncm_ndp16, ndp16, dpe16, __packed,
>>> + struct usb_cdc_ncm_dpe16 dpe16[2];
>>> + );
>>> } __packed;
>>> +static_assert(offsetof(struct mbim_tx_hdr, ndp16.dpe16) ==
>>> + offsetof(struct mbim_tx_hdr, dpe16));
>>>
>>> static struct mhi_mbim_link *mhi_mbim_get_link_rcu(struct mhi_mbim_context *mbim,
>>> unsigned int session)
>> This patch won't introduce previous problem.
>>
>
>Thanks for confirming this.
>
>I'll turn it into a proper patch.
>
>-Gustavo
Hi,
Are you planing to add this revert commit to your coming patch?
Actually it's urgent to revert this change since the release deadline of v6.19 is coming soon
and all my MHI WWAN device have been impacted.
I don't know why this commit has been tagged as "Not Applicable" and who did this.
I hope we can fix it regression before the official v6.19 release.
Thanks
On 1/22/26 10:30, Slark Xiao wrote:
>
>
> At 2026-01-20 17:28:42, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>>
>>
>> On 1/20/26 18:16, Slark Xiao wrote:
>>>
>>>
>>> At 2026-01-20 15:51:57, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>>>> Hi Slark,
>>>>
>>>> On 1/20/26 16:20, Slark Xiao wrote:
>>>>> This reverts commit eeecf5d3a3a484cedfa3f2f87e6d51a7390ed960.
>>>>>
>>>>> This change lead to MHI WWAN device can't connect to internet.
>>>>> I found a netwrok issue with kernel 6.19-rc4, but network works
>>>>> well with kernel 6.18-rc1. After checking, this commit is the
>>>>> root cause.
>>>>
>>>> Thanks for the report.
>>>>
>>>> Could you please apply the following patch on top of this revert,
>>>> and let us know if the problem still manifests? Thank you!
>>>>
>>>> diff --git a/drivers/net/wwan/mhi_wwan_mbim.c b/drivers/net/wwan/mhi_wwan_mbim.c
>>>> index 1d7e3ad900c1..a271a72fed63 100644
>>>> --- a/drivers/net/wwan/mhi_wwan_mbim.c
>>>> +++ b/drivers/net/wwan/mhi_wwan_mbim.c
>>>> @@ -78,9 +78,12 @@ struct mhi_mbim_context {
>>>>
>>>> struct mbim_tx_hdr {
>>>> struct usb_cdc_ncm_nth16 nth16;
>>>> - struct usb_cdc_ncm_ndp16 ndp16;
>>>> - struct usb_cdc_ncm_dpe16 dpe16[2];
>>>> + __TRAILING_OVERLAP(struct usb_cdc_ncm_ndp16, ndp16, dpe16, __packed,
>>>> + struct usb_cdc_ncm_dpe16 dpe16[2];
>>>> + );
>>>> } __packed;
>>>> +static_assert(offsetof(struct mbim_tx_hdr, ndp16.dpe16) ==
>>>> + offsetof(struct mbim_tx_hdr, dpe16));
>>>>
>>>> static struct mhi_mbim_link *mhi_mbim_get_link_rcu(struct mhi_mbim_context *mbim,
>>>> unsigned int session)
>>> This patch won't introduce previous problem.
>>>
>>
>> Thanks for confirming this.
>>
>> I'll turn it into a proper patch.
>>
>> -Gustavo
> Hi,
> Are you planing to add this revert commit to your coming patch?
No. I think the revert should be applied by the maintainers, first.
Thanks
-Gustavo
> Actually it's urgent to revert this change since the release deadline of v6.19 is coming soon
> and all my MHI WWAN device have been impacted.
> I don't know why this commit has been tagged as "Not Applicable" and who did this.
>
> I hope we can fix it regression before the official v6.19 release.
>
> Thanks
At 2026-01-22 10:14:41, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>
>
>On 1/22/26 10:30, Slark Xiao wrote:
>>
>>
>> At 2026-01-20 17:28:42, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>>>
>>>
>>> On 1/20/26 18:16, Slark Xiao wrote:
>>>>
>>>>
>>>> At 2026-01-20 15:51:57, "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote:
>>>>> Hi Slark,
>>>>>
>>>>> On 1/20/26 16:20, Slark Xiao wrote:
>>>>>> This reverts commit eeecf5d3a3a484cedfa3f2f87e6d51a7390ed960.
>>>>>>
>>>>>> This change lead to MHI WWAN device can't connect to internet.
>>>>>> I found a netwrok issue with kernel 6.19-rc4, but network works
>>>>>> well with kernel 6.18-rc1. After checking, this commit is the
>>>>>> root cause.
>>>>>
>>>>> Thanks for the report.
>>>>>
>>>>> Could you please apply the following patch on top of this revert,
>>>>> and let us know if the problem still manifests? Thank you!
>>>>>
>>>>> diff --git a/drivers/net/wwan/mhi_wwan_mbim.c b/drivers/net/wwan/mhi_wwan_mbim.c
>>>>> index 1d7e3ad900c1..a271a72fed63 100644
>>>>> --- a/drivers/net/wwan/mhi_wwan_mbim.c
>>>>> +++ b/drivers/net/wwan/mhi_wwan_mbim.c
>>>>> @@ -78,9 +78,12 @@ struct mhi_mbim_context {
>>>>>
>>>>> struct mbim_tx_hdr {
>>>>> struct usb_cdc_ncm_nth16 nth16;
>>>>> - struct usb_cdc_ncm_ndp16 ndp16;
>>>>> - struct usb_cdc_ncm_dpe16 dpe16[2];
>>>>> + __TRAILING_OVERLAP(struct usb_cdc_ncm_ndp16, ndp16, dpe16, __packed,
>>>>> + struct usb_cdc_ncm_dpe16 dpe16[2];
>>>>> + );
>>>>> } __packed;
>>>>> +static_assert(offsetof(struct mbim_tx_hdr, ndp16.dpe16) ==
>>>>> + offsetof(struct mbim_tx_hdr, dpe16));
>>>>>
>>>>> static struct mhi_mbim_link *mhi_mbim_get_link_rcu(struct mhi_mbim_context *mbim,
>>>>> unsigned int session)
>>>> This patch won't introduce previous problem.
>>>>
>>>
>>> Thanks for confirming this.
>>>
>>> I'll turn it into a proper patch.
>>>
>>> -Gustavo
>> Hi,
>> Are you planing to add this revert commit to your coming patch?
>
>No. I think the revert should be applied by the maintainers, first.
>
>Thanks
>-Gustavo
>
Hi Loic,
Could you help check this commit status?
Thanks
>> Actually it's urgent to revert this change since the release deadline of v6.19 is coming soon
>> and all my MHI WWAN device have been impacted.
>> I don't know why this commit has been tagged as "Not Applicable" and who did this.
>>
>> I hope we can fix it regression before the official v6.19 release.
>>
>> Thanks
© 2016 - 2026 Red Hat, Inc.