2014-02-13 18:28:27

by Emil Goode

[permalink] [raw]
Subject: [PATCH Resend] net: asix: add missing flag to struct driver_info

The struct driver_info ax88178_info is assigned the function
asix_rx_fixup_common as it's rx_fixup callback. This means that
FLAG_MULTI_PACKET must be set as this function is cloning the
data and calling usbnet_skb_return. Not setting this flag leads
to usbnet_skb_return beeing called a second time from within
the rx_process function in the usbnet module.

Signed-off-by: Emil Goode <[email protected]>
Reported-by: Bjørn Mork <[email protected]>
---
drivers/net/usb/asix_devices.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c
index 9765a7d..5d19409 100644
--- a/drivers/net/usb/asix_devices.c
+++ b/drivers/net/usb/asix_devices.c
@@ -917,7 +917,8 @@ static const struct driver_info ax88178_info = {
.status = asix_status,
.link_reset = ax88178_link_reset,
.reset = ax88178_reset,
- .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR,
+ .flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR |
+ FLAG_MULTI_PACKET,
.rx_fixup = asix_rx_fixup_common,
.tx_fixup = asix_tx_fixup,
};
--
1.7.10.4


2014-02-14 20:48:57

by David Miller

[permalink] [raw]
Subject: Re: [PATCH Resend] net: asix: add missing flag to struct driver_info

From: Emil Goode <[email protected]>
Date: Thu, 13 Feb 2014 19:30:39 +0100

> The struct driver_info ax88178_info is assigned the function
> asix_rx_fixup_common as it's rx_fixup callback. This means that
> FLAG_MULTI_PACKET must be set as this function is cloning the
> data and calling usbnet_skb_return. Not setting this flag leads
> to usbnet_skb_return beeing called a second time from within
> the rx_process function in the usbnet module.
>
> Signed-off-by: Emil Goode <[email protected]>
> Reported-by: Bj?rn Mork <[email protected]>

Applied and queued up for -stable.

It would be great if there were some way to validate these
callback flags requirements and catch such errors.