valgrind сообщает об ошибках неинициализированной памяти из кода, подобного следующему:
unsigned char buf[100];
struct driver_command cmd;
cmd.len = sizeof(buf);
cmd.buf = buf;
ioctl(my_driver_fd, READ, &cmd);
for(i = 0; i < sizeof(buf); i++)
{
foo(buf[i]); /* <<--- uninit use error from valgrind */
}
Если я memset () buf до вызова драйвера, ошибка исчезнет.драйвер linux правильно пишет в буфер?(Я посмотрел на код драйвера, и он кажется правильным, но, возможно, я что-то упустил.)
Или он просто пропускает вызов драйвера и не может знать, что буфер былнаписано внутри ядра?
Спасибо.