diff options
Diffstat (limited to 'drivers/net/usb/asix_common.c')
| -rw-r--r-- | drivers/net/usb/asix_common.c | 9 | 
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/usb/asix_common.c b/drivers/net/usb/asix_common.c index b39ee714fb01..e39f41efda3e 100644 --- a/drivers/net/usb/asix_common.c +++ b/drivers/net/usb/asix_common.c @@ -221,6 +221,7 @@ struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,  	int tailroom = skb_tailroom(skb);  	u32 packet_len;  	u32 padbytes = 0xffff0000; +	void *ptr;  	padlen = ((skb->len + 4) & (dev->maxpacket - 1)) ? 0 : 4; @@ -256,13 +257,11 @@ struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,  	}  	packet_len = ((skb->len ^ 0x0000ffff) << 16) + skb->len; -	skb_push(skb, 4); -	cpu_to_le32s(&packet_len); -	skb_copy_to_linear_data(skb, &packet_len, sizeof(packet_len)); +	ptr = skb_push(skb, 4); +	put_unaligned_le32(packet_len, ptr);  	if (padlen) { -		cpu_to_le32s(&padbytes); -		memcpy(skb_tail_pointer(skb), &padbytes, sizeof(padbytes)); +		put_unaligned_le32(padbytes, skb_tail_pointer(skb));  		skb_put(skb, sizeof(padbytes));  	}  |