mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 20:54:10 +08:00
aqc111: fix double endianness swap on BE
If you are using a function that does a swap in place, you cannot just reuse the buffer on the assumption that it has not been changed. Signed-off-by: Oliver Neukum <oneukum@suse.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
369b46e9fb
commit
2cf672709b
@ -1428,7 +1428,7 @@ static int aqc111_resume(struct usb_interface *intf)
|
|||||||
{
|
{
|
||||||
struct usbnet *dev = usb_get_intfdata(intf);
|
struct usbnet *dev = usb_get_intfdata(intf);
|
||||||
struct aqc111_data *aqc111_data = dev->driver_priv;
|
struct aqc111_data *aqc111_data = dev->driver_priv;
|
||||||
u16 reg16;
|
u16 reg16, oldreg16;
|
||||||
u8 reg8;
|
u8 reg8;
|
||||||
|
|
||||||
netif_carrier_off(dev->net);
|
netif_carrier_off(dev->net);
|
||||||
@ -1444,9 +1444,11 @@ static int aqc111_resume(struct usb_interface *intf)
|
|||||||
/* Configure RX control register => start operation */
|
/* Configure RX control register => start operation */
|
||||||
reg16 = aqc111_data->rxctl;
|
reg16 = aqc111_data->rxctl;
|
||||||
reg16 &= ~SFR_RX_CTL_START;
|
reg16 &= ~SFR_RX_CTL_START;
|
||||||
|
/* needs to be saved in case endianness is swapped */
|
||||||
|
oldreg16 = reg16;
|
||||||
aqc111_write16_cmd_nopm(dev, AQ_ACCESS_MAC, SFR_RX_CTL, 2, ®16);
|
aqc111_write16_cmd_nopm(dev, AQ_ACCESS_MAC, SFR_RX_CTL, 2, ®16);
|
||||||
|
|
||||||
reg16 |= SFR_RX_CTL_START;
|
reg16 = oldreg16 | SFR_RX_CTL_START;
|
||||||
aqc111_write16_cmd_nopm(dev, AQ_ACCESS_MAC, SFR_RX_CTL, 2, ®16);
|
aqc111_write16_cmd_nopm(dev, AQ_ACCESS_MAC, SFR_RX_CTL, 2, ®16);
|
||||||
|
|
||||||
aqc111_set_phy_speed(dev, aqc111_data->autoneg,
|
aqc111_set_phy_speed(dev, aqc111_data->autoneg,
|
||||||
|
Loading…
Reference in New Issue
Block a user