Since it's forbidden to use a multicast address as ethernet address,
the driver should check the addresses before they got written.

Signed-off-by: Daniel Schultz <d.schu...@phytec.de>
---
 arch/arm/mach-imx/ocotp.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/mach-imx/ocotp.c b/arch/arm/mach-imx/ocotp.c
index 9efa46a..f8978c0 100644
--- a/arch/arm/mach-imx/ocotp.c
+++ b/arch/arm/mach-imx/ocotp.c
@@ -452,6 +452,12 @@ static int imx_ocotp_set_mac(unsigned int mac_no, struct 
param_d *param,
        for (i = 0; i < 6; i++)
                buf[5 - i + offset] = ocotp_priv->ethaddr[mac_no][i];
 
+       if (0x01 & buf[5 + offset]) {
+               dev_err(&ocotp_priv->dev,
+                       "this MAC address is a broadcast/multicast\n");
+               return -EINVAL;
+       }
+
        ret = regmap_bulk_write(ocotp_priv->map,
                                (mac_no == 0) ? MAC0_OFFSET : MAC1_OFFSET, buf,
                                MAC_BYTES);
-- 
1.9.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to