Patchwork [Resend] net: asix: add missing flag to struct driver_info

login
register
mail settings
Submitter Emil Goode
Date Feb. 13, 2014, 6:30 p.m.
Message ID <1392316239-17335-1-git-send-email-emilgoode@gmail.com>
Download mbox | patch
Permalink /patch/320147/
State Accepted
Delegated to: David Miller
Headers show

Comments

Emil Goode - Feb. 13, 2014, 6:30 p.m.
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 <emilgoode@gmail.com>
Reported-by: Bjørn Mork <bjorn@mork.no>
---
 drivers/net/usb/asix_devices.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
David Miller - Feb. 14, 2014, 8:48 p.m.
From: Emil Goode <emilgoode@gmail.com>
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 <emilgoode@gmail.com>
> Reported-by: Bjørn Mork <bjorn@mork.no>

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.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

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,
 };