lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 21 Jan 2019 18:06:20 +0000
From:   <Bryan.Whitehead@...rochip.com>
To:     <andrew@...n.ch>
CC:     <davem@...emloft.net>, <netdev@...r.kernel.org>,
        <UNGLinuxDriver@...rochip.com>
Subject: RE: [PATCH v1 net-next] lan743x: Provide Read/Write Access to on chip
 OTP

> On Fri, Jan 18, 2019 at 04:54:53PM -0500, Bryan Whitehead wrote:
> > The LAN743x includes on chip One-Time-Programmable (OTP) memory.
> >
> > This patch extends the ethtool EEPROM read/write interface to access
> > OTP memory space.
> >
> > This is done by adding the private flag OTP_ACCESS, which is used to
> > switch between EEPROM, and OTP modes.
> >
> > The private flag OTP_ACCESS is configurable through the
> >   ethtool --set-priv-flags command.
> > And visible through the
> >   ethtool --show-priv-flags command.
> 
> Hi Bryan
> 
> It would be good to explain what is wrong with the current code, which
> allows you to select between the OTP and the EEPROM at write time.

Hi Andrew,

The current code does not allow OTP read access. 
Plus the current code places unreasonable restrictions on OTP write operations.
Such as requiring offset == 0, length == 512, 
    and data[0] == 0xF3, which is the signature used to indicate the first OTP block is valid.
    However if the user wanted to use the second block, then data[0] should be 0xF7,
        And data should start at offset 513.
    Also if you want to permanently invalidate the OTP then data[0] should be 0xFF.
This patch allows the user the program OTP with any offset, length and data.
And read access is necessary to confirm what is currently in the OTP.

Would you like me to submit a new patch containing this information?

> > +static int lan743x_ethtool_set_priv_flags(struct net_device *netdev,
> > +u32 flags) {
> > +	struct lan743x_adapter *adapter = netdev_priv(netdev);
> > +
> > +	adapter->flags = flags;
> > +
> > +	return 0;
> > +}
> 
> Is the EEPROM mandatory? Could there be designs without an EEPROM?
> When setting the private flag here, should you probe to see if there actually
> is an EEPROM and return -ENODEV if it is missing.

EEPROM is not mandatory. If EEPROM is not attached or contains invalid data,
the lan743x will attempt to load configuration from on chip OTP memory.

To be honest, I'm not sure how to do a EEPROM probe with out doing a 
Write and read back test. And it is not recommended to do that due to limited
write cycles which cause EEPROM damage.

The current code does not do an EEPROM probe, so I don't see why the new
code should. And we assume that the user can diagnose EEPROM presence
using existing read/write operations.

Bryan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ