wilc1000: copy address before calling wilc_set_mac_address
wilc_set_mac_address() calls IO routines which don't guarantee the pointer won't be written to. Make a copy. Acked-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
54612b4a8b
commit
b09d58025e
|
@ -574,6 +574,7 @@ static int wilc_mac_open(struct net_device *ndev)
|
|||
struct wilc *wl = vif->wilc;
|
||||
int ret = 0;
|
||||
struct mgmt_frame_regs mgmt_regs = {};
|
||||
u8 addr[ETH_ALEN] __aligned(2);
|
||||
|
||||
if (!wl || !wl->dev) {
|
||||
netdev_err(ndev, "device not ready\n");
|
||||
|
@ -596,10 +597,9 @@ static int wilc_mac_open(struct net_device *ndev)
|
|||
vif->idx);
|
||||
|
||||
if (is_valid_ether_addr(ndev->dev_addr)) {
|
||||
wilc_set_mac_address(vif, ndev->dev_addr);
|
||||
ether_addr_copy(addr, ndev->dev_addr);
|
||||
wilc_set_mac_address(vif, addr);
|
||||
} else {
|
||||
u8 addr[ETH_ALEN];
|
||||
|
||||
wilc_get_mac_address(vif, addr);
|
||||
eth_hw_addr_set(ndev, addr);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue