In source file “netos_spi.c”, function netos_spiioctl has the last parameter char* arg. There is a local parameter int_arg which is type int*. The int_arg is filled with the value of arg casted to int*. As the space reserved in memory was one byte space (for char) when reading the value as an integer you will get extra bytes from other variables. Worse, if you try to write to that address you can mess other variables.