diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c
index 934b8bacfeeb..f41d23c5f5cb 100644
--- a/drivers/usb/gadget/u_ether.c
+++ b/drivers/usb/gadget/u_ether.c
@@ -1224,8 +1224,17 @@ int gether_setup_name(struct usb_gadget *g, u8 ethaddr[ETH_ALEN],
 		dev_warn(&g->dev,
 			"using random %s ethernet address\n", "self");
 #ifdef CONFIG_USB_ANDROID_SAMSUNG_COMPOSITE
+	if ((ethaddr[0] == 0x00) && (ethaddr[1] == 0x00) &&
+		(ethaddr[2] == 0x00) && (ethaddr[3] == 0x00) &&
+		(ethaddr[4] == 0x00) && (ethaddr[5] == 0x00)) {
+		printk(KERN_DEBUG "%s: no unique host MAC was set, generate random\n", __func__);
+		/* we can use random_ether_addr() from include/linux/etherdevice.h */
+		random_ether_addr(ethaddr);
+	} else {
+		printk(KERN_DEBUG "%s: set unique host mac\n", __func__);
+	}
 	memcpy(dev->host_mac, ethaddr, ETH_ALEN);
-	printk(KERN_DEBUG "usb: set unique host mac\n");
+
 #else
 	if (get_ether_addr(host_addr, dev->host_mac))
 		dev_warn(&g->dev,