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

Reply via email to