전달 된 문자 버퍼를 수정하는 시스템 호출을 정의하려고합니다. 구체적으로는 다음과 같습니다.copy_to_user를 올바르게 사용하려면?
...
asmlinkage int sys_mycall(char __user *buff, int len)
{
char tmp[1000];
copy_from_user(tmp, buff, len);
/* change tmp here */
copy_to_user(buff, &tmp, len);
}
여기서 copy_to_user는 -1을 반환하고 호출 프로그램의 버퍼는 변경되지 않습니다. 무슨 일이야?
다음 호출된다 할 것이다 사용자로 가장 먼저하는 일 I : 문자 버피 [2000]; sys_mycall (buf, 2000); 어떻게해야합니까? –
1000은 길이보다 엄격합니다. –
또한 실제 코드에는 오류 검사가 있습니다. –