verify_area() 대체 함수 access_ok()

verify_area() 함수는 사용자 메모리 영역의 유효성 검사에 사용되는 함수이다.
이 verify_area() 함수는 2.6.14로 커널 버전업을 하면서 사라졌다.

삭제되기 전 verify_area()는 다음과 같은 원형을 가졌었다.

static inline int verify_area(int type, const void __user * addr, unsigned long size)
{
      return access_ok(type,addr,size) ? 0 : -EFAULT;
}

보는바와 같이 내부적으로 access_ok() 함수를 호출하는데 현재엔 verify_area()함수 대신 그냥 access_ok()함수를 사용한다.

다만, 기존에 verify_area는 메모리 공간이 여유로우면 0을 리턴하였지만,

access()함수는 위에서 보는바와 같이 0이 아닌 값을 리턴한다. 따라서, 리턴값을 주의하여 사용하길 바란다.

기존에 verify_area()를 사용하여

err = verify_area();

if(err)
  return -1;

이런 형태로 사용하였다면,

if(!err)
  return -1;

같은 형태로 변경하여야 할 것이다.

Leave a Reply