Например, я выделил память для 4096 байт, используя vmalloc
, у меня есть счетчик, который отслеживает выделенную память, записываемую в контексте прерывания, что-то вроде:
if (data_to_read >= 4) {
readdata();
data_to_read -= 4;
} else if (data_to_read < 4) {
memcpy();
}
Каким-то образом счетчик испортился и обновил значение, чтобы прочитать оставшиеся байты, чтобы оно стало равным 1 (data_to_read), и ядро пытается записать память и вылетает. В этом случае есть ли способ проверить перед memcpy, является ли переданный адрес действительным или нет?