I ran Smatch over the code and it spotted an off by one. On Wed, Sep 16, 2020 at 10:36:18PM +0100, Daniel Scally wrote: > +#define MAX_CONNECTED_DEVICES 4 > +#define SWNODE_SENSOR_HID 0 > +#define SWNODE_SENSOR_PORT 1 > +#define SWNODE_SENSOR_ENDPOINT 2 > +#define SWNODE_CIO2_PORT 3 > +#define SWNODE_CIO2_ENDPOINT 4 > +#define SWNODE_NULL_TERMINATOR 5 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +struct sensor { > + struct device *dev; > + struct software_node swnodes[5]; ^^^^^^^^^^ This needs to be 6 instead of 5 to prevent memory corruption. > + struct property_entry sensor_props[6]; > + struct property_entry cio2_props[3]; > + struct fwnode_handle *fwnode; > +}; > + nodes[SWNODE_NULL_TERMINATOR] = SOFTWARE_NODE_NULL; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Here. regards, dan carpenter