diff mbox series

[v2] net: usb: rtl8150: don't incorrectly assign random MAC addresses

Message ID 20201011173030.141582-1-anant.thazhemadam@gmail.com
State New
Headers show
Series [v2] net: usb: rtl8150: don't incorrectly assign random MAC addresses | expand

Commit Message

Anant Thazhemadam Oct. 11, 2020, 5:30 p.m. UTC
In set_ethernet_addr(), if get_registers() succeeds, the ethernet address
that was read must be copied over. Otherwise, a random ethernet address
must be assigned.

get_registers() returns 0 if successful, and negative error number
otherwise. However, in set_ethernet_addr(), this return value is
incorrectly checked.

Since this return value will never be equal to sizeof(node_id), a
random MAC address will always be generated and assigned to the
device; even in cases when get_registers() is successful.

Correctly modifying the condition that checks if get_registers() was
successful or not fixes this problem, and copies the ethernet address
appropriately.

Fixes: f45a4248ea4c ("net: usb: rtl8150: set random MAC address when set_ethernet_addr() fails")
Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
---
Changes in v2:
        * Fixed the format of the Fixes tag
        * Modified the commit message to better describe the issue being 
          fixed

+CCing Stephen and linux-next, since the commit fixed isn't in the networking
tree, but is present in linux-next.

 drivers/net/usb/rtl8150.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jakub Kicinski Oct. 11, 2020, 5:59 p.m. UTC | #1
On Sun, 11 Oct 2020 23:00:30 +0530 Anant Thazhemadam wrote:
> In set_ethernet_addr(), if get_registers() succeeds, the ethernet address

> that was read must be copied over. Otherwise, a random ethernet address

> must be assigned.

> 

> get_registers() returns 0 if successful, and negative error number

> otherwise. However, in set_ethernet_addr(), this return value is

> incorrectly checked.

> 

> Since this return value will never be equal to sizeof(node_id), a

> random MAC address will always be generated and assigned to the

> device; even in cases when get_registers() is successful.

> 

> Correctly modifying the condition that checks if get_registers() was

> successful or not fixes this problem, and copies the ethernet address

> appropriately.

> 

> Fixes: f45a4248ea4c ("net: usb: rtl8150: set random MAC address when set_ethernet_addr() fails")

> Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>


This patch is a fix to a conflict resolution in linux-next.

linux-next is not a "real" tree, it's an integration tree used to
figure out conflicts early.

We had let Stephen know about the problem already. Please wait one
week, and if the problem is still present resend this.

Thank you.
diff mbox series

Patch

diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
index f020401adf04..bf8a60533f3e 100644
--- a/drivers/net/usb/rtl8150.c
+++ b/drivers/net/usb/rtl8150.c
@@ -261,7 +261,7 @@  static void set_ethernet_addr(rtl8150_t *dev)
 
 	ret = get_registers(dev, IDR, sizeof(node_id), node_id);
 
-	if (ret == sizeof(node_id)) {
+	if (!ret) {
 		ether_addr_copy(dev->netdev->dev_addr, node_id);
 	} else {
 		eth_hw_addr_random(dev->netdev);